Для пользователей из материкового Китая: используйте
https://toapis.cn в качестве эндпоинта (Base URL). Замените https://toapis.com на https://toapis.cn во всех примерах этого документа.generation.completed и generation.failed; тест — endpoint.test. Доставка at-least-once: обрабатывайте повторный event ID идемпотентно.
В настройках Token задайте HTTPS URL, создайте 32-byte secret (показывается один раз), включите Webhook и отправьте тест. Без callback_url используется URL Token. Переопределение может менять только path/query при том же scheme/host/port. Без настройки: 400 webhook_not_configured.
task_type: image|video. Result соответствует публичному query API. Channel ID, upstream task ID/keys, credentials и PrivateData не передаются.
Успешные события для изображений могут содержать необязательное поле data.usage с подтверждёнными корректными данными токенов, в том числе вместе с tool_usage.web_search. События изображений и видео также могут содержать data.billing. При status: pending суммы отсутствуют; если безопасное публичное значение подтвердить нельзя, весь объект опускается. Контракт описан в разделе Цены и фактические списания. Наличие billing не задерживает доставку и не меняет правила повторных попыток.
event_id + "." + timestamp + "." + raw_request_body, HMAC-SHA256. Для первой доставки отклоняйте timestamp старше 5 минут. 24 часа после ротации принимайте новую или предыдущую подпись.
Python
Node.js
Go
2xx; 3xx не перенаправляются, 4xx/5xx повторяются, timeout 10 секунд. HTTPS, userinfo, fragment, недопустимый port, SSRF, DNS/IP и DNS rebinding проверяются при каждой доставке. Используйте query API как резерв и быстро сохраняйте временные result URL. Real-avatar, платежи и OAuth callback не меняются. Лимиты.