Preview docs. Hallucination Guard is the only live endpoint today.
The rest of the API surface ships through the rest of 2026. Join the waitlist to be first in line and shape what we build first.
Getting started
Error reference
Every error response is a JSON object with a stable type field. Branch on type, not on code or message.
Response shape
JSON
{
"tk-key">"error": {
"tk-key">"type": "invalid_request",
"tk-key">"message": "sources must be a non-empty array",
"tk-key">"detail": { "tk-key">"field": "sources" },
"tk-key">"request_id": "req_8c3..."
}
}Codes
| HTTP | type | Meaning |
|---|---|---|
| 400 | invalid_request | Body validation failed. The error.detail field names which parameter is wrong. |
| 401 | missing_auth | Authorization header missing or malformed. Send Bearer <key>. |
| 401 | invalid_key | Key was rejected. Likely revoked, rotated, or never existed. |
| 403 | feature_not_in_plan | Key is valid but your tier doesn't include this endpoint. Upgrade or use a different endpoint. |
| 403 | key_environment_mismatch | Test key sent to a live endpoint or vice versa. Use the right key for the env. |
| 404 | resource_not_found | An ID you referenced (profile_id, schema_id, transcript_id) doesn't exist for your project. |
| 409 | conflict | Concurrent write to the same resource. Retry with the latest version. |
| 422 | domain_unsupported | Hallucination Guard: domain isn't one of legal / financial / insurance / healthcare. |
| 422 | schema_validation_failed | Calculator Engine: schema has cycles, missing line refs, or invalid formulas. |
| 429 | rate_limit_exceeded | Burst or monthly cap hit. Honour Retry-After. See /docs/rate-limits. |
| 500 | internal_error | Server-side fault. Idempotent retries are safe; the error.request_id helps support diagnose. |
| 502 | upstream_unavailable | A model or data provider behind the API is unavailable. Retry with backoff. |
| 504 | timeout | Request didn't complete inside the time budget. Retry; see endpoint-specific timeout guidance. |
Retry guidance
5xx errors and rate_limit_exceeded are safe to retry with exponential backoff. 4xx errors other than 429 should not be retried. Fix the request first.