Загружайте документы качества из своей программы, получайте распознанные поля, скачивайте сертификаты из общей библиотеки. Один тариф — 3 000 ₽ в месяц без лимитов на запросы и хранение (fair use — 1 000 распознаваний в месяц). На время беты — бесплатно.
Базовый адрес: https://lk.alldocs.pro/v1. Формат — JSON, кодировка UTF-8, даты YYYY-MM-DD, время ISO 8601.
Ключ создаётся в кабинете: Профиль → API → Создать ключ. Передавайте его в заголовке:
curl https://lk.alldocs.pro/v1/me \
-H "Authorization: Bearer ad_live_0123456789abcdef0123456789abcdef"
{
"user": { "id": "…", "email": "you@company.ru", "name": "…", "company": "…" },
"key": { "name": "1С склад", "prefix": "01234567", "webhook_url": null, "default_visibility": "private" },
"plan": "api-beta",
"usage": { "month": "2026-09", "uploads": 12, "recognitions": 12, "downloads": 3, "fair_use_recognitions": 1000 }
}
Ключ действует от имени владельца: видимость, кредиты и правила библиотеки те же, что в кабинете. Ключ можно отозвать в любой момент; полный ключ показывается один раз при создании.
id — ваш документ (копия файла у вас), file_id — общий файл в библиотеке (один и тот же PDF у всех пользователей хранится и распознаётся один раз).
{
"id": "58912132-…", // ваш документ
"file_id": "09b277b2-…", // общий файл (SHA-256-дедупликация)
"external_id": "1c:00012345", // ваш идентификатор, если передавали
"file_name": "Сертификат КНАУФ.pdf",
"visibility": "private", // public | friends | private
"status": "done", // queued | done | error
"verify_status": "plausible", // verified | plausible | suspicious | rejected
"verify_note": null,
"confidence": 0.95,
"fields": {
"doc_type": "Сертификат соответствия",
"doc_number": "РОСС RU.СГ64.Н01380",
"doc_date": "2022-12-16",
"valid_until": "2025-12-15",
"material": "Профили прессованные из алюминиевых сплавов …",
"material_short": "Профили алюминиевые",
"manufacturer": "ООО «ЛПЗ «Сегал»",
"supplier": null
},
"file": { "size": 506998, "mime": "application/pdf", "ext": "pdf", "pages": 1, "sha256": "…" },
"owners_count": 3, "downloads_count": 7,
"created_at": "2026-09-14T04:44:49.087Z",
"links": { "self": "https://lk.alldocs.pro/v1/documents/58912132-…", "file": "https://lk.alldocs.pro/v1/documents/58912132-…/file" }
}
/v1/documentsЗагрузить файл (multipart/form-data). PDF, JPG, PNG, TIFF, WEBP до 50 МБ. Сшитый PDF из нескольких документов режется на отдельные автоматически.
file | файл, обязателен |
visibility | public | friends (только друзьям владельца) | private; по умолчанию — настройка ключа |
external_id | ваш идентификатор (до 120 символов). Повторная загрузка с тем же external_id вернёт существующий документ (200), а не создаст новый |
fields | JSON-строка с готовыми полями: doc_type, doc_number, doc_date, valid_until, material, material_short, manufacturer, supplier |
recognize | false — не распознавать, записать fields как есть (только вместе с fields). Иначе файл распознаётся, а fields сохраняются как ваши правки |
file_name | имя файла в кабинете, если отличается от имени в форме |
curl -X POST https://lk.alldocs.pro/v1/documents \
-H "Authorization: Bearer ad_live_…" \
-F "file=@sert-knauf.pdf" \
-F "visibility=public" \
-F "external_id=1c:00012345"
Ответ 201 с status: "queued" — распознавание занимает 3–15 секунд. Готовность узнаёте по webhook или опросом GET /v1/documents/{id}. Если такой файл уже есть в библиотеке — 200, dedup: true, поля готовы сразу.
/v1/documentsВаши документы, новые первыми.
limit, offset | страница, по умолчанию 100, максимум 200 |
status | queued | done | error |
q | поиск по номеру, материалу, изготовителю, имени файла |
external_id | точное совпадение |
visibility | public | friends | private |
since | созданные не раньше даты/времени (ISO 8601) |
{ "items": [ { …документ… } ], "total": 1319, "limit": 100, "offset": 0 }/v1/documents/{id}Карточка документа.
/v1/documents/{id}Правка: fields (объект), visibility, note, external_id. Если файл есть только у вас — правки становятся каноническими; иначе сохраняются в вашей копии.
curl -X PATCH https://lk.alldocs.pro/v1/documents/58912132-… \
-H "Authorization: Bearer ad_live_…" -H "Content-Type: application/json" \
-d '{ "fields": { "valid_until": "2027-01-01" }, "visibility": "public" }'/v1/documents/{id}Удалить документ у себя. Файл остаётся в библиотеке, пока есть другие владельцы.
/v1/documents/{id}/reparseРаспознать заново (считается в fair use).
/v1/documents/{id}/fileСсылка на скачивание (действует 15 минут). ?inline=1 — для просмотра в браузере, ?redirect=1 — сразу 302 на файл, ?num=7 — номер в имени файла для комплекта ИД.
{ "url": "https://alldocs-files.storage.yandexcloud.net/…", "expires_in": 900,
"file_name": "СС Профили алюминиевые РОСС RU.СГ64.Н01380 16.12.2022.pdf", "mime": "application/pdf", "size": 506998 }Общие публичные документы всех участников — то, ради чего всё затевалось: сертификат на типовой материал, скорее всего, уже загрузил кто-то другой.
/v1/searchПоиск по библиотеке (публичные документы + ваши).
q | поиск по смыслу: «каменная вата технониколь», номер, изготовитель |
doc_type | точный тип: «Сертификат соответствия», «Паспорт качества», … |
manufacturer, material_short | точное совпадение без учёта регистра |
material | вхождение в полное или краткое наименование |
valid | 1 — только действующие (срок не истёк или не указан) |
limit, offset | страница |
curl "https://lk.alldocs.pro/v1/search?q=каменная+вата&doc_type=Сертификат+соответствия&valid=1" \
-H "Authorization: Bearer ad_live_…"{ "items": [ { "file_id": "…", "fields": { … }, "verify_status": "plausible", "owners_count": 12, "is_mine": false,
"links": { "self": "https://lk.alldocs.pro/v1/files/…", "file": "https://lk.alldocs.pro/v1/files/…/file" } } ], "total": 41, "limit": 100, "offset": 0 }/v1/files/{file_id}Карточка библиотечного файла.
/v1/files/{file_id}/fileСсылка на скачивание библиотечного файла (те же параметры, что у документа). Скачивание чужого публичного файла засчитывается загрузившему.
/v1/files/{file_id}/addДобавить библиотечный файл к себе без загрузки: { "visibility": "private" }. Возвращает ваш документ.
/v1/typesТипы документов с количеством — для фильтров.
В кабинете задайте для ключа Webhook URL (только https) — вы получите секрет для проверки подписи. Мы шлём POST с JSON при событиях:
document.recognized | распознавание завершено (или файл уже был в библиотеке / загружен с recognize=false) — в теле полный объект документа |
document.failed | распознавание не удалось, status: "error", parse_error |
POST https://your.app/alldocs-hook
Content-Type: application/json
X-AllDocs-Event: document.recognized
X-AllDocs-Delivery: 1042
X-AllDocs-Signature: sha256=5f1c…
{ "event": "document.recognized", "created_at": "2026-09-14T04:45:00Z", "document": { …документ… } }
Ответьте любым кодом 2xx в течение 10 секунд. Иначе повторим через 1 мин, 5 мин, 30 мин, 2 ч и 12 ч; после пяти неудач доставка помечается как failed (видно в кабинете и в GET /v1/webhooks/deliveries).
Проверка подписи — HMAC-SHA256 от сырого тела запроса:
// Node.js
const crypto = require('crypto');
const expected = 'sha256=' + crypto.createHmac('sha256', SECRET).update(rawBody).digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers['x-alldocs-signature'] || ''));
# Python
import hmac, hashlib
expected = 'sha256=' + hmac.new(SECRET.encode(), raw_body, hashlib.sha256).hexdigest()
ok = hmac.compare_digest(expected, request.headers.get('X-AllDocs-Signature', ''))
300 запросов/мин | на ключ; при превышении — 429 rate_limited, заголовки RateLimit-* |
60 загрузок/мин | на ключ |
1 000 распознаваний/мес | fair use тарифа API; при превышении в бете — предупреждение в заголовке X-AllDocs-Usage. Дедупликация и recognize=false не считаются |
50 МБ | максимальный размер файла — 413 file_too_large |
Ошибка всегда { "error": "код", "message": "пояснение" }: 401 invalid_api_key, 403 email_not_verified, 404 not_found, 400 fields_required / bad_date / unknown_field / bad_visibility, 415 unsupported_type, 429 rate_limited, 500 server_error.
Если поля уже распознаны у вас (учётная система, старый архив) — загрузите файлы с fields и recognize=false: распознавание не тратится, поля записываются как есть, дубликаты по содержимому склеиваются автоматически. external_id делает импорт идемпотентным — скрипт можно запускать повторно.
curl -X POST https://lk.alldocs.pro/v1/documents \
-H "Authorization: Bearer ad_live_…" \
-F "file=@archive/1234.pdf" -F "external_id=archive:1234" -F "recognize=false" \
-F 'fields={"doc_type":"Паспорт качества","doc_number":"14","doc_date":"2024-05-06","material":"Клин монтажный 22х143х43","material_short":"Клин монтажный","manufacturer":"ООО «Дек»"}'
Вопросы и доступ к тарифу API: support@alldocs.pro.