ExDocApi/ Docs

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 |

← PreviousSchemas