API для разработчиков

Проверка файлов на персональные данные, маскирование и управление API-ключами.

Аутентификация

СпособЗаголовокГде применяется
Access-токен (B2C)Authorization: Bearer <token>все методы ниже
B2B API-ключX-API-Key: <key>файловые эндпоинты /process-file*

Файловые эндпоинты дополнительно проверяют заголовок Origin (защита от кросс-доменных вызовов). Для server-to-server (CLI, бэкенд) заголовок Origin можно не отправлять — запрос разрешён.

Тест текста

Методы принимают application/json. Обработка текста доступна по токену или API-ключу, а без регистрации — 10 бесплатных проверок в день.

POST/analyze

Найти ПДн в тексте (без маскирования): список находок с категорией, позицией и уверенностью.

curl -X POST https://maskgate.ru/analyze \
  -H "Content-Type: application/json" \
  -d '{"text": "Карта 4111 1111 1111 1111"}'

Ответ: findings[], anon_quota (для анонима).

POST/process

Обработать текст по политике: замаскировать/удалить/пометить, вернуть обезличенный output_text.

curl -X POST https://maskgate.ru/process \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"text": "Карта 4111 1111 1111 1111", "session_id": "chat1", "use_vault": true}'

Ответ: output_text, blocked, findings[], applied.

POST/process-batch

Пакетная обработка массива строк за один запрос (Excel-надстройка, массовые сценарии): общий session_id на весь батч, единая политика.

curl -X POST https://maskgate.ru/process-batch \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"texts": ["Карта 4111 1111 1111 1111", "ИНН 7707083893"], "session_id": "excel1", "use_vault": true}'

Ответ: по каждой строке — output_text, findings[], blocked.

Тест файлов

Все методы принимают multipart/form-data: файлы передаются в поле files (можно несколько). Принимаются файлы .pdf, .docx, .xlsx, .txt, .csv, .png, .jpg, .jpeg, .tiff, .tif, .bmp; изображения распознаются локальным OCR.

POST/process-file

Проверка файлов на ПДн: извлечение текста → находки → стратегия политики (блокировать / удалить / замаскировать / пометить). В том же ответе сразу два артефакта для скачивания: download_url — обратимый маскированный документ (токены [VAULT:…], расшифровывается через /process-file/restore), и redacted_download_url — PDF без данных (только для PDF, необратимо).

curl -X POST https://maskgate.ru/process-file \
  -H "Authorization: Bearer $TOKEN" \
  -F "files=@report.docx" -F "files=@scan.pdf"

Ответ: files[] (по файлу: segments, findings, blocked, error, download_url, redacted_download_url, elapsed_ms), batch_blocked, batch_has_errors, charged_units, supported_formats, analysis_ms.

POST/process-file/download

Проверка + скачивание файла в исходном формате (устаревший способ — новый поток идёт через /process-file с download_url). Для .docx/.xlsx документ пересобирается в исходном формате; для .pdf ПДн затёрто (растеризовано); для текстовых форматов отдаётся маскированный текст. Результат — по capability-URL (download_url).

curl -X POST https://maskgate.ru/process-file/download \
  -H "Authorization: Bearer $TOKEN" \
  -F "files=@report.docx"

Ответ: files[] (по файлу: download_url, error; masked_content — только для текстовых форматов), charged_units.

POST/process-file/restore

Обратная операция: загружается замаскированный файл, [VAULT:...]-токены восстанавливаются в исходные значения (требует включённого обратимого маскирования).

curl -X POST https://maskgate.ru/process-file/restore \
  -H "Authorization: Bearer $TOKEN" \
  -F "files=@masked.txt"

Ответ: files[] (по файлу: restored_text, error), charged_units.

GET/download/{token}

Скачать ранее замаскированный файл. Авторизация не требуется — capability-URL со сроком жизни до 5 минут: артефакт живёт в памяти сервиса и не переживает перезапуск или деплой. Параметр ?redact=1 отдаёт необратимый PDF-вариант без данных.

curl -OJ https://maskgate.ru/download/report.docx

Восстановление токенов (обратимое маскирование)

POST/vault/restore

Заменить [VAULT:…]-токены в тексте на исходные значения (по session_id). Пары «токен–значение» хранятся зашифрованными до 30 суток и удаляются автоматически; расшифровать их можете только вы.

curl -X POST https://maskgate.ru/vault/restore \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"text": "карта [VAULT:…]", "session_id": "chat1"}'

Ответ: restored_text.

POST/vault/detokenize

Точечная детокенизация: заменить конкретные [VAULT:…]-токены из сессии на исходные значения.

curl -X POST https://maskgate.ru/vault/detokenize \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"text": "карта [VAULT:…]", "session_id": "chat1"}'
GET/vault/tokens/{session_id}

Список токенов активной сессии обратимого маскирования.

curl -H "Authorization: Bearer $TOKEN" https://maskgate.ru/vault/tokens/chat1
DELETE/vault/clear/{session_id}

Очистить хранилище сессии (исходные значения безвозвратно удаляются).

curl -X DELETE -H "Authorization: Bearer $TOKEN" https://maskgate.ru/vault/clear/chat1

Шлюз к нейросети (BYOK)

POST/proxy/chat

Прокси-запрос к внешней языковой модели: маскирует ПДн на входе, восстанавливает на выходе.

Ключ и эндпоинт модели — ваши. Серверного ключа у сервиса нет: llm_base_url, llm_api_key и llm_model обязательны в каждом запросе. Запрос идёт через шлюз сервиса: на входе ПДн заменяются токенами, и наружу — к вашему провайдеру — уходит только обезличенный текст. Ключ и эндпоинт сервис не сохраняет и не логирует; мы не платим за ваши вызовы. llm_base_url должен быть https:// и вести на публичный адрес (приватные и локальные отклоняются).

curl -X POST https://maskgate.ru/proxy/chat \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"message": "…", "session_id": "chat1",
       "llm_base_url": "https://api.ваш-провайдер.ru/v1",
       "llm_api_key": "sk-…",
       "llm_model": "имя-модели"}'

Стоимость — за запрос с баланса, по текущему тарифу: 1 ₽ за запрос по API-ключу, 1 ₽ через шлюз к нейросети (все цены и способы оплаты): мы берём за маскирование ingress/egress, а не за вызов модели.

API-ключи (self-service B2B)

Ключ хранится как хэш; открытый текст показывается ровно один раз при создании.

GET/auth/me/keys

Список ключей текущего пользователя (метаданные, хэш не возвращается).

curl -H "Authorization: Bearer $TOKEN" https://maskgate.ru/auth/me/keys
POST/auth/me/keys

Создать ключ. Тело — JSON {"name": "мой скрипт"} (необязательно, до 100 символов).

curl -X POST https://maskgate.ru/auth/me/keys \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"name": "мой скрипт"}'

Ответ: {"key": "mg_...", "id": 12, "name": "мой скрипт", "created_at": "..."}.

DELETE/auth/me/keys/{key_id}

Отозвать один из своих ключей.

curl -X DELETE https://maskgate.ru/auth/me/keys/12 \
  -H "Authorization: Bearer $TOKEN"

Коды ошибок

КодЗначение
401нет или невалидная авторизация
403раздел отключён администратором или чужой Origin
404ключ/файл не найден или истёк
413превышено количество файлов в батче
422невалидный запрос
429исчерпана квота/лимит запросов