Basics
Response format
Every answer has the same envelope.error.code, never on the message text. Every answer also carries an x-request-id header. Quote it when you contact Record support. See Errors for every code.
Paging
Every list is paged.limit for the page size and, for the next page, cursor set to the previous next_cursor. Keep going until has_more is false. Lists run oldest first. total can be null when you filter by a status that is worked out per item.
Idempotency
Send anIdempotency-Key header (a new UUID) on writes. A retry with the same key returns the first answer instead of doing the work twice, so a timeout never creates a duplicate.
- Required on
POST /workflows,POST /mandates,PUT /mandates/{mandate_id}/questions,POST /mandates/{mandate_id}/archive,POST /campaigns,POST /campaigns/{campaign_id}/candidatesandPOST /skill-requests. Optional on other writes. - Keys are kept for 24 hours per API key. A replayed answer has the header
Idempotent-Replayed: true. - Only successful answers are kept. After an error, a retry with the same key runs again.
On a retry, reuse the
Idempotency-Key but sign the request again. A signed write is accepted only once.What you can read and change
- Reads cover everything in your organisation, project and mode: objects made through the API and in the Record playground.
is_external: truemarks the ones made through the API. - Changes apply only to what you created through the API. Anything made in the playground answers
403 FORBIDDEN. - Test and live data are separate. A TEST key never sees live objects, and the reverse.
- Deletes archive. Nothing is erased, and results stay readable.
- Another organisation’s objects answer
404 NOT_FOUND.

