API:
как связать
системы
Как программы обмениваются данными, что спросить у разработчика и как убедиться, что заявки и заказы не теряются между системами.

Описать задачу.
Проверить результат.
Практическое руководство для владельцев сайтов и руководителей проектов: понятные примеры, ссылки на инструменты, разбор ошибок и чек-лист запуска.
Что такое API простыми словами
API — программный интерфейс: правила, по которым один программный компонент обращается к другому. В правилах описано, какие действия доступны, что нужно передать и какой ответ можно получить. Аббревиатура раскрывается как Application Programming Interface. Человек нажимает кнопку в приложении, а программа может вызвать API, чтобы выполнить нужное действие.
Представьте сайт с заявками на поставку оборудования. Посетитель заполняет форму. Сервер сайта проверяет данные и обращается к CRM: «Создай обращение с такими полями». CRM возвращает идентификатор записи или сообщение об ошибке. Менеджеру не приходится переносить каждую заявку вручную. Но этот обмен заработает только после настройки: наличие API у CRM ещё не означает, что сайт уже с ней связан.
API предоставляет возможности. Интеграция использует их для конкретного процесса: сопоставляет поля, передаёт данные, разбирает ответы и обрабатывает сбои. Плагин или готовый коннектор может выполнять эту работу, но его возможности тоже нужно сверять с задачей.
API бывают у библиотек, операционных систем, браузеров и внешних сервисов. Не каждый вызов API идёт через интернет. Например, браузер предоставляет программе интерфейс для работы с элементами страницы. В этой статье основной предмет — веб-API, через которые связывают сайт, CRM, учётную систему и другие сервисы. Различие браузерных и сторонних интерфейсов разобрано во введении MDN.
Как работает запрос к API
В обычном HTTP-обмене есть клиент — программа, которая обращается за данными или действием, — и сервер, который принимает запрос. Клиентом здесь может быть сервер вашего сайта, а не браузер посетителя. Одна система в разных ситуациях способна выступать в обеих ролях.
У запроса обычно есть адрес, метод, заголовки и, если требуется, тело с данными. Адрес конкретной операции называют конечной точкой, или endpoint. Метод помогает определить действие. Заголовки могут сообщать формат и сведения для доступа. Тело содержит передаваемый объект, например поля обращения. Набор обязательных элементов определяется документацией конкретного API.
| Элемент | Пример | Что уточнить |
|---|---|---|
| Адрес | https://api.example.com/leads | Рабочая или тестовая среда; нужная версия. |
| Метод | POST | Какую операцию описывает поставщик. |
| Заголовок | Content-Type: application/json | В каком формате передаётся тело. |
| Тело | Название обращения и его внешний идентификатор. | Имена, типы и обязательность полей. |
| Ответ | Идентификатор созданной записи. | Что считать завершённым результатом. |
Адрес example.com здесь условный: это схема для объяснения, а не команда для подключения вашей CRM. Даже одинаковая по смыслу операция в двух сервисах может иметь разные поля и правила.
Посмотрите настоящий ответ API без программирования
Для первого знакомства можно прочитать общедоступные сведения о демонстрационном репозитории GitHub. Этот пример ничего не создаёт и не изменяет. При подготовке материала запрос вернул успешный ответ. У сервиса есть ограничения частоты обращений, поэтому результат повторного запроса зависит и от текущих условий доступа.
- Откройте публичный адрес примера в браузере.
- Найдите поле
full_name: оно обозначает владельца и название репозитория. - Посмотрите
private: логическое значениеfalseозначает, что репозиторий не закрытый. - Сравните адрес API с
html_url: второй ведёт на обычную страницу для человека.
{
"name": "Hello-World",
"full_name": "octocat/Hello-World",
"private": false,
"html_url": "https://github.com/octocat/Hello-World"
}
Показан сокращённый фрагмент ответа, а не весь документ. Фигурные скобки, названия полей и значения — запись в формате JSON. Программа читает конкретные поля; оформление страницы ей не нужно. Порядок полей не стоит использовать как смысловой признак.
Как увидеть код ответа в Postman
В клиенте Postman откройте новый HTTP-запрос через Add, выберите GET, вставьте тот же URL и нажмите Send. В нижней области проверьте статус и тело ответа. Для этого публичного примера не добавляйте секреты своей компании. Кнопки и расположение панелей зависят от версии приложения.
Для последующей работы с GitHub изучите официальное руководство по REST API: там описаны методы, параметры, заголовки и доступ. Наш пример показывает только чтение открытого объекта. Он не подтверждает, что интеграция с вашей CRM или системой оплаты настроена.
REST, JSON, вебхук и SDK: что с чем сравнивать
Эти слова описывают разные части решения. JSON — формат данных. REST — архитектурный стиль. Вебхук — способ уведомить другую систему о событии. SDK — комплект средств для разработчика, который может упростить использование API. Их не нужно выбирать как взаимоисключающие альтернативы.
Веб-API может использовать HTTP и JSON, но не всякий такой интерфейс полностью следует принципам REST. Также встречаются SOAP, удалённые вызовы процедур и другие подходы. Для заказчика важнее наличие нужных операций, документации и поддержки, чем современное название технологии. Обзор вариантов есть в материале AWS об API.
Опрос по расписанию и уведомление о событии
При опросе интеграция регулярно спрашивает: «Что изменилось после предыдущей проверки?» При вебхуке источник сам отправляет уведомление на согласованный адрес: «Заказ изменился». Это уменьшает ожидание и число пустых запросов, но не отменяет обработку ошибок.
Вебхуки могут приходить повторно или в неожиданном порядке. Правила повторной доставки различаются у поставщиков. Нужны проверка подлинности уведомления, распознавание уже обработанных событий и сверка пропущенных изменений. Например, GitHub рекомендует HTTPS, секрет вебхука и контроль идентификаторов доставки; особенности описаны в его документации. Чужие сроки ответа нельзя автоматически переносить на другой сервис.
Для чего API нужен сайту и компании
Начинайте с конкретного ручного действия или потери данных. «Подключить все системы» не определяет результат проекта. Полезная формулировка: «Каждая подтверждённая заявка сайта появляется в нужной воронке CRM, имеет источник и ответственного; непереданные заявки видны в журнале».
| Задача | Что передаём | Как принимаем |
|---|---|---|
| Сайт → CRM | Обращение, контакт, источник, согласованные поля. | Проверяем запись и маршрут обработки, а не только сообщение «Отправлено». |
| Учётная система → каталог | Товары, цены, остатки. | Сверяем артикулы, единицы, доступность и время обновления. |
| Служба доставки → кабинет | Состояние отправления. | Проверяем соответствие заказа и статуса, обработку задержки ответа. |
| Источники данных → отчёт | Расходы, обращения, продажи. | Сверяем определения показателей, период и контрольные суммы. |
| AI-сервис → рабочий процесс | Разрешённые входные данные и результат обработки. | Проверяем качество результата, доступы и дальнейшие действия. |
Это варианты применения, а не обещание поддержки любого поля выбранным сервисом. У некоторых продуктов API доступен только на определённом тарифе или покрывает лишь часть возможностей интерфейса. Предварительное обследование входит в задачи внедрения CRM, разработки сайта и создания AI-агентов.
Что проверить в документации и задании
Попросите разработчика показать документацию нужной операции и небольшой проверочный сценарий. Документ с общей фразой «интеграция по API» оставляет слишком много вариантов трактовки. В задании полезно зафиксировать:
- Системы и объекты. Какая CRM, какая версия сайта, что считается заявкой, заказом или клиентом.
- Направление. Только сайт → CRM либо ещё обратное изменение статусов. Двусторонний обмен требует правил разрешения конфликтов.
- Источник истины. Где редактируется цена и какой системе верить при расхождении.
- Поля и справочники. Соответствие названий, обязательность, типы, допустимые значения, валюта и часовой пояс.
- Момент обмена. Сразу после события, по расписанию или вручную; допустимая задержка.
- Объём. Обычная нагрузка, пиковый поток и первоначальная выгрузка накопленных записей.
- Ошибки. Что повторяется автоматически, что попадает ответственному и как восстанавливается очередь.
- Эксплуатация. Владелец доступов, документации и поддержки после запуска.
Один товар — разные идентификаторы
В каталоге товар имеет номер 742, а в учётной системе — артикул P-104. Совпадение названия «Насос» не доказывает, что это один товар. В задании нужна таблица соответствия или устойчивый общий ключ. Иначе автоматизация может обновить цену соседней позиции.
Если артикул изменили, заранее определите: это новый товар или прежний с новым обозначением. Решение относится к бизнес-правилу; сам API его за компанию не примет.
При выдаче списков проверьте пагинацию — разбиение результата на страницы. Успешно получить первые 100 записей не значит выгрузить все 8 000. Для обмена изменениями нужны контрольные отметки и понятный способ повторить пропущенный промежуток. Конкретные параметры берутся из документации поставщика.
Что означают ошибки API
Код HTTP описывает результат запроса на уровне протокола. Сообщение в теле и журнал интеграции помогают понять причину. Ни один код сам по себе не доказывает, что бизнес-процесс завершён правильно. Основные значения приведены в справочнике HTTP MDN.
| Код | Смысл | Что проверить |
|---|---|---|
| 200 / 201 | Запрос успешен / ресурс создан. | Нужные значения и идентификатор результата. |
| 202 | Запрос принят, обработка ещё не завершена. | Как узнать окончательный результат. |
| 204 | Успешный ответ без тела. | Предусмотрен ли такой ответ документацией. |
| 400 / 422 | Некорректный запрос / проблема обработки его содержания. | Формат, обязательные поля и пояснение сервиса. |
| 401 / 403 | Нет подходящего подтверждения доступа / запрос запрещён. | Учётные данные, права и ограничения. |
| 404 | Ресурс не найден. | Путь, идентификатор, версию; некоторые сервисы так скрывают закрытые объекты. |
| 429 | Слишком много запросов. | Лимит и указания о времени повторения. |
| 5xx | Ошибка на стороне сервера. | Состояние сервиса и согласованный механизм повторов. |
Для обращения в поддержку сохраните время с часовым поясом, операцию, идентификатор запроса, код, обезличенный пример и ожидаемый результат. Не прикладывайте рабочий секрет доступа. Фраза «иногда не работает» без этих сведений затягивает поиск.
Отдельный случай — браузер блокирует чтение ответа из-за CORS. Это ограничение доступа между источниками, а не доказательство, что API недоступен всем клиентам. Способ подключения должен проверить разработчик. Отключение защиты браузера у посетителей не является исправлением интеграции.
Почему один успешный запрос ещё ничего не гарантирует
Рассмотрим учебный случай: CRM создала заявку, но ответ потерялся по дороге. Сайт видит тайм-аут и отправляет то же обращение ещё раз. Если интеграция не распознаёт повтор, у менеджера появляются две карточки. Тайм-аут означает отсутствие своевременного ответа у клиента, а не гарантированную отмену действия на сервере.
Для таких сценариев проектируют защиту от дублей: используют устойчивый внешний идентификатор, поддерживаемый сервисом ключ идемпотентности или другой согласованный механизм. Идемпотентность означает, что повтор одной и той же операции не даёт дополнительного эффекта сверх первого выполнения. Произвольное добавление заголовка с таким названием не заставит чужой API поддерживать это свойство.
- Повторы ограничены. Есть паузы, максимальное число попыток и отдельный путь для неустранимой ошибки.
- Очередь сохраняется. После перезапуска процесса непереданные события остаются видимыми и могут быть обработаны.
- Порядок учитывается. Старый статус не должен затирать более новое подтверждённое состояние.
- Есть сверка. Контрольное сравнение записей выявляет потери, которые не попали в обычный журнал ошибок.
- Есть ответственный. Уведомление о сбое приходит человеку, который знает порядок восстановления.
Надёжность проверяют управляемыми сценариями в тестовой среде. Искусственно создавать массовые ошибки на рабочем сайте ради демонстрации не нужно. Для длинной выгрузки отдельно проверяют продолжение после прерывания и отсутствие повторной обработки уже завершённой части.
Как обращаться с ключами и правами
Секретный ключ или токен — средство доступа, а не декоративная настройка. Его права должны соответствовать операции: чтению каталога не обязательно разрешать удаление заказов. Разделяйте рабочую и тестовую среды, документируйте владельца учётной записи и порядок замены доступа.
Серверные секреты не размещают в общедоступном JavaScript, HTML, скриншотах и репозиториях. Некоторые сервисы специально предоставляют публичные браузерные ключи; их используют только по правилам поставщика, с предусмотренными ограничениями. Нельзя считать любой ключ безопасным для публикации лишь потому, что он нужен сайту.
Наличие действующего токена не заменяет проверку прав на конкретный объект. Пользователь, который может видеть собственный заказ, не должен получать чужой по подставленному идентификатору. Ошибки такого контроля входят в перечень рисков OWASP API Security. При приёмке попросите проверить и разрешённые, и запрещённые сценарии с тестовыми учётными записями.
В журнале полезны идентификаторы и описание сбоя; полные контакты клиента и секреты часто не нужны. Согласуйте состав передаваемых данных, доступ к журналам и срок их хранения. Для интеграции с AI отдельно определите, какие сведения вообще разрешено отправлять выбранному поставщику.
Как принять интеграцию у разработчика
Попросите показать полный путь одного тестового объекта. Для заявки это форма, сохранение на сайте, передача, карточка CRM и назначение ответственного. Сверьте значения в конечной системе. Уведомление в браузере и строка HTTP 200 не заменяют этой проверки.
| Сценарий | Ожидаемый результат |
|---|---|
| Корректная заявка | Одна запись в нужной воронке, поля и источник совпадают. |
| Нет обязательного поля | Понятная ошибка; некорректная запись не выдана за успешную. |
| Повтор события | Поведение соответствует правилу дедупликации; нет случайного дубля. |
| CRM временно недоступна | Данные сохранены, повтор управляемый, ответственный видит сбой. |
| Не хватает прав | Ошибка доступа обнаружена и не скрыта от поддержки. |
| Восстановление после остановки | Очередь обработана, пропуски сверены, лишние записи не созданы. |
В акте проверки фиксируйте конкретные идентификаторы тестовых объектов, дату, результат и оставшиеся замечания. Числовые требования — допустимая задержка, объём и время восстановления — согласуют для проекта заранее. Универсального «API должно отвечать за одну секунду» для всех операций нет.
После демонстрации получите описание обмена, инструкции по запуску и восстановлению, доступ к журналам и порядок поддержки. Общий процесс передачи проекта разобран в руководстве по приёмке сайта. Для связки сайта и CRM дополнительно пригодится план внедрения CRM.
Что зафиксировать перед запуском
Частые вопросы об API
API — это отдельная программа?
API — интерфейс взаимодействия. Его реализует программа или сервис, но сам термин описывает доступные возможности и правила обращения к ним. Клиент, сервер и готовый коннектор — уже конкретные части реализации.
Если у двух сервисов есть API, они точно совместимы?
Нет. Нужно сравнить операции, поля, типы объектов, ограничения и бизнес-правила. Иногда требуется промежуточный компонент, преобразование данных или изменение процесса.
Можно ли обойтись без разработчика?
Для стандартного сценария может хватить готового коннектора. Проверьте его покрытие полей, дубли, ошибки и поддержку. Сложный двусторонний обмен или нестандартные правила обычно требуют разработки и тестирования.
API всегда платный?
Нет. Условия зависят от поставщика: доступ может входить в тариф, иметь отдельную стоимость или квоты. Помимо доступа учитывают настройку интеграции, инфраструктуру и сопровождение. Бесплатный интерфейс не означает бесплатный проект.
Вебхук гарантирует мгновенную доставку?
Нет. Это механизм уведомления, а конкретные сроки и гарантии определяет сервис. Возможны задержки и повторные события. Для важного процесса нужны контроль доставки и восстановление пропусков.
Почему после запуска интеграцию нужно поддерживать?
Меняются версии API, права, тарифы, справочники и процессы компании. Действующий обмен требует наблюдения, обновления зависимостей и проверки после изменений. Ответственность за это стоит согласовать до запуска.
СВЯЖЕМ САЙТ С
ВАШИМИ СИСТЕМАМИ
Разберём процесс и доступные API, согласуем поля, правила обмена и проверки. Подготовим интеграцию с понятной схемой контроля и поддержки.