Identifiers
On live keys every public id is a UUID. The API never exposes numeric database primary keys.
Test keys are different: abr_test_… responses carry opaque prefixed ids such as proj_test_…, deliv_test_… and file_test_…. Treat every id as an opaque string. Code that parses or validates ids as UUIDs works against live and fails in test mode. See Test mode.
Use the id from a response in the next path. Do not guess sequential numbers (/projects/124 after seeing /projects/123).
GET /v1/projects/3f2a9c1e-4b7d-4c8a-9f10-2d6e5b7c8a91
GET /v1/projects/{project_id}/deliverables/{deliverable_id}
What to copy
| Field | What it is | Use it for |
|---|---|---|
id on a project |
Project UUID | All /v1/projects/{id}… routes |
id on a deliverable |
Deliverable UUID | Single-deliverable metadata and bytes |
org_id |
Organisation UUID | Read only — sent for you |
created_by |
User UUID | Read only |
created_by_api_key_id |
Key that created the project | Audit; null for UI-created projects |
file_id on a deliverable |
Opaque asset id | Not a path parameter |
source_file_id |
Source asset id | Not a path parameter |
batch_id |
Internal batch, when present | Not a path parameter |
The JSON field is always id, never obj_id.
Deliverables
-
GET /v1/projects/{project_id}/deliverables— each row hasid -
GET /v1/projects/{project_id}/deliverables/{id}— that sameid -
Or
…/deliverables?format=zipfor every file
Do not put file_id in the deliverable path.
Languages
Languages are identified by lowercase bcp47 tags, not by an id. See Language codes.