Skip to main content
Flow’s customer API uses HTTPS and JSON. Send 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 alias master. 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.

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.