За год работы беру в среднем десяток интеграций между сайтами и сторонними сервисами: виджет СДЭК на Tilda, прием оплаты через T‑Bank на WooCommerce, telegram-бота на aiogram, который тянет данные из CRM. На созвоне с клиентом почти всегда всплывает вопрос, что такое API простыми словами, хотя человек пользуется им каждый день через банковское приложение, службу доставки или карты в браузере. API - это набор правил, по которым один сервис по заранее оговоренному контракту запрашивает данные у другого сервиса или передает ему данные, не заглядывая в его код и базу.
По теме статьи
Готовое решение
AI-чатбот для сайта на Claude - отвечает как ваш менеджер, работает 24/7
Подключу к вашему сайту чат-бота на Claude API. Бот отвечает на вопросы клиентов голосом вашего бренда, знает каталог и условия доставки, забирает лиды в CRM или Telegram.
от25 000 ₽
AI / Claude API
Искусственный интеллект для бизнеса
AI-чатбот на сайт с базой знаний, автообработка заявок, генерация контента, умный парсинг. Claude API, OpenAI, RAG.
от50 000 ₽
Что такое API простыми словами на примере из практики
Расшифровка звучит как «программный интерфейс приложения», но понятнее это объяснить через конкретный случай. Ставлю на сайт клиента виджет расчета доставки СДЭК: покупатель вводит город, и через секунду видит стоимость и сроки. Браузер сам не считает тарифы, у него нет доступа к базе СДЭК и к договорным условиям продавца. Вместо этого скрипт на странице отправляет запрос на мой сервер, сервер обращается к API СДЭК, получает готовый ответ и отдает его странице в нужном виде.
API работает как список правил игры между двумя программами: какие данные отправить, в каком формате, по какому адресу и что придет в ответ. Схема одинаковая что для расчета доставки, что для приема оплаты через эквайринг, что для отправки сообщения в Telegram.
Из чего состоит запрос к API: эндпоинты, методы и JSON
Любой запрос складывается из нескольких частей. Эндпоинт - это адрес, по которому сервис принимает обращения, например https://api.cdek.ru/v2/calculator/tariff. Метод указывает, что нужно сделать с этим адресом.
| Метод | Что делает | Пример из практики |
|---|---|---|
| GET | Забирает данные без изменений на сервере | Получить список пунктов выдачи СДЭК |
| POST | Создает новую сущность | Создать заказ на доставку или платеж в T‑Bank |
| PUT / PATCH | Обновляет существующую запись | Изменить статус заказа в CRM |
| DELETE | Удаляет запись | Отменить созданный заказ |
Запрос обычно сопровождают заголовки: Content-Type сообщает, что тело запроса в формате JSON, Authorization передает ключ доступа. Выглядит это так:
curl -X POST "https://api.cdek.ru/v2/calculator/tariff"
-H "Authorization: Bearer ВАШ_ТОКЕН"
-H "Content-Type: application/json"
-d '{"tariff_code": 136, "from_location": {"code": 44}, "to_location": {"code": 270}, "packages": [{"weight": 1000}]}'
У расчёта тарифа СДЭК метод только POST с телом запроса - GET здесь вернёт ошибку 405, для операций без изменений (например для списка пунктов выдачи) метод остаётся GET.
В ответ сервис возвращает код статуса и тело в JSON. 200 значит запрос прошел, 400 обычно говорит о том, что не хватает обязательного поля, 401 о неверном ключе, 404 о несуществующем адресе, 429 о превышении лимита запросов, 500 об ошибке на стороне самого сервиса.
{
"delivery_sum": 350,
"period_min": 2,
"period_max": 4
}
REST, вебхуки и другие способы обмена данными между сервисами
Большинство API, с которыми я работаю, построены по принципу REST: у каждого ресурса свой адрес, а действия с ним описываются стандартными HTTP-методами из таблицы выше. Это удобный и предсказуемый стиль, поэтому он стал стандартом де-факто для СДЭК, T‑Bank и почти всех CRM.
Есть и обратная схема - вебхук. Здесь не я обращаюсь к сервису, а сервис сам присылает POST-запрос на мой адрес при наступлении события. T‑Bank, например, шлет вебхук с итоговым статусом платежа, как только покупатель оплатил заказ на форме эквайринга. Это дешевле по нагрузке, чем опрашивать сервис каждые несколько секунд в цикле, и почти всегда быстрее по времени реакции.
| Признак | REST-запрос | Вебхук |
|---|---|---|
| Кто инициирует обращение | Ваш сервер | Внешний сервис |
| Когда происходит | По вашей команде, в любой момент | При наступлении события у сервиса |
| Типичный пример | Запрос тарифа доставки у СДЭК | Уведомление об оплате от T‑Bank |
Собирать несколько таких обменов в один сценарий удобно в n8n: вебхук от Tilda прилетает в воркфлоу, дальше нода проверяет данные заказа и отправляет уведомление менеджеру в Telegram или создает задачу в CRM. Код почти не нужен, узлы просто соединяют разные API между собой.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Ключи и токены: как API проверяет, кто обращается к серверу
Чтобы сервис не отвечал первому встречному, запросы подписывают ключом или токеном. Простой вариант - API-ключ в заголовке Authorization, более гибкий - OAuth-токен с ограниченным сроком жизни и набором прав.
Здесь есть частая ловушка именно на Tilda: если вписать секретный ключ прямо в zero-block скрипт, он окажется виден любому через просмотр исходного кода страницы. Ключ от эквайринга или от CRM в браузере светить нельзя, поэтому запрос уходит сначала на свой сервер, а уже он с ключом на борту стучится к нужному API. Обычно для такой схемы я делаю отдельный серверный бэкенд под интеграцию, который прячет ключ, логирует ошибки и переживает смену токена без правки скрипта на сайте.
Сервисы вроде СДЭК и T‑Bank также ограничивают число запросов в единицу времени. При превышении лимита приходит статус 429, и повторные попытки нужно делать с паузой, а не долбить API в цикле без задержки.
Примеры API в реальных интеграциях: СДЭК, T‑Bank, Tilda и n8n
- СДЭК: расчет стоимости и сроков доставки, получение списка пунктов выдачи, создание заказа и отслеживание трек-номера. Интеграцию такого виджета в Tilda я обычно закрываю за 3-5 дней.
- T‑Bank: создание платежа и редирект покупателя на форму оплаты, затем вебхук с итоговым статусом. Важный нюанс на практике - суммы передаются в копейках, а не в рублях, и это первое, что ломается при переносе кода с другого проекта.
- Tilda: собственный API есть, на api.tildacdn.info, но доступен он только на тарифе Business, ограничен лимитом 150 запросов в час и работает исключительно на чтение - отдает список проектов, список страниц и их html-код. Записать через него данные в сайт нельзя, поэтому рабочая логика живет в zero-block скриптах, которые через fetch дергают внешние сервисы, и вся история с ключами и обработкой ошибок ложится на прокси-сервер.
- aiogram-бот: работает через Telegram Bot API, либо через long polling с постоянным опросом сервера, либо через вебхук, который отдает сообщения сразу при поступлении.
- n8n: no-code оркестрация нескольких API одним сценарием без бэкенда под каждую связку сервисов.
Частые ошибки при подключении к чужому API
- Секретный ключ в клиентском JavaScript вместо серверного прокси.
- Запросы без учета лимита - сервис начинает отвечать 429 или временно блокирует IP.
- Обязательные поля запроса не сверены с документацией, из-за чего постоянно прилетает 400.
- Суммы и единицы измерения не приведены к формату сервиса, как в примере с копейками у T‑Bank.
- Повторные вебхуки от одного события обрабатываются как новые, и заказ задваивается в базе.
- Ответы сервиса нигде не логируются, поэтому разбор сбоя занимает часы вместо минут.
Подключение стороннего API к сайту у меня как разработчика начинается от 40 000 ₽ за комплексную интеграцию вроде CRM, эквайринга или СДЭК на готовой платформе, а отдельный бэкенд под API уровня Laravel - от 100 000 ₽. У других разработчиков и в студиях на рынке ценник за похожую задачу обычно колеблется от 30 000 до 150 000 ₽ в зависимости от того, насколько внятная документация у сервиса и сколько там нестандартных полей.
Частые вопросы
Чем API отличается от SDK
API - это контракт запросов и ответов, описанный в документации сервиса. SDK - готовый набор кода на конкретном языке программирования, который эти запросы уже оборачивает в удобные функции. SDK строится поверх API, а не заменяет его.
Нужно ли знать программирование, чтобы работать с API
Для разового теста через Postman или похожий инструмент программирование не обязательно. Для рабочей интеграции на сайте или в боте нужен код на сервере, который хранит ключ и обрабатывает ошибки, либо no-code инструмент вроде n8n, который берет часть этой работы на себя без написания скриптов.
Сколько стоит подключить API к сайту
Комплексная интеграция стороннего сервиса вроде СДЭК, T‑Bank или CRM в Tilda у меня начинается от 40 000 ₽, отдельный бэкенд под API уровня Laravel - от 100 000 ₽. На рынке у других разработчиков цена за похожую задачу обычно от 30 000 до 150 000 ₽ в зависимости от сложности документации сервиса.
Чем REST API отличается от обычного API
API - общее понятие любого программного интерфейса для обмена данными между программами. REST - конкретный архитектурный стиль построения такого интерфейса поверх HTTP, где у каждого ресурса свой адрес и стандартный набор методов. Кроме REST встречаются SOAP, GraphQL и gRPC, но на практике в связке с Tilda, СДЭК и T‑Bank чаще всего работаешь именно с REST.