API Reference
Upsert one to 500 works into a catalogue.
Request body · application/json
client_idstringlength 1–∞If present, must match the client bound to the API key.
catalog_namestringNames a new catalogue. Default is API Import YYYY-MM-DD.
catalog_idstringAppend to an existing catalogue. A new one is created if omitted. 404 if not this client's.
modestringThe value validate is a dry-run; commit (the default) persists.
validatecommitworksrequiredarray of WorkInput1–500 itemsHeaders
Idempotency-KeystringUnique per request (a UUID is ideal); one key per chunk when paging. Same key with the same body replays the original response (with header Idempotent-Replay: true); same key while still processing returns 409; same key with a different body returns 422. Retained 24h. Ignored in dry-run.
x-client-idstringOptional. If present, must equal the client bound to the API key, else 403.
Query parameters
dry_runbooleanWhen true, validate and report without persisting (equivalent to body mode=validate). Returns 200.
Request
curl -X POST https://ingest.takerecord.com/api/v1/catalogue/works \
-H "Authorization: Bearer $TAKERECORD_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @works.jsonResponses
200Dry-run (validate) result. Nothing persisted; work_ids is empty and each results[].work_id is null.
201Commit result. Works persisted.400Validation failed (an unknown/misspelled field, a share outside the 0-100 range, or a body client_id that does not match the key).
401Missing, invalid, expired, or revoked API key.403Not a per-client key, missing scope, or x-client-id header mismatch.404catalog_id is not one of this client's catalogues.409An Idempotency-Key is still being processed.422An Idempotency-Key was reused with a different request body.429Rate limit exceeded (60 requests per minute per key).500Unexpected server error.{
"catalog_id": "cat-9f2a1b3c",
"catalog_name": "My catalogue",
"mode": "commit",
"works_created": 1,
"works_updated": 0,
"works_skipped": 0,
"work_ids": ["REC-2026-00001"],
"results": [
{ "client_work_ref": "ACME-0001", "work_id": "REC-2026-00001", "action": "created" }
],
"gaps": [],
"validation": { "total_works": 1, "works_flagged": 0, "attestation_ran": true, "issues": [] },
"roster_adjusted": 0,
"prose_stripped": 0,
"canonicalised": 1
}