Skip to main content
Tolmo signals failure with the HTTP status code. Any response outside the 2xx range carries a JSON body describing what went wrong.

Error shape

Branch on statusCode, and on code where an endpoint documents one. Treat message as text for a human — it is written to be read, and its wording may change.

Status codes

404 versus 403

Tolmo returns 404 rather than 403 for a resource in an organization your token cannot access. This is deliberate: a 403 would confirm that the resource exists, which leaks information across organization boundaries. So a 404 means one of two things, and the API will not tell you which:
  • the id is wrong, or
  • the resource belongs to an organization you cannot see.
Check the org slug in your path before assuming the id is bad. Within an organization you can see, 403 behaves normally — it means your role is insufficient for this operation. Creating a finding as a published one with an ordinary member token returns 403; creating it as a draft succeeds.

Retrying

Retry 503, and 429 if you receive one, with exponential backoff. Do not blindly retry 400, 401, 403, or 404 — none of them will succeed on a second identical attempt. Writes are not automatically idempotent. If a write times out and you cannot tell whether it landed, re-read the resource before sending it again rather than risking a duplicate.

Validation errors

Request validation runs from the same schemas that generate this reference, so a 400 almost always means the request disagrees with a documented parameter or body schema. Validation failures carry an extra validation array alongside the usual fields — one entry per offending field, so you can report every problem at once instead of fixing them one request at a time:
instancePath points at the field, keyword is the validation rule it broke, and params carries that rule’s bounds. Check the endpoint’s parameter table for each field’s type and limits.