X-API-Key and customer on every request, and Content-Type: application/json when sending a JSON body.
Scope each request
Most resource endpoints start with/project/{projectId}. Use the project’s id from GET /project, rather than its name or slug. If you have a slug, resolve it with GET /project/slug/{slug} first.
Keep resource identifiers within the workspace and project that returned them. Send the workspace identifier in the customer header.
An entity’s
uniqueEntityNumber is not a substitute for its id. Display names and custom field definitions can differ across projects even when the API contract is the same.
Select a branch
Entity reads and writes accept the Base aliasmaster. Omitting the branch on these endpoints also selects Base. To work on a branch, pass its ID explicitly.
Parameter names differ by endpoint:
Keep the same project, branch, and filters throughout a paginated read. Follow each endpoint’s schema for exact spelling.
Protected branches
Entity writes honor branch protection and editor groups by default. On supported entity write endpoints, a personal API key owned by a project admin can pass the query parameterbypass_branch_protection=true to bypass those two restrictions, including on Base. The parameter defaults to false. Item locks, stage policies, field validation, and branch lifecycle checks still apply. Review the endpoint’s parameters before using this override.
Read every page
Pagination is specific to the endpoint.
Treat cursors as opaque strings. For entity lists, prefer
starting_after to legacy offset; offset must stay below 1000 and is ignored when starting_after is set. See Read entities for a complete cursor loop.
Handle errors and retries
Check the HTTP status before consuming a success response. Keep the error response body for troubleshooting, while excluding API keys from logs.
A timeout does not establish whether a write committed. Read back the affected resources before repeating a create, batch write, or automation trigger. Repeated triggers can start additional runs. See Batch writes for transaction boundaries.