API Reference
Errors
Status codes and the JSON error shape returned by every endpoint.
Errors use one consistent JSON shape across every endpoint:
{
"status": "INVALID_ARGUMENT",
"message": "Entry values do not match the collection schema",
"details": {
"issues": ["Title is required"]
}
}| Property | Type | Description |
|---|---|---|
status | string | Machine-readable error code, such as INVALID_ARGUMENT. |
message | string | Human-readable explanation. Do not match on this text. |
details | object | Extra context. Present only when more information is available. |
Status codes
| HTTP status | Meaning |
|---|---|
400 | Invalid path, query parameter, body, field ID, or field value |
401 | Missing, malformed, or revoked API token |
404 | The resource does not exist in the account the token belongs to |
405 | The endpoint does not support that HTTP method |
409 | A conflicting resource already exists, such as a duplicate name |
429 | The account exceeded the endpoint's rate limit |
500 | Unexpected server error |
Requests are strict
Request bodies and list query parameters reject unknown properties instead of
ignoring them. A typo in a property name returns 400 rather than silently
doing nothing — so a successful response means everything you sent was
understood.
Deleted resources return 404
Deletion is soft: the resource is returned once with status: "deleted", and
every later request for it returns 404. There is no way to read or restore a
deleted collection or entry through the API.
Handling errors
Retry 429 and 5xx
Back off and retry. For 429, wait until the rate limit
window resets rather than retrying immediately.
Do not retry 4xx
A 400, 401, 404, 405, or 409 will fail again in exactly the same
way. Fix the request or the token.
Log the status field
status is stable; message is written for humans and may change. Branch
on status and log details for debugging.