LegiScan API — документация
Публичный API анализа договоров: POST /api/edo/analyze и GET /api/edo/jobs/{id}. Доступен на бизнес-тарифах (пакеты анализов) и безлимите. Ключ создаётся в профиле.
Доступ и ключ
- Ключ показывается один раз при создании или ротации в профиле.
- Каждый успешный анализ списывает 1 кредит с бизнес-пакета владельца ключа (безлимит не списывает).
- Если кредиты закончились,
POST /api/edo/analyzeотвечает402с телом{ "error": "quota_required_payment" }. - Необязательный Callback URL можно сохранить у ключа: он используется, если в запросе нет
callback_url.
Авторизация
Передайте ключ одним из способов:
- заголовок
X-API-Key: <key> - заголовок
Authorization: Bearer <key>
OpenAPI
Машиночитаемая спецификация: /openapi.yaml
Синхронный анализ (JSON)
Тело: { "url": "..." } или { "text": "...", "fileName": "contract.txt" }. Сторона договора — query selectedParty.
curl -X POST 'https://legiscan.ru/api/edo/analyze' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: <your_key>' \
-d '{"url":"https://example.com/contract.pdf"}'Успех: HTTP 200, тело { "result": { ... } }.
Синхронный анализ (multipart, файл)
Одно из полей: file, url, text. Опционально selectedParty.
curl -X POST 'https://legiscan.ru/api/edo/analyze' \
-H 'X-API-Key: <your_key>' \
-F 'file=@/path/to/contract.pdf'Синхронный анализ (text/plain)
curl -X POST 'https://legiscan.ru/api/edo/analyze' \
-H 'Content-Type: text/plain' \
-H 'X-API-Key: <your_key>' \
--data-binary @/path/to/contract.txtАсинхронный анализ с коллбеком
Query async=true. Ответ HTTP 202: { "id": "...", "status": "queued" }. Задачи хранятся в памяти процесса: после перезапуска сервера статус по id пропадёт — для интеграций надёжнее синхронный режим или коллбек.
curl -X POST 'https://legiscan.ru/api/edo/analyze?async=true&callback_url=https://partner.example/callback' \
-H 'X-API-Key: <your_key>' \
-F 'file=@/path/to/contract.pdf'По завершении LegiScan делает POST JSON на callback_url (или URL из профиля ключа): { "id", "status", "result", "error" }. Если на сервере задан секрет, добавляется заголовок X-Signature — hex HMAC-SHA256 по сырому телу. Секрет выдаёт LegiScan, в кабинете он не настраивается.
Проверка статуса задания
Нужен тот же API-ключ, которым задача поставлена. Чужой или неизвестный id → 404.
curl -H 'X-API-Key: <your_key>' \
'https://legiscan.ru/api/edo/jobs/<id>'Ответ: { id, status, result?, error?, createdAt, updatedAt }. Статусы: queued, processing, succeeded, failed.
Формат результата
Поле result совпадает с веб-анализом. Основные поля:
parties— стороныcontractTypeLabel— тип договораsecurityScore— оценка 0–100summary— краткое резюмеrisks[]—type(high/medium/low),title,description,recommendation, цитатаgaps[],protectiveClauses[],lawChecks[]
Типы контента
multipart/form-data:file|url|text(одно из) и опциональноselectedPartyapplication/json:{ url | text, fileName? }text/plain: сырой текст договора
Ошибки и лимиты
- Минимальная длина извлечённого текста: 100 символов → 400
- Форматы файлов: PDF, DOCX, DOC, TXT, RTF. Иное → ошибка
unsupported_file_type - Транспортный лимит тела запроса: 50 МБ. Коммерческого лимита страниц у API нет: анализируется весь извлечённый текст
- 401
missing_api_key/invalid_api_key - 402
quota_required_payment— нет активных бизнес-кредитов - 415 — неподдерживаемый Content-Type
- 503
upstream_timeout— внешний AI-провайдер не ответил вовремя, повторите запрос
Интеграция Pyrus
Отдельная инструкция: /docs/pyrus