Skip to main content
The Humanos API uses conventional HTTP status codes: 2xx for success, 4xx for problems with the request, and 5xx for problems on our side. Error responses are JSON.

Status codes

Validation errors (400)

Validation failures return a message array with one entry per failing field. Each entry names the field, echoes the offending value, and lists the violated constraints:
Two behaviours worth knowing:
  • Unknown fields are rejected. The API whitelists the documented fields for each endpoint; sending anything else fails the request rather than being silently dropped. This catches typos (phonenumber vs phoneNumber) at the door.
  • Nested objects report through children. When a nested field fails, the parent entry’s children array carries the nested validation errors — each naming the inner field under a property key, with its own constraints (and deeper children if the nesting continues).

Authentication errors (401)

401 responses carry a short message identifying which layer failed:
Work through the layers in order: is the Authorization: Bearer <api-key> header present and correct → is the signature computed over the exact raw body with the right secret → is the timestamp fresh. The SDK signs every request automatically, which eliminates the most common cause.

Handling guidance

  • Don’t retry 400/401/403 — the request will fail the same way until you change it.
  • Treat 404 as “not visible to me”, not proof of non-existence.
  • Retry 429 after backing off — the window is one minute, so a short exponential backoff clears it. See Rate limits.
  • Retry 5xx GETs with backoff. For mutating calls, check state first (e.g. GET /request/{id}) before re-sending, so you don’t create duplicates.