API Documentation

Everything in the Document-Info dashboard is available through a REST API. API access is included in the Professional and Enterprise plans.

Authentication

Authenticate with your account credentials to receive a JWT, then pass it as a Bearer token on every request. Tokens are valid for one hour; use the refresh endpoint to renew them.

curl -X POST "$API_URL/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"email": "you@company.com", "password": "..."}'

# → { "id_token": "eyJ...", "access_token": "...", "refresh_token": "..." }

curl "$API_URL/documents" -H "Authorization: Bearer $ID_TOKEN"

Uploading a document

Uploads are a three-step flow: initiate (get a presigned URL), upload the file directly to storage, then confirm to start extraction.

# 1. Initiate
curl -X POST "$API_URL/documents/upload" \
  -H "Authorization: Bearer $ID_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"fileName": "invoice.pdf", "contentType": "application/pdf",
       "fileSize": 182044, "processingTier": "standard"}'
# → { "docId": "...", "uploadUrl": "...", "uploadFields": { ... } }

# 2. Upload the file to the presigned URL (multipart form POST)

# 3. Confirm — extraction starts automatically
curl -X POST "$API_URL/documents/$DOC_ID/uploaded" \
  -H "Authorization: Bearer $ID_TOKEN"

# 4. Poll until completed
curl "$API_URL/documents/$DOC_ID/status" -H "Authorization: Bearer $ID_TOKEN"

Core endpoints

MethodEndpointDescription
POST/auth/loginExchange email + password for JWT tokens
POST/documents/uploadInitiate an upload — returns a presigned S3 URL
POST/documents/{id}/uploadedConfirm upload and start extraction
GET/documentsList documents (filter by status)
GET/documents/{id}Get a document with extracted fields
GET/documents/{id}/statusPoll processing status
PUT/documents/{id}/fieldsCorrect extracted field values
POST/documents/{id}/approveApprove extraction results
GET/documents/{id}/export?format=json|csvExport extracted data
GET/org/usageCurrent-month usage and quota
POST/org/webhooksRegister a webhook for document events

Webhooks

Register a webhook to receive document.completed, document.approved, and document.failed events. Each delivery is signed with an HMAC-SHA256 signature in the X-Signature header using the signing secret returned when the webhook is created.

Ready to integrate?

Your API base URL and keys are available in the dashboard under Settings → API Keys.

Start Free Trial