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"}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 } ] } ]}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 } ] } ]}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.
The canonical event envelope — identical as a webhook delivery body and as
an item in list_events / get_event responses.
Webhook deliveries POST this JSON with Content-Type: application/json and
an X-Airtype-Signature: t=<unix seconds>,v1=<hex> header, where <hex> is
HMAC-SHA256 over "{t}.{raw request body}" keyed with the endpoint's
signing_secret. Verify by recomputing over the raw bytes and rejecting
when |now - t| > 300 seconds; the header may carry multiple v1= values
during secret rotation — accept if any matches. Respond with any 2xx within
30 seconds; failed deliveries are retried after 1m, 5m, 30m, 2h, 12h, and
24h before being abandoned. Deliveries may arrive out of order and, rarely,
more than once — deduplicate on id.
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.
The canonical event envelope — identical as a webhook delivery body and as
an item in list_events / get_event responses.
Webhook deliveries POST this JSON with Content-Type: application/json and
an X-Airtype-Signature: t=<unix seconds>,v1=<hex> header, where <hex> is
HMAC-SHA256 over "{t}.{raw request body}" keyed with the endpoint's
signing_secret. Verify by recomputing over the raw bytes and rejecting
when |now - t| > 300 seconds; the header may carry multiple v1= values
during secret rotation — accept if any matches. Respond with any 2xx within
30 seconds; failed deliveries are retried after 1m, 5m, 30m, 2h, 12h, and
24h before being abandoned. Deliveries may arrive out of order and, rarely,
more than once — deduplicate on id.
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.
The canonical event envelope — identical as a webhook delivery body and as
an item in list_events / get_event responses.
Webhook deliveries POST this JSON with Content-Type: application/json and
an X-Airtype-Signature: t=<unix seconds>,v1=<hex> header, where <hex> is
HMAC-SHA256 over "{t}.{raw request body}" keyed with the endpoint's
signing_secret. Verify by recomputing over the raw bytes and rejecting
when |now - t| > 300 seconds; the header may carry multiple v1= values
during secret rotation — accept if any matches. Respond with any 2xx within
30 seconds; failed deliveries are retried after 1m, 5m, 30m, 2h, 12h, and
24h before being abandoned. Deliveries may arrive out of order and, rarely,
more than once — deduplicate on id.
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.
The canonical event envelope — identical as a webhook delivery body and as
an item in list_events / get_event responses.
Webhook deliveries POST this JSON with Content-Type: application/json and
an X-Airtype-Signature: t=<unix seconds>,v1=<hex> header, where <hex> is
HMAC-SHA256 over "{t}.{raw request body}" keyed with the endpoint's
signing_secret. Verify by recomputing over the raw bytes and rejecting
when |now - t| > 300 seconds; the header may carry multiple v1= values
during secret rotation — accept if any matches. Respond with any 2xx within
30 seconds; failed deliveries are retried after 1m, 5m, 30m, 2h, 12h, and
24h before being abandoned. Deliveries may arrive out of order and, rarely,
more than once — deduplicate on id.
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.
The canonical event envelope — identical as a webhook delivery body and as
an item in list_events / get_event responses.
Webhook deliveries POST this JSON with Content-Type: application/json and
an X-Airtype-Signature: t=<unix seconds>,v1=<hex> header, where <hex> is
HMAC-SHA256 over "{t}.{raw request body}" keyed with the endpoint's
signing_secret. Verify by recomputing over the raw bytes and rejecting
when |now - t| > 300 seconds; the header may carry multiple v1= values
during secret rotation — accept if any matches. Respond with any 2xx within
30 seconds; failed deliveries are retried after 1m, 5m, 30m, 2h, 12h, and
24h before being abandoned. Deliveries may arrive out of order and, rarely,
more than once — deduplicate on id.
Response Body
Example Requests
/evaluation.completeddata.evaluation.failure carries the reason.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
The canonical event envelope — identical as a webhook delivery body and as
an item in list_events / get_event responses.
Webhook deliveries POST this JSON with Content-Type: application/json and
an X-Airtype-Signature: t=<unix seconds>,v1=<hex> header, where <hex> is
HMAC-SHA256 over "{t}.{raw request body}" keyed with the endpoint's
signing_secret. Verify by recomputing over the raw bytes and rejecting
when |now - t| > 300 seconds; the header may carry multiple v1= values
during secret rotation — accept if any matches. Respond with any 2xx within
30 seconds; failed deliveries are retried after 1m, 5m, 30m, 2h, 12h, and
24h before being abandoned. Deliveries may arrive out of order and, rarely,
more than once — deduplicate on id.
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.
The canonical event envelope — identical as a webhook delivery body and as
an item in list_events / get_event responses.
Webhook deliveries POST this JSON with Content-Type: application/json and
an X-Airtype-Signature: t=<unix seconds>,v1=<hex> header, where <hex> is
HMAC-SHA256 over "{t}.{raw request body}" keyed with the endpoint's
signing_secret. Verify by recomputing over the raw bytes and rejecting
when |now - t| > 300 seconds; the header may carry multiple v1= values
during secret rotation — accept if any matches. Respond with any 2xx within
30 seconds; failed deliveries are retried after 1m, 5m, 30m, 2h, 12h, and
24h before being abandoned. Deliveries may arrive out of order and, rarely,
more than once — deduplicate on id.
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.
The canonical event envelope — identical as a webhook delivery body and as
an item in list_events / get_event responses.
Webhook deliveries POST this JSON with Content-Type: application/json and
an X-Airtype-Signature: t=<unix seconds>,v1=<hex> header, where <hex> is
HMAC-SHA256 over "{t}.{raw request body}" keyed with the endpoint's
signing_secret. Verify by recomputing over the raw bytes and rejecting
when |now - t| > 300 seconds; the header may carry multiple v1= values
during secret rotation — accept if any matches. Respond with any 2xx within
30 seconds; failed deliveries are retried after 1m, 5m, 30m, 2h, 12h, and
24h before being abandoned. Deliveries may arrive out of order and, rarely,
more than once — deduplicate on id.
Response Body
Example Requests
/document_slot.updated