API ReferencePartner API

Uploads

GET
/v1/submissions/{submission_id}/files

Lists all uploads of the submission (slot-assigned and unassigned), newest first. Use this to poll processing status without fetching the full submission detail.

Authorization

bearerAuth
AuthorizationBearer <token>

Partner API key, sent as Authorization: Bearer <api key>.

In: header

Path Parameters

submission_id*string

The submission's AirCredit id (Submission.id).

Formatuuid

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/submissions/497f6eca-6276-4993-bfeb-53cbbbba6f08/files"
{  "data": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "external_file_id": "string",      "upload_status": "processing",      "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",      "document_slot_id": "942421c5-3e28-44c2-9bb6-eb0d38b57f11",      "filename": "string",      "content_type": "string",      "failure": {        "code": "string",        "message": "string"      },      "created_at": "2019-08-24T14:15:22Z",      "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3"    }  ],  "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"  }}
POST
/v1/submissions/{submission_id}/files

Uploads one document into a submission without assigning it to a document slot. The body is multipart/form-data with an external_file_id text part and a file part; unknown parts are ignored for forward compatibility.

Processing is asynchronous: 202 Accepted returns the upload in status processing. Poll get_submission or subscribe to the file.ready / file.failed webhook events for the outcome. Idempotent on external_file_id: re-sending an id that already exists on this submission returns the existing upload with 200 OK without storing the new bytes.

Accepted content types: application/pdf, image/jpeg, image/png, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document. The default maximum file size is 100 MiB.

Authorization

bearerAuth
AuthorizationBearer <token>

Partner API key, sent as Authorization: Bearer <api key>.

In: header

Path Parameters

submission_id*string

The submission's AirCredit id (Submission.id).

Formatuuid

Request Body

multipart/form-data

File bytes and the partner's idempotency identifier.

TypeScript Definitions

Use the request body type in TypeScript.

Multipart form body for file uploads. Parts other than the two declared here are ignored for forward compatibility.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/submissions/497f6eca-6276-4993-bfeb-53cbbbba6f08/files" \  -F external_file_id="applicant-income-2026-04" \  -F file="JVBERi0xLjQK"
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "external_file_id": "string",  "upload_status": "processing",  "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",  "document_slot_id": "942421c5-3e28-44c2-9bb6-eb0d38b57f11",  "filename": "string",  "content_type": "string",  "failure": {    "code": "string",    "message": "string"  },  "created_at": "2019-08-24T14:15:22Z",  "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3"}
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "external_file_id": "string",  "upload_status": "processing",  "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",  "document_slot_id": "942421c5-3e28-44c2-9bb6-eb0d38b57f11",  "filename": "string",  "content_type": "string",  "failure": {    "code": "string",    "message": "string"  },  "created_at": "2019-08-24T14:15:22Z",  "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3"}
{  "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"  }}
{  "error": {    "code": "invalid_field",    "message": "external_submission_id must not be empty",    "param": "external_submission_id",    "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d"  }}
POST
/v1/submissions/{submission_id}/document-slots/{slot_id}/files

Same behavior as create_upload, but the resulting upload is assigned to the given document slot of the submission's template.

Authorization

bearerAuth
AuthorizationBearer <token>

Partner API key, sent as Authorization: Bearer <api key>.

In: header

Path Parameters

submission_id*string

The submission's AirCredit id (Submission.id).

Formatuuid
slot_id*string

Identifier of the target document slot, as returned in SubmissionDetail.document_slots.

Formatuuid

Request Body

multipart/form-data

File bytes and the partner's idempotency identifier.

TypeScript Definitions

Use the request body type in TypeScript.

