Лимиты
Лимиты 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"] }
}