Лимиты

.md

Лимиты API СОЮЗ — частота запросов 1000/мин на ключ (повышается по запросу), размеры и форматы загружаемых картинок, длина промптов, лимиты тела запроса.

Частота запросов

1000 запросов в минуту на API-ключ по умолчанию (token bucket: короткие всплески допускаются, средняя — 1000/мин). Сейчас он применяется только к трём тяжёлым маршрутам: POST /v1/images/generations, POST /v1/videos/generations и POST /v1/chat/completions; jobs/credits/webhooks этим limiter ещё не покрыты (RSA-20). Лимит индивидуален на каждый ключ: текущее значение видно в дашборде и в GET /v1/credits (rate_limit.requests_per_minute).

При превышении — 429 rate_limited с заголовком Retry-After (секунды до следующей попытки):

HTTP 429
Retry-After: 2
{ "error": { "code": "rate_limited", "message": "too many requests" } }

Нужно больше — напиши нам, поднимем под твою нагрузку (для интеграций поднимаем до тысяч запросов в минуту).

Загружаемые картинки (референсы и vision)

Принимаем PNG, JPEG, WEBP. Сервер проверяет фактический MIME, dimensions/pixels/frames и сам конвертирует файл в формат провайдера. HEIC временно fail-closed до появления декодера с доказанным ограничением пикселей до распаковки.

Что Картиночные модели Видео-модели
Макс. размер файла до 50 МБ* до 10 МБ
Промпт до 32 000 символов* до 5 000 символов
Кол-во референсов до 14; конкретная модель может ограничивать сильнее по модели (обычно 1–2)

* — точные значения зависят от модели. На первом внутреннем профиле они передаются продукту вместе с сертифицированным allow-list; /v1/models до общего gate выключен.

GIF и SVG не принимаются.

JSON-тело POST /v1/images/generations и POST /v1/videos/generations — не более 25 MiB по фактически прочитанным байтам: правило действует и без Content-Length, и для chunked body. Base64 в data URL считается целиком, поэтому для больших файлов используй HTTPS URL; тогда байты самого файла проверяются отдельными лимитами таблицы выше. Тело нужно передать за 30 секунд; bounded-очередь при перегрузке отвечает 503 + Retry-After: 1, не создавая джобу.

Чат

  • Для чата проверяется объявленный Content-Length до 25 МБ (vision-картинки едут внутри JSON как data URL). Chunked/отсутствующий или неверный заголовок пока обходит hard limit; bounded body reader — RSA-27, поэтому это не полноценная security-граница.
  • Контекст и максимум токенов — по выбранной модели.

Джобы

  • Provider-processing deadline — 15 минут для картинок и 90 минут для видео. Затем джоба переходит во внутренний разбор неоднозначного результата (публично in_progress); примерно через 10 минут начинается сверка. Это не таймер refund: failed + возврат возможны только по доказанному отсутствию работы, а pending/unresolved остаётся in_progress с удержанным резервом и видимым оператору backlog. Границы денег — в Кредитах.
  • Если апстрим-провайдер не отвечает, СОЮЗ сам переключается на резервного: модель, цена и формат ответа не меняются. Оговорка: строгой проверки, что резервный вариант поддерживает все переданные продвинутые параметры, сейчас нет — см. Принципы.
  • Retention не подтверждён: не гарантированы ни минимальная доступность, ни срок фактического удаления — скачивай сразу после completed, но не считай пропавшую ссылку доказательством удаления. Сначала возьми свежую через GET /v1/jobs/{id}, потом повтори с паузой. Только структурированный 410 file_expired (R2 через прокси) сейчас подтверждает отсутствие. Локальный 404 not_found объединяет отсутствие с любой ошибкой чтения, а непрозрачные 403/404 файлового хоста могут быть правами, конфигурацией или временным сбоем — порядок действий, исправление в RSA-92.

Проверить лимиты модели

# /v1/models пока выключен на внутреннем ProductionGo-профиле
{
  "id": "souz/kling-3",
  "modality": "video",
  "limits": { "max_prompt_chars": 5000, "max_image_mb": 10, "image_formats": ["png", "jpeg", "webp"] }
}