Справочник
Лимиты
Лимиты защищают очередь от всплесков. Уровень растёт сам, с суммой пополнений.
| Уровень | Всего пополнено | Запуск видео, в минуту | Одновременно | Токенов в месяц |
|---|---|---|---|---|
| Старт | — | 10 | 2 | 10 000 |
| Уровень 1 | от 300 ₽ | 30 | 5 | 100 000 |
| Уровень 2 | от 10 000 ₽ | 60 | 10 | 500 000 |
| Уровень 3 | от 50 000 ₽ | 120 | 25 | 2 500 000 |
| Уровень 4 | от 250 000 ₽ | 300 | 60 | по договорённости |
- Тестовые ключи: 60 запусков в минуту и 5 видео одновременно.
- Остальные запросы, чтение и загрузка файлов: 600 в минуту на ключ.
- Цифры уровней предварительные, до запуска могут измениться.
Заголовки ответа
| Заголовок | Что значит |
|---|---|
X-RateLimit-Limit | Запросов в минуту для этого вида запросов |
X-RateLimit-Remaining | Сколько осталось в текущем окне |
X-RateLimit-Reset | Когда окно освободится, время Unix в секундах |
Retry-After | При 429: сколько секунд подождать |
Как повторять
На 429 ждите Retry-After, на 5xx — с растущей паузой. Для создания видео добавляйте Idempotency-Key, чтобы повтор не создал второй ролик.
import random, time, requests
def post_with_retry(url, headers, payload, attempts=5):
for attempt in range(attempts):
res = requests.post(url, headers=headers, json=payload)
if res.status_code != 429 and res.status_code < 500:
return res
retry_after = float(res.headers.get("Retry-After", 2 ** attempt))
time.sleep(retry_after + random.random())
return resСвой уровень и текущий расход смотрите на странице «Лимиты».