Базові правила
| Параметр | Опис |
| Base URL | https://jdoc.net.ua |
| Авторизація | Authorization: Bearer <API_KEY> |
| Ідемпотентність | Idempotency-Key для кожного нового завантаження. |
| Формат тіла | multipart/form-data |
| Файли | files[], PDF/PNG/JPG/JPEG/TIFF. |
| Пакет | До 100 файлів за один запит, якщо інше не обмежено вашим тарифом або налаштуваннями компанії. |
У Postman не задавайте вручну Content-Type для multipart: Postman сам поставить boundary.
1. Завантажити один документ
curl --location 'https://jdoc.net.ua/api/v1/operations' \
--header 'Authorization: Bearer <API_KEY>' \
--header 'Idempotency-Key: upload-one-001' \
--form 'files[]=@document.pdf'
Поля form-data
| Поле | Тип | Обовʼязково | Опис |
files[] | File | Так | Один або кілька файлів. Для пакета повторіть поле кілька разів. |
webhook_url | Text | Ні | URL для доставки результату саме цієї операції. Якщо не передати, використовується webhook компанії, якщо він налаштований у кабінеті. |
metadata | Text/JSON | Ні | Ваш службовий коментар або JSON, який допомагає звʼязати операцію з вашою системою. |
client_operation_id | Text | Ні | Ваш ID операції в ERP/CRM/1С/BAS. |
2. Завантажити кілька документів
Можна передати до 100 файлів за один запит. Усі файли передаються з однаковим ключем files[].
curl --location 'https://jdoc.net.ua/api/v1/operations' \
--header 'Authorization: Bearer <API_KEY>' \
--header 'Idempotency-Key: upload-batch-001' \
--form 'files[]=@invoice.pdf' \
--form 'files[]=@act.pdf' \
--form 'files[]=@scan.png'
3. Завантажити з webhook для конкретної операції
curl --location 'https://jdoc.net.ua/api/v1/operations' \
--header 'Authorization: Bearer <API_KEY>' \
--header 'Idempotency-Key: upload-webhook-001' \
--form 'files[]=@document.pdf' \
--form 'webhook_url=https://example.com/jdoc/webhook'
4. Відповідь на створення операції
{
"operation_id": "op_xxx",
"status": "ACCEPTED",
"files_total": 1,
"documents": [
{
"document_id": "doc_xxx",
"filename": "document.pdf",
"status": "QUEUED"
}
],
"webhook_enabled": false,
"created_at": "2026-05-10T10:00:00+00:00"
}
| Поле | Опис |
operation_id | ID операції для перевірки статусу та отримання результату. |
status | Поточний статус операції. |
files_total | Кількість прийнятих файлів. |
documents[].document_id | ID конкретного документа. |
webhook_enabled | Чи буде виконана доставка результату на webhook. |
5. Отримати операцію і JSON-результат
curl --location 'https://jdoc.net.ua/api/v1/operations/op_xxx' \
--header 'Authorization: Bearer <API_KEY>'
Коли статус PROCESSED або PROCESSED_WITH_WARNINGS, результат буде в documents[].result.
6. Отримати результати операції окремо
curl --location 'https://jdoc.net.ua/api/v1/operations/op_xxx/results' \
--header 'Authorization: Bearer <API_KEY>'
7. Отримати результат конкретного документа
curl --location 'https://jdoc.net.ua/api/v1/documents/doc_xxx/result' \
--header 'Authorization: Bearer <API_KEY>'
8. Отримати список доступних artifacts і final JSON
curl --location 'https://jdoc.net.ua/api/v1/documents/doc_xxx/artifacts' \
--header 'Authorization: Bearer <API_KEY>'
curl --location 'https://jdoc.net.ua/api/v1/documents/doc_xxx/artifacts/final_json/signed-url' \
--header 'Authorization: Bearer <API_KEY>'
9. Webhook: налаштування і формат доставки
Webhook потрібен, якщо ваша система має автоматично отримувати повідомлення після завершення обробки. Його можна налаштувати в кабінеті у розділі Webhook.
Поля webhook у кабінеті
| Поле | Опис |
name | Назва webhook у вашому кабінеті. Наприклад: Production BAS. |
url | HTTPS-адреса вашої системи, на яку JDOC буде надсилати POST-запит. |
secret | Секрет для перевірки підпису. Зберігайте його у своїй системі, не показуйте користувачам. |
signature_required | Якщо увімкнено, JDOC підписує webhook-запит. Ваша система може перевірити, що запит справді надійшов від JDOC і тіло не змінювали. |
is_default | Якщо webhook основний, він автоматично використовується для нових операцій компанії. |
max_delivery_attempts | Максимальна кількість спроб доставки. |
retry_delays_sec | Затримки між повторними спробами у секундах. Наприклад: [60,300,900,3600]. |
status | ACTIVE або DISABLED. |
Що приходить на webhook
JDOC надсилає HTTP POST з Content-Type: application/json. Є два типи подій: по операції та по документу.
Заголовки webhook-запиту
| Header | Опис |
X-DocParser-Event | Тип події: наприклад operation.completed або document.processed. |
X-DocParser-Operation-Id | ID операції. |
X-DocParser-Document-Id | ID документа, якщо подія стосується конкретного документа. |
X-DocParser-Delivery-Id | ID доставки webhook. |
X-DocParser-Event-Id | ID події. Використовуйте для дедуплікації. |
X-DocParser-Timestamp | Unix timestamp підпису. |
X-DocParser-Signature | Підпис sha256=..., якщо для webhook заданий secret. |
Підпис webhook
Підпис потрібен для перевірки справжності запиту. Алгоритм:
signed_payload = X-DocParser-Timestamp + "." + raw_body
expected = "sha256=" + HMAC_SHA256(secret, signed_payload)
Порівняйте expected з X-DocParser-Signature. Також перевіряйте, що timestamp не старіший за кілька хвилин.
Payload події операції
{
"event_type": "operation.completed",
"event": "operation.completed",
"event_id": "evt_xxx",
"operation_id": "op_xxx",
"status": "PROCESSED",
"summary": {
"files_total": 1,
"processed": 1,
"processed_with_warnings": 0,
"rejected": 0,
"failed": 0,
"cancelled": 0
},
"created_at": "2026-05-10T10:00:00+00:00",
"completed_at": "2026-05-10T10:01:00+00:00",
"documents": [
{
"document_id": "doc_xxx",
"filename": "document.pdf",
"status": "PROCESSED",
"pages_count": 2,
"document_type_code": "act",
"structure_type_code": "structured",
"billing": {
"billable": true,
"documents_charged": 1
},
"created_at": "2026-05-10T10:00:00+00:00",
"completed_at": "2026-05-10T10:01:00+00:00"
}
]
}
Payload події документа
{
"event_type": "document.processed",
"event": "document.processed",
"event_id": "evt_xxx",
"operation_id": "op_xxx",
"document_id": "doc_xxx",
"status": "PROCESSED",
"document": {
"document_id": "doc_xxx",
"filename": "document.pdf",
"status": "PROCESSED",
"pages_count": 2,
"billing": {
"billable": true,
"documents_charged": 1
}
},
"created_at": "2026-05-10T10:00:00+00:00",
"completed_at": "2026-05-10T10:01:00+00:00"
}
Webhook-повідомлення є сигналом, що результат готовий. Повний JSON результату забирайте через GET /api/v1/operations/{operation_id} або GET /api/v1/documents/{document_id}/result.
Перевірити webhook status
curl --location 'https://jdoc.net.ua/api/v1/operations/op_xxx/webhook' \
--header 'Authorization: Bearer <API_KEY>'
Формат result
| Поле | Опис |
document | Номер, дата, назва, валюта, мова. |
document_type | Тип документа і confidence. |
structure_type | Тип структури документа. |
parties | Контрагенти: продавець, покупець, інші сторони. |
line_items | Рядки документа: опис, кількість, ціна, ПДВ, сума. |
totals | Підсумки: база, ПДВ, загальна сума, сума до сплати. |
taxes | Податкові ставки і суми. |
bank_accounts | IBAN, банк, МФО, сторона. |
signatories | Підписанти. |
extra_fields | Додаткові поля: договір, період, примітки тощо. |
confidence | Оцінка впевненості розпізнавання. |
validation | Результат перевірки JSON. |
Статуси операції
| Статус | Опис |
ACCEPTED | Запит прийнято, операцію створено. |
QUEUED | Операція або документи очікують черги. |
PROCESSING | Є документи в обробці. |
PARTIALLY_PROCESSED | Частина документів уже оброблена, частина ще ні. |
PROCESSED | Усі документи успішно оброблені без попереджень. |
PROCESSED_WITH_WARNINGS | Операцію завершено, але є документи з попередженнями. |
COMPLETED_WITH_REJECTIONS | Операцію завершено, але частина документів була відхилена. |
COMPLETED_WITH_ERRORS | Операцію завершено, але частина документів має помилки. |
FAILED | Операцію не вдалося виконати. |
CANCELLED | Операцію скасовано. |
Статуси документа
| Статус | Опис |
QUEUED | Документ очікує обробки. |
PREPROCESSING | Підготовка файла до читання. |
TEXT_EXTRACTING | Отримання тексту з документа. |
OCR_PROCESSING | Розпізнавання скану або зображення. |
CLEANING | Очищення і підготовка тексту. |
CANDIDATES_EXTRACTING | Пошук кандидатів реквізитів і сум. |
AI_EXTRACTING | AI формує структурований JSON. |
VALIDATING | Перевірка структури, сум і попереджень. |
PROCESSED | Документ готовий без попереджень. |
PROCESSED_WITH_WARNINGS | Документ готовий, але є warnings. |
REJECTED | Файл відхилено до або під час обробки. |
FAILED | Документ не вдалося обробити. |
CANCELLED | Обробку документа скасовано. |
Статуси webhook-доставки
| Статус | Опис |
PENDING | Доставка очікує першої спроби. |
SENDING | JDOC зараз відправляє webhook. |
DELIVERED | Ваша система повернула HTTP 2xx. |
RETRY | Буде повторна спроба доставки. |
FAILED | Усі спроби доставки вичерпані. |
CANCELLED | Доставку скасовано. |
Формат помилки
{
"error": {
"code": "HTTP_ERROR",
"message": "Operation not found."
}
}
| HTTP | Що означає |
| 400 | Невірний запит або параметри. |
| 401 | Не передано або невірний API-ключ. |
| 403 | API-ключ не має потрібних прав. |
| 404 | Операцію або документ не знайдено. |
| 409 | Конфлікт ідемпотентності. |
| 422 | Невірні поля запиту. |
| 429 | Перевищено ліміт запитів. |
| 500 | Технічна помилка сервісу. |
Питання по інтеграції можна надсилати на support@jdoc.net.ua.