Authentication
All API requests must include your API key in the Authorization header using Bearer token format.
Scopes
API keys support fine-grained scopes: documents:read, documents:write, decisions:read, decisions:write, or * for full access.
Rate Limits
Limits vary by plan. Exceeded requests return 429 Too Many Requests with Retry-After, X-RateLimit-Limit, and X-RateLimit-Remaining headers.
Idempotency
Mutating endpoints (e.g. document upload) support idempotent retries. Pass a unique Idempotency-Key header (UUID v4 recommended). Duplicate requests with the same key within 24 hours return the original response without re-processing.
Endpoints
/api/v1/documentsList documents with cursor-based pagination.
/api/v1/documents/uploadUpload a document. Supports Idempotency-Key header.
/api/v1/documents/:idRetrieve a single document by ID.
/api/v1/documents/:id/qaAsk a question about a document. Returns a contextual answer.
/api/v1/decision-runsList decision runs with filters and cursor pagination.
/api/v1/decision-runs/:idRetrieve a single decision run with all associated items.
Pagination
List endpoints use cursor-based pagination. Pass ?cursor=<next_cursor> and ?limit=20 (max 100) to page through results. Responses include a next_cursor field when more results exist.
Webhooks
Register a webhook endpoint from API & Webhooks settings to receive real-time event payloads. All payloads are signed with an HMAC-SHA256 signature in the X-Understify-Signature header.
document.analyzedFired when a document has been fully analyzed.decision_run.completedFired when a decision run finishes successfully.decision_run.failedFired when a decision run encounters an error.decision_item.approvedFired when a decision item is approved.decision_item.rejectedFired when a decision item is rejected.decision_item.escalatedFired when a decision item is escalated.Error Format
All errors return a consistent JSON body with a machine-readable code field.