Base URL

All traffic is HTTPS. A plain HTTP request is redirected, and you should treat the redirect as a bug in your client rather than something to follow with credentials attached.

Request format

Response format

A single record comes back as the object itself. A collection comes back in an envelope with the rows in data and paging state in page:
next_cursor is absent on the last page. Branch on has_more, not on the presence of the cursor, and never construct a cursor yourself. See Pagination. Every refusal, at every status, uses the error envelope instead.

Identifiers

IDs are opaque strings with a type prefix, such as prod_01J8Z... or order_01J8Z.... Treat them as opaque. The prefix is useful when reading a log, but do not parse an ID to infer a type, a tenant, or a creation time, and do not assume a length.

Timestamps

RFC 3339, in UTC:

Money

Every monetary value is an integer in the currency’s minor unit, paired with a currency code. There are no decimals anywhere in this API. 1999 with "usd" is 19.99 USD. This is the single most common source of a wrong number in a new integration, so read Money before you send an amount.

Unknown fields are refused, not ignored

If you send a body key or a query parameter this API does not define, the request is refused with 400. It is not silently dropped. This is deliberate. A typo that is ignored looks like a working integration until someone notices the field never took effect, and by then it has been wrong in production for weeks. Being refused at the first call is the cheaper failure. See Query parameters.

What you can reach

Your key reaches your own store only. There is no cross-tenant read on this API at any scope, and tenant isolation is enforced in the database rather than in the handler, so it does not depend on a route remembering to filter.

Scopes are per capability, not per key tier

There is no “read-only key” versus “full-access key” distinction. A key holds an explicit set of scopes, and read, write and delete are three separate grants on each resource family. See Scopes.