Events & webhooks
Lists the events emitted for this API client, newest first. Event list and detail responses return the exact JSON envelope delivered to webhook endpoints, so the two views always round-trip. Events are retained for 30 days.
Authorization
bearerAuth Partner API key, sent as Authorization: Bearer <api key>.
In: header
Query Parameters
Maximum number of items to return. Values above 100 are clamped to 100.
1 <= value <= 10050Opaque pagination cursor from the previous page's next_cursor.
Return only events of this type (e.g. file.ready).
Value in
- "file.ready"
- "file.failed"
- "evaluation.started"
- "evaluation.progress"
- "evaluation.completed"
- "evaluation.failed"
- "evaluation.canceled"
- "document_slot.updated"
Return only events belonging to this submission.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/events"{ "data": [ { "id": "evt_2f0d9c62-6f6e-4a7e-8f8e-2d5c7a1b0c3d", "type": "file.ready", "created_at": "2019-08-24T14:15:22Z", "api_client_id": "b88c5716-2ef6-47d7-b7e7-040a47fb6966", "data": { "upload": { "id": "7d9f2b7e-1f6e-4a3b-9a5d-0c1e2f3a4b5c", "external_file_id": "payslip-2026-04", "upload_status": "ready", "file_id": "8a0cfb4f-ddc9-436d-91bb-75133e01d0dc", "document_slot_id": "942421c5-3e28-44c2-9b31-6f0f23d5aa11", "filename": "payslip-april.pdf", "content_type": "application/pdf", "failure": null, "created_at": "2026-04-03T09:21:11Z", "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3", "external_submission_id": "loan-2026-000451" } } } ], "next_cursor": "string"}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}Returns one event — the same envelope delivered over webhooks — plus the per-endpoint delivery timeline (attempt history, retry state) that the wire delivery cannot carry.
Authorization
bearerAuth Partner API key, sent as Authorization: Bearer <api key>.
In: header
Path Parameters
The event id, including the evt_ prefix.
^evt_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/events/evt_2f0d9c62-6f6e-4a7e-8f8e-2d5c7a1b0c3d"{ "id": "evt_2f0d9c62-6f6e-4a7e-8f8e-2d5c7a1b0c3d", "type": "file.ready", "created_at": "2019-08-24T14:15:22Z", "api_client_id": "b88c5716-2ef6-47d7-b7e7-040a47fb6966", "data": { "upload": { "id": "7d9f2b7e-1f6e-4a3b-9a5d-0c1e2f3a4b5c", "external_file_id": "payslip-2026-04", "upload_status": "ready", "file_id": "8a0cfb4f-ddc9-436d-91bb-75133e01d0dc", "document_slot_id": "942421c5-3e28-44c2-9b31-6f0f23d5aa11", "filename": "payslip-april.pdf", "content_type": "application/pdf", "failure": null, "created_at": "2026-04-03T09:21:11Z", "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3", "external_submission_id": "loan-2026-000451" } }, "deliveries": [ { "endpoint_id": "e9ce0d4f-d433-423d-9497-4c000544106c", "endpoint_url": "http://example.com", "delivery_status": "pending", "attempt_count": 0, "next_retry_at": "2019-08-24T14:15:22Z", "last_attempted_at": "2019-08-24T14:15:22Z", "attempts": [ { "attempt_number": 1, "attempted_at": "2019-08-24T14:15:22Z", "outcome": "pending", "response_status": 0, "transport_error": "string", "response_time_ms": 0 } ] } ]}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}Requeues the event for delivery. Without a body, every non-succeeded
delivery (failed_retryable, failed_permanent, abandoned) is requeued;
pass endpoint_id to requeue only that endpoint's delivery, regardless of
its state. Redelivery does not reset the attempt history — new attempts
append to it. Fails with 422 invalid_field when the event has no matching
delivery to requeue.
Authorization
bearerAuth Partner API key, sent as Authorization: Bearer <api key>.
In: header
Path Parameters
The event id, including the evt_ prefix.
^evt_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Request Body
application/json
Optional target selection.
TypeScript Definitions
Use the request body type in TypeScript.
Optional target selection for a redelivery.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/events/evt_2f0d9c62-6f6e-4a7e-8f8e-2d5c7a1b0c3d/redeliver" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "evt_2f0d9c62-6f6e-4a7e-8f8e-2d5c7a1b0c3d", "type": "file.ready", "created_at": "2019-08-24T14:15:22Z", "api_client_id": "b88c5716-2ef6-47d7-b7e7-040a47fb6966", "data": { "upload": { "id": "7d9f2b7e-1f6e-4a3b-9a5d-0c1e2f3a4b5c", "external_file_id": "payslip-2026-04", "upload_status": "ready", "file_id": "8a0cfb4f-ddc9-436d-91bb-75133e01d0dc", "document_slot_id": "942421c5-3e28-44c2-9b31-6f0f23d5aa11", "filename": "payslip-april.pdf", "content_type": "application/pdf", "failure": null, "created_at": "2026-04-03T09:21:11Z", "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3", "external_submission_id": "loan-2026-000451" } }, "deliveries": [ { "endpoint_id": "e9ce0d4f-d433-423d-9497-4c000544106c", "endpoint_url": "http://example.com", "delivery_status": "pending", "attempt_count": 0, "next_retry_at": "2019-08-24T14:15:22Z", "last_attempted_at": "2019-08-24T14:15:22Z", "attempts": [ { "attempt_number": 1, "attempted_at": "2019-08-24T14:15:22Z", "outcome": "pending", "response_status": 0, "transport_error": "string", "response_time_ms": 0 } ] } ]}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}{ "error": { "code": "invalid_field", "message": "external_submission_id must not be empty", "param": "external_submission_id", "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d" }}Sent when an uploaded file finished processing successfully. See the
Event schema description for the delivery contract (signature header,
timeout, retries).
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/file.readySent when an uploaded file failed processing; data.upload.failure carries the reason.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/file.failedSent when a queued evaluation begins processing.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/evaluation.startedProgress events are throttled server-side; not every internal step emits one.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/evaluation.progressdata.evaluation.result carries the summary (outcome, recommendation, risk band).
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/evaluation.completeddata.evaluation.failure carries the reason.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/evaluation.failedSent when a queued or running evaluation was canceled, e.g. because the submission was canceled or deleted.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/evaluation.canceledSent when a document slot's review status changes — including advisor
decisions (accepted, rejected, needs_review) that no API call of the
partner triggered. Subscribe to this event to drive re-upload flows instead
of polling get_submission.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/document_slot.updated