GET /api/v1/document-types
List all built-in document type slugs and labels.
Requires authentication.
Endpoint
GET /api/v1/document-types
Authorization: Bearer <api_key>
curl "https://exdocapi.cheapehai.shop/api/v1/document-types" \
-H "Authorization: Bearer $EXDOC_API_KEY"
Response — 200 OK
{
"document_types": [
{ "slug": "invoice", "label": "Invoice", "description": "Sales invoices, purchase invoices, tax invoices" },
{ "slug": "medical_consultation", "label": "Medical Consultation", "description": "Doctor visit notes, consultation summaries, OPD records" },
{ "slug": "medical_lab_report", "label": "Medical Lab Report", "description": "Blood tests, urine tests, pathology reports" },
{ "slug": "medical_prescription", "label": "Medical Prescription", "description": "Standalone prescription / Rx slips" },
{ "slug": "contract", "label": "Contract / Agreement", "description": "Business contracts, service agreements, NDAs, MOUs" },
{ "slug": "bank_statement", "label": "Bank Statement", "description": "Monthly bank account statements" },
{ "slug": "payslip", "label": "Payslip / Salary Slip", "description": "Employee salary slips, pay stubs" },
{ "slug": "passport", "label": "Passport", "description": "International travel passports" },
{ "slug": "purchase_order", "label": "Purchase Order", "description": "PO documents from buyer to supplier" }
]
}
Use the slug value with GET /api/v1/fields?type=slug to get suggested extraction fields for that document type.
GET /api/v1/fields?type=:slug
Get suggested extraction fields for a specific document type.
Requires authentication.
Endpoint
GET /api/v1/fields?type=<slug>
Authorization: Bearer <api_key>
curl "https://exdocapi.cheapehai.shop/api/v1/fields?type=invoice" \
-H "Authorization: Bearer $EXDOC_API_KEY"
Response — 200 OK
{
"type": "invoice",
"label": "Invoice",
"description": "Sales invoices, purchase invoices, tax invoices",
"fields": [
{ "key": "company_name", "label": "Company Name", "description": "Vendor / issuer name", "required": true },
{ "key": "invoice_number", "label": "Invoice Number", "description": "Reference ID", "required": true },
{ "key": "date", "label": "Invoice Date", "description": "Date of issue", "required": true },
{ "key": "due_date", "label": "Due Date", "description": "Payment deadline", "required": false },
{ "key": "client_name", "label": "Client Name", "description": "Buyer / recipient", "required": true },
{ "key": "line_items", "label": "Line Items", "description": "Products / services listed", "required": true },
{ "key": "subtotal", "label": "Subtotal", "description": "Amount before tax", "required": false },
{ "key": "tax", "label": "Tax", "description": "Tax amount", "required": false },
{ "key": "total", "label": "Total Amount", "description": "Final payable amount", "required": true },
{ "key": "currency", "label": "Currency", "description": "USD, INR, EUR, etc.", "required": false },
{ "key": "payment_method", "label": "Payment Method", "description": "Bank transfer, card, etc.", "required": false },
{ "key": "bank_details", "label": "Bank Details", "description": "Account info for payment", "required": false }
],
"suggested_keys": ["company_name", "invoice_number", "date", "client_name", "line_items", "total"]
}
| Field | Description |
|-------|-------------|
| fields | All available fields for this document type |
| suggested_keys | The required: true fields — a ready-to-use default selection |
Using suggested_keys in an extraction
// 1. Get suggested fields
const fieldsRes = await fetch(`https://exdocapi.cheapehai.shop/api/v1/fields?type=invoice`, {
headers: { Authorization: `Bearer ${apiKey}` }
})
const { fields, suggested_keys } = await fieldsRes.json()
// 2. Build the fields object from suggested keys
const selectedFields = Object.fromEntries(
fields
.filter(f => suggested_keys.includes(f.key))
.map(f => [f.key, f.description])
)
// 3. Submit extraction
const form = new FormData()
form.append('file', fileBlob, 'invoice.pdf')
form.append('extract', JSON.stringify({
document_type: 'invoice',
fields: selectedFields
}))
await fetch(`https://exdocapi.cheapehai.shop/api/v1/extract`, {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
body: form
})
Error responses
| Status | Body | Cause |
|--------|------|-------|
| 400 | Missing required query param: type | No type param |
| 401 | Invalid API key | Bad or missing key |
| 404 | Unknown document type: "xyz" | Unrecognised slug — response includes available_types array |