02 / Документация API

Сначала очистить.
Потом передать.

Два защищённых метода. Ключ processor создаётся владельцем в консоли и передаётся в Authorization: Bearer. Примеры содержат только заглушку PLACEHOLDER_API_KEY.

POST /api/v1/process

text — строка до 30 000 символов. reversible — строго boolean, по умолчанию false. Иные поля запрещены: политики, словарь, scope и модель задаёт сервер.

curl https://sx-i.ru/api/v1/process \
  -H 'Authorization: Bearer PLACEHOLDER_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"text":"Почта: ivan@example.invalid", "reversible":true}'

Упрощённая схема ответа (не буквальный JSON):

request_id: string
action: allow | redact | deny
text: string | null
entities: [{type, start, end, action}]
counts: {TYPE: number}
restore_id: string | null
expires_in: number | null
elapsed_ms: number

entities содержит типы и символьные позиции, но не исходные значения. При deny текст и restore_id равны null. Даже при reversible=true карта появляется только при наличии замен.

POST /api/v1/restore

curl https://sx-i.ru/api/v1/restore \
  -H 'Authorization: Bearer PLACEHOLDER_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"restore_id":"ID_FROM_PROCESS", "text":"TEXT_FROM_PROCESS"}'

Подставьте restore_id и text из ответа process. Ответ: {"text": "…"}. Восстанавливаются только точные токены; карта привязана к тому же ключу или сессии владельца. Чужой или истёкший идентификатор возвращает 404.

Ошибки и лимиты

Основные HTTP-коды; тело ошибки: {"error": "код"}
HTTPСитуация
400invalid_host — недопустимый Host
401authentication_required / invalid_key — нет доступа
403owner_required / invalid_origin / invalid_csrf / ambiguous_authentication
404restore_not_found
408request_timeout — превышено время чтения тела
413body_too_large — тело больше 128 КиБ
422invalid_request — неверные поля, длина или формат
429busy / rate_limited / capacity_exceeded — занято или исчерпан бюджет
503model_unavailable — модель недоступна; текст не выдаётся
500internal_error — без исходного текста и traceback

Обработка и восстановление: 30 запросов на IP и 120 суммарно в минуту. Общий вход: 180 на IP и 1200 суммарно в минуту. Одна обработка текста (process, restore, демо) и отдельно одна проверка пароля одновременно, обе без очереди. За прокси учитывается реальный сетевой сосед, не произвольный X-Forwarded-For. Лимиты — ограничения реализации, не обещание SLA.

Готовность и доступ

GET /healthz — {"status":"ok"}; GET /readyz — {"ready":boolean}, 503 при недоступности модели. Вход владельца использует защищённую cookie и CSRF; ключ processor не даёт доступа к админке. Не смешивайте cookie и Bearer.

API не перехватывает сетевой трафик и не отправляет результат в ИИ самостоятельно. OCR и вложения не входят в эту версию.

Прочитать о границах безопасности ↗