Multipart form body for file uploads. Parts other than the two declared here are ignored for forward compatibility.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/submissions/497f6eca-6276-4993-bfeb-53cbbbba6f08/document-slots/497f6eca-6276-4993-bfeb-53cbbbba6f08/files" \  -F external_file_id="applicant-income-2026-04" \  -F file="JVBERi0xLjQK"
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "external_file_id": "string",  "upload_status": "processing",  "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",  "document_slot_id": "942421c5-3e28-44c2-9bb6-eb0d38b57f11",  "filename": "string",  "content_type": "string",  "failure": {    "code": "string",    "message": "string"  },  "created_at": "2019-08-24T14:15:22Z",  "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3"}
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "external_file_id": "string",  "upload_status": "processing",  "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",  "document_slot_id": "942421c5-3e28-44c2-9bb6-eb0d38b57f11",  "filename": "string",  "content_type": "string",  "failure": {    "code": "string",    "message": "string"  },  "created_at": "2019-08-24T14:15:22Z",  "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3"}
{  "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"  }}
{  "error": {    "code": "invalid_field",    "message": "external_submission_id must not be empty",    "param": "external_submission_id",    "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d"  }}
GET
/v1/submissions/{submission_id}/files/{upload_id}

Returns one upload of the submission, including its processing status.

Authorization

bearerAuth
AuthorizationBearer <token>

Partner API key, sent as Authorization: Bearer <api key>.

In: header

Path Parameters

submission_id*string

The submission's AirCredit id (Submission.id).

Formatuuid
upload_id*string

The upload's AirCredit id (Upload.id).

Formatuuid

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/submissions/497f6eca-6276-4993-bfeb-53cbbbba6f08/files/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "external_file_id": "string",  "upload_status": "processing",  "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",  "document_slot_id": "942421c5-3e28-44c2-9bb6-eb0d38b57f11",  "filename": "string",  "content_type": "string",  "failure": {    "code": "string",    "message": "string"  },  "created_at": "2019-08-24T14:15:22Z",  "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3"}
{  "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"  }}
PATCH
/v1/submissions/{submission_id}/files/{upload_id}

Moves the upload between document slots: set document_slot_id to a slot id from SubmissionDetail.document_slots to assign it, or to null to make it unassigned. Slot statuses are recomputed. Fails with 409 evaluation_in_progress while an evaluation is queued or running.

Authorization

bearerAuth
AuthorizationBearer <token>

Partner API key, sent as Authorization: Bearer <api key>.

In: header

Path Parameters

submission_id*string

The submission's AirCredit id (Submission.id).

Formatuuid
upload_id*string

The upload's AirCredit id (Upload.id).

Formatuuid

Request Body

application/json

The slot assignment to apply.

TypeScript Definitions

Use the request body type in TypeScript.

Slot assignment for an upload.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/v1/submissions/497f6eca-6276-4993-bfeb-53cbbbba6f08/files/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{    "document_slot_id": "942421c5-3e28-44c2-9bb6-eb0d38b57f11"  }'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "external_file_id": "string",  "upload_status": "processing",  "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",  "document_slot_id": "942421c5-3e28-44c2-9bb6-eb0d38b57f11",  "filename": "string",  "content_type": "string",  "failure": {    "code": "string",    "message": "string"  },  "created_at": "2019-08-24T14:15:22Z",  "submission_id": "945dfedc-ad7f-4af7-b20c-06082ffa3cb3"}
{  "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"  }}
{  "error": {    "code": "invalid_field",    "message": "external_submission_id must not be empty",    "param": "external_submission_id",    "request_id": "req_9b2cf1f4-6f6e-4a7e-8f8e-2d5c7a1b0c3d"  }}
DELETE
/v1/submissions/{submission_id}/files/{upload_id}

Removes the upload and its stored file bytes — use this to replace a wrong or rejected document before re-uploading. The containing slot's status is recomputed. The upload's external_file_id becomes reusable on this submission. Fails with 409 evaluation_in_progress while an evaluation is queued or running; results of past evaluations keep referencing the deleted upload's id.

Authorization

bearerAuth
AuthorizationBearer <token>

Partner API key, sent as Authorization: Bearer <api key>.

In: header

Path Parameters

submission_id*string

The submission's AirCredit id (Submission.id).

Formatuuid
upload_id*string

The upload's AirCredit id (Upload.id).

Formatuuid

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/v1/submissions/497f6eca-6276-4993-bfeb-53cbbbba6f08/files/497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "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"  }}