Base URL
Аутентификация
Получите API-ключ и начните отправлять запросы.
Пагинация
Постраничные и курсорные списки.
Лимиты запросов
Часовые и burst-лимиты на аккаунт, по уровням.
Аутентификация
Все запросы требуют заголовокX-API-Key. Создайте API-ключ в Studio Dashboard.
Коды ошибок и подробная настройка описаны на странице Аутентификация.
Лимиты запросов
Лимиты считаются на аккаунт (все API-ключи аккаунта делят одни счётчики), в скользящем окне, и зависят от типа запроса:
Оба окна действуют одновременно. Часовая квота — ограничение на длинном окне; минутный лимит — защита от всплесков поверх неё.
Заголовки ответа (в каждом ответе, успешном или с ошибкой)
Пример:
Когда лимит превышен
429 Too Many Requests со стандартным форматом ошибки и заголовком Retry-After (сколько секунд ждать):
X-RateLimit-Remaining после каждого вызова и замедляйтесь, когда значение становится низким, а не ждите 429.
Пагинация
API использует два стиля пагинации в зависимости от размера набора данных и сценария доступа.Постраничная (по умолчанию для заказов / кампаний)
Эндпоинты с ограниченными наборами результатов (cpl/orders, cpc/orders, revshare/campaigns и т. д.) используют постраничную пагинацию. Размер страницы по умолчанию 50, максимум 100. Для навигации передавайте ?page=N.
Курсорная (ленты большого объёма)
Эндпоинты над таблицами большого объёма (subscribers, transactions) используют курсорную пагинацию. Первый вызов возвращает первую страницу и токен next_cursor; передайте этот токен обратно как ?after=, чтобы продолжить.
has_next равен false (или next_cursor равен null), вы дошли до конца.
Почему на этих эндпоинтах курсор
- Стабильный порядок, даже когда между вызовами добавляются новые строки (постраничная пагинация сдвигалась бы).
- Нет счётчика
total: курсорные ленты оптимизированы под частичное чтение, а не под подсчёт строк. - O(1) на страницу независимо от того, как глубоко вы пролистали.
?sort=<field>_asc, чтобы идти от старых к новым. По умолчанию <field>_desc (сначала новые). Курсор привязан к направлению, для которого он выдан; чтобы сменить направление посреди пагинации, нужно начать заново.
Повторы и идемпотентность
Одновременные изменения
Некоторые эндпоинты записи выполняются последовательно в рамках аккаунта: второй запрос к тому же ресурсу, пока первый ещё выполняется, возвращает429 action_in_progress. Дождитесь завершения исходного запроса, затем вызовите соответствующий GET, чтобы увидеть результат. Не повторяйте вслепую, пока запрос ещё выполняется.
Можно безопасно повторять
НЕЛЬЗЯ повторять вслепую
400, 404, 409, 422, 426 детерминированы. Тот же запрос даст ту же ошибку. Разберитесь (прочитайте error и details), исправьте входные данные и только потом отправляйте снова.
Рекомендуемый back-off
Экспоненциальный, с ограничением: 1s, 2s, 4s, 8s, 16s, 30s. Если в ответе естьretry_after (тело) или Retry-After (заголовок), соблюдайте время ожидания, предложенное сервером, оно важнее локального back-off.
Пример: обработка 429
JavaScript
Формат ответа
Все ответы имеют единую структуру:Ответы на запись и эволюция схемы
Запись возвращает только id
Успешные ответыPOST / PUT / PATCH / DELETE содержат только id ресурса (и success: true), а не полную запись:
GET. Эндпоинты списков и деталей — единственный источник истины о формате ответа.
Два исключения:
- Эндпоинты загрузки изображений дополнительно возвращают
thumbnail_url(подписанный URL на 3 дня), чтобы только что сохранённое изображение можно было показать без дополнительного вызова. Оригиналы остаются за обычнымGET. - Одноразовые секреты (открытый API-ключ, возвращаемый при создании ключа, токены верификации) появляются в
dataтолько в этом единственном ответе и документированы как «показывается один раз и больше никогда».
Политика эволюции схемы
Мы можем добавлять поля в существующие ответы без уведомления. Потребители ОБЯЗАНЫ игнорировать неизвестные поля, а не падать на лишних.v1 ещё молод и может меняться без предупреждения, пока мы его исправляем и дорабатываем. Следите за этой документацией: если у вас что-то сломалось, сначала проверьте здесь.
На практике:
- Настройте парсер так, чтобы он допускал лишние поля, а не отклонял их.
- Входные данные проверяйте строго, к выходным относитесь гибко.