Руководство разработчика
Руководство разработчика
Быстрый старт помогает выполнить один запрос. Здесь описано, что нужно учесть для надёжной работы приложения в рабочей среде.
Два типа вызовов
В BeatAPI есть два жизненных цикла запросов. Большинство ошибок интеграции связано с попыткой обрабатывать один как другой.
Текстовые вызовы синхронны: POST /v1/chat/completions, /v1/responses, /v1/messages или Gemini-совместимый метод возвращают результат. Остальные операции принимают работу и возвращают ID.
Жизненный цикл асинхронной задачи
- Отправьте запрос через
POST /v1/images/tasksлибоvideos,effects,video-analysis,music-video,ecommerce-video. Ответ201означает принятие, а не завершение. - Сохраните ID: запишите
data.idиdata.request_idдо запуска фоновой обработки. Если приложение упадёт между ответом и записью, останется оплаченная задача, которую вы не сможете найти. - Дождитесь завершения: проверяйте
GET /v1/tasks/{task_id}либо зарегистрируйте вебхук. - Прочитайте результат: при
succeededиспользуйтеdata.output.media; приfailedпроверьтеdata.error_codeи поля возврата средств.
Проверка статуса
У цикла опроса важны три свойства:
- Остановка по конечному состоянию, а не по предположению о прошедшем времени. Завершённая задача больше не меняется.
- Увеличение задержки со случайным разбросом. Соблюдайте
poll_after_secondsи распределяйте проверки параллельных задач по времени. Частые проверки не ускоряют выполнение задачи. - Обработка
429как ожидания, а не окончательного сбоя. СоблюдайтеRetry-After.
У Music Video есть промежуточные состояния, требующие решения, а не дальнейшего опроса: storyboard_ready и requires_action. Если считать их обычной обработкой, цикл не завершится. Все статусы и необходимые действия описаны в быстром старте.
Вебхуки вместо постоянного опроса
Зарегистрируйте обработчик через POST /v1/webhooks: BeatAPI отправит ему конечное состояние задачи. Это позволяет отказаться от основного цикла опроса, но требует доступного по HTTPS обработчика.
Проверяйте подпись по исходным байтам запроса до разбора JSON. Повторная сериализация меняет тело, и подпись не совпадёт. См. вебхуки.
Даже с вебхуками оставьте редкий контрольный опрос. Доставка может не состояться; если задача находится в processing гораздо дольше обычного для модели, проверьте её напрямую.
Ошибки
Каждая ошибка содержит стабильный error.code, английское message с причиной, retryable и request_id. Записывайте request_id: по нему поддержка найдёт конкретный вызов.
Поле retryable передаёт то же правило для конкретного кода, поэтому можно ориентироваться на него. BeatAPI не возвращает 502 или 504: такие ответы приходят с сетевого уровня, и повторяются как 503. Полный список приведён в разделе ошибок.
Ответ 500 при создании неоднозначен: задача могла быть создана, а могла и нет. Повтор вслепую может оплатить одну работу дважды. Передавайте Idempotency-Key при создании и используйте тот же ключ при повторе: BeatAPI вернёт исходную задачу вместо создания второй.
Лимиты
Действуют два отдельных ограничения с разными последствиями.
- Частота запросов: запросы в минуту на ключ. Превышение даёт
429сRetry-After. Лимит растёт с общей суммой пополнений; текущий и следующий уровни видны в панели управления и вGET /api/user/self.
GET /v1/usage возвращает оба показателя: concurrency.limit и concurrency.active.
Повторные попытки без лишних списаний
- Повторяйте
429и5xxс увеличением задержки. Любой5xxот BeatAPI — это500или503. Не повторяйте400,401,402,403,404и409: у нихretryable: false. - Используйте экспоненциальное увеличение задержки со случайным разбросом и верхним пределом.
- Передавайте
Idempotency-Keyпри каждом создании задачи, чтобы повтор запроса не приводил к двойной оплате. - Если после ошибки создания у вас уже есть ID, сначала проверьте статус, а не отправляйте задачу заново.
- Ограничьте общее число попыток. Бесконечные повторы постоянно неудачного запроса превращают сбой в источник расходов.
Контроль расходов
- Ограничивайте выход текстовых вызовов. Выходные токены дороже;
max_tokens— простой способ сократить лишний ответ. - Подбирайте модель под шаг. Для классификации и маршрутизации не нужна самая сильная модель.
- Учитывайте переменные тарифы. У GPT-5.6 и Grok тариф повышается после порога контекста. У двух моделей DeepSeek HC (high-cache) по будням с 09:00 до 12:00 и с 14:00 до 18:00 по Пекину и у Hunyuan
hy3действует повышенная цена в опубликованные пиковые часы. Обычные платные модели DeepSeek тарифицируются одинаково круглосуточно. Долгая сессия агента или обработка по расписанию может пересечь эти границы незаметно. Применённый тариф указан в данных об использовании для каждого ответа. - Отдельный ключ для каждого компонента. Поле
by_api_keyвGET /v1/usageразделит расходы без дополнительного учёта. - Учитывайте возвраты. Средства за неудачную задачу возвращаются. Если записывать только резервирование, ваши расходы не совпадут с фактическими.
Перед запуском в рабочей среде
- Используйте точный адрес
https://api.beatapi.io. - Храните постоянные ключи на сервере. Браузер получает краткоживущий Realtime
client_secret, а не API-ключ. - Сохраняйте
data.idиrequest_idдо фоновой обработки. - Используйте случайный разброс интервалов опроса; прекращайте опрос при завершении или ожидании действия.
- Проверяйте подписи вебхуков по исходным байтам.
- Записывайте резервы, итоговые списания, возвраты, ошибки и конечные URL результатов.
- Настройте уведомление о
402: эта ошибка останавливает все платные операции аккаунта одновременно.

