Лимиты
Лимиты запросов и данных: заголовки RateLimit-*, Retry-After, ограничения на размер файла, страниц и полей схемы.
Заголовки RateLimit-* и Retry-After
Ответы вызовов, защищённых лимитом (это практически все вызовы с ключом API или сессией), несут заголовки лимита:
RateLimit-Limit— предел запросов в окне;RateLimit-Remaining— сколько запросов в нём осталось;RateLimit-Reset— через сколько секунд окно обнулится.
В обычном ответе это минутное окно лимита на ключ или пользователя (RateLimit-Limit: 3000). В
ответе 429 заголовки описывают тот лимит, который отказал: например, RateLimit-Limit: 50,
RateLimit-Remaining: 0, RateLimit-Reset: 1, если исчерпана секунда.
Заголовков может не быть — это не ошибка, а запасной режим: если ограничитель на стороне Typizer временно недоступен, часть маршрутов настроена пропускать запросы без подсчёта (fail open), вместо того чтобы отказывать всем подряд.
При превышении лимита ответ — 429 rate_limited с этими заголовками и дополнительно
Retry-After — сколько секунд подождать перед следующей попыткой. Дождитесь именно этого времени:
повтор раньше не ускорит обработку, а продлит ожидание другим вашим запросам.
Лимит на ключ API и пользователя
Каждый вызов /v1/* и /mcp с ключом API или сессией ограничен одинаково для всех организаций —
платных и бесплатных:
| Кто | Лимит |
|---|---|
| Ключ API (у каждого ключа свой) | 50 запросов в секунду, 3000 в минуту |
| Пользователь в Кабинете (один лимит во всех его организациях) | 50 запросов в секунду, 3000 в минуту |
| Организация — все её ключи и пользователи вместе | 150 запросов в секунду, 9000 в минуту |
Несколько ваших серверов с одним ключом делят один лимит ключа. Отдельные ключи для разных служб дают каждой свой лимит, но вместе они не превысят лимит организации. У организации может быть не больше 20 активных ключей API.
Лимиты на создание
Сверх общего лимита у дорогих операций — свои, на ключ API или пользователя (считаются отдельно от общего):
| Операция | Лимит |
|---|---|
Новые прогоны: POST /v1/typizers/{id}/runs, POST /v1/extract, POST /v1/runs/{id}/retry и инструмент MCP extract — вместе | 20 в секунду |
Пакеты: POST /v1/batches | 2 в секунду, 60 в минуту |
Загрузка файлов: POST /v1/files | 20 в секунду |
Много документов разом — отправляйте пакетом («Пакетная обработка»), а не отдельными прогонами. Кроме того, на организацию одновременно идут не больше 2 загрузок и 2 выгрузок, а тесты и повторы вебхуков — не больше 20 в минуту.
Общий лимит на IP-адрес
Все вызовы /v1 и /mcp с одного IP-адреса — с любыми ключами, сессиями и без них — вместе не
больше 6000 в минуту. Это страховка от флуда; обычный офис или сеть мобильного оператора за одним
адресом до неё не доходит. При превышении — 429 с RateLimit-Limit: 6000; в обычных ответах
заголовков этого лимита нет.
Лимиты по IP-адресу на отдельных публичных маршрутах
У маршрутов, не требующих ключа API (вход в кабинет, согласия, демо-режим без входа, статус сервиса, сам документ OpenAPI), — свой собственный лимит по адресу:
| Маршрут | Лимит по IP |
|---|---|
Начало входа (POST /v1/auth/start) | 20 в час (и не больше 5 писем в час на один адрес почты) |
POST /auth/* (вход, выход и другие операции аккаунта через Better Auth, сверх её собственного ограничителя) | 30 в минуту |
| Неудачные попытки авторизации (любой маршрут) | 60 в минуту |
Согласия (POST /v1/consents) | 120 в минуту |
GET /v1/status | 600 в минуту |
GET /v1/openapi.json | 600 в минуту |
POST /v1/demo/runs (демо-режим без входа) | 30 запросов в минуту, не больше 3 прогонов в сутки по московскому времени |
GET /v1/demo/runs/{id} (опрос демо-прогона) | 300 в минуту |
429 без заголовков API
При очень большом потоке запросов край сети Typizer может ответить 429 сам, ещё до API: простым
текстом, без RateLimit-* и без тела application/problem+json, с Retry-After: 1. Обрабатывайте
его так же — подождите Retry-After и повторите. В браузере такой ответ приходит без заголовков
CORS и выглядит как сетевая ошибка: безопасные запросы (GET, POST с Idempotency-Key) после
короткой паузы можно повторить.
Размер файла, число страниц и число полей схемы
- Один файл — не больше 50 МБ (
MAX_FILE_BYTES). Больший файл —413 file_too_largeещё до начала обработки; - документ — не больше 200 страниц (
MAX_PAGES) за один прогон. Больше —too_many_pages; разбейте документ на части, см. «Большие файлы»; - схема — не больше 200 полей (
MAX_SCHEMA_FIELDS), считая каждое использование$refотдельно. Больше —invalid_schema; подробнее о допустимом подмножестве JSON Schema — «Поддерживаемый JSON Schema».
Что дальше
- «Обработка ошибок и повторов» — что делать с
rate_limitedи другими кодами. - «Большие файлы» — передача документов без предварительной подписанной ссылки.