Обращение к API
Как обращаться к API
- Базовый адрес:
https://{{HUBTALK_FQDN}}— все пути ниже начинаются с/v1. Вместо{{HUBTALK_FQDN}}подставьте адрес, на котором работает ваш кабинет:app.hubtalk.kz— Казахстан,app.hubtalk.uz— Узбекистан. - Формат: JSON в запросе и в ответе. Время — секунды эпохи.
- Машиночитаемая схема:
GET https://{{HUBTALK_FQDN}}/openapi.json, интерактивный обозреватель —https://{{HUBTALK_FQDN}}/docs. Схема авторитетна для запросов; успешные ответы опубликованы там нетипизированными объектами, поэтому контракт ответов — таблицы на этой странице.
Аутентификация
Каждый запрос/v1 несёт ключ:
cfk_ + hex) выпускается в кабинете и показывается один раз (Ключ доступа); платформа хранит только SHA-256-хеш. Отозванный ключ перестаёт работать сразу — запись ключа перечитывается на каждом запросе. Ключ ограничен организацией, в которой выпущен: всё, что за этой границей, неотличимо от отсутствующего (404), а не 403.
Ни один эндпоинт этого справочника не требует привилегированного ключа.
Лимит на ключ. У каждого ключа скользящее окно 60 секунд по всем его запросам
/v1. Лимит задаётся ключу при создании и может быть изменён позже в кабинете без ротации секрета (действует со следующего запроса). Лимит 0 означает общий лимит платформы — это настройка развёртывания, 60 запросов в минуту, если оператор не поменял; оператор может и отключить лимит. Это один из четырёх источников 429.
Один конверт ошибки
Все ошибки/v1 выглядят одинаково:
error.code называет точную причину внутри типа и присутствует всегда: если более конкретная причина не зарегистрирована, code равен type. Новые коды со временем добавляются — незнакомый код разбирайте по type + status.
Два дополнительных поля приходят только на конкретных отказах по кампаниям и больше нигде: error.blockers на 409 launch_blocked и error.import на 422 calls_rejected / 422 calls_dnc_matched. Любая другая ошибка несёт ровно четыре поля выше.
Отказы проносят свои заголовки через конверт: Retry-After на 429 приходит всегда.
Лимиты и 429
429 приходит из четырёх независимых источников. Все несут error.type: "rate_limit_error" — различайте по error.code:
Лимиты группы по умолчанию — 10 одновременных звонков и 30 инициаций в минуту, если администратор не задал другие; для транка, используемого по гранту, действует меньшее из лимита группы и лимита гранта.
Карта запросов
Кампании
Загрузки номеров
Линии
Отдельные звонки