The basics
All requests go to one base URL, over HTTPS:| Header | Value | Notes |
|---|---|---|
Authorization | Your API key | See Authentication. |
Quo-Api-Version | 2026-03-30 | Required; there is no default. See Versioning. |
Content-Type | application/json | Only when sending a request body. |
Response envelopes
Every successful response wraps its payload indata. The shape of data tells you what you got:
A single resource
A list
nextCursor out of your data, and it lets responses gain new top-level fields without disturbing your parsing. Which leads to the standing rule: ignore fields you don’t recognize. New optional fields are the one kind of change that ships without a version bump.
Identifiers
Ids are strings with a short resource prefix. A user id starts withUS, and other resources follow the same scheme. The prefix makes logs and error messages easier to read.
Beyond reading the prefix, treat every id as opaque: don’t parse them, don’t assume a length, and don’t build anything that depends on their internal structure. They are stable identifiers, not data.
Timestamps
All timestamps are ISO 8601 strings in UTC:Pagination
Lists are cursor-paginated. Two query parameters in, one field out:| Parameter | Type | Behavior |
|---|---|---|
limit | integer, 1–50 | Items per page. Defaults to 10. |
after | string | The nextCursor from your previous page. Omit it for page one. |
nextCursor comes back null:
When something goes wrong
Failed requests return a structured error that names the field at fault and can include atrace id for support. That contract has its own page.