GraphiteGraphite by Augsidius
Using the API

Errors

Errors use a consistent shape and standard HTTP status codes.

JSON
{
  "error": {
    "type": "invalid_request_error",
    "code": "scope_denied",
    "message": "This key does not have the agents:triage scope.",
    "param": null,
    "request_id": "req_18c…"
  }
}
HTTP code What happened What to do
400 invalid_request Malformed body or a field failed validation (param says which) Fix the request
400 schema_violation Structured input does not match the documented schema Check the model page
400 context_unresolved Required context could not be matched to clinical concepts Rephrase or send concept ids
400 context_length_exceeded Input longer than the model's input limit Shorten or summarise the input
401 invalid_api_key Missing, unknown, revoked or expired key Check the key; create a new one if needed
403 scope_denied Key lacks the scope for this model Add the scope to the key in Graphite
403 scope_not_in_plan Your plan does not include this model Upgrade in Graphite → Billing
403 environment_mismatch Sandbox key on production data or vice versa Use the right key
403 key_suspended Key suspended by Augsidius (e.g. unpaid invoice, abuse) Contact support
403 ip_not_allowed Request IP is not on the key's allowlist Update the allowlist
404 model_not_found Unknown model id See GET /v1/models
404 not_found Unknown session or resource Check the id; sessions expire after 6 h idle
404 session_not_found Care-model session_id unknown, expired or from another project Start a new session (omit session_id)
409 idempotency_conflict Same Idempotency-Key with a different body Use a new key
413 payload_too_large Body over 256 KB Split the input
429 rate_limited Too many requests per minute Back off; see x-ratelimit-reset-requests
429 exposure_limit Daily clinical-item limit for this key reached Wait until 00:00 UTC or contact support
429 quota_exceeded Monthly units used up on a plan without overage, or a hard spend cap reached Upgrade or raise the cap
501 not_available Model is documented but not launched yet Watch the Changelog
503 upstream_unavailable A component is temporarily unavailable Retry with backoff

Retrying

Retry 429 and 5xx with exponential backoff and jitter (for example 1 s, 2 s, 4 s, 8 s, max 5 attempts). Use an Idempotency-Key so retries are never billed twice. Do not retry 400, 401, 403 or 404 without changing the request.

Errors during a stream

Once a stream has started, failures arrive as an error event at the end of the stream instead of an HTTP status. See Streaming & formats.

Declining is not an error

When aug-evidence-qa declines a question it returns 200 with message.refusal (see Refusals). When the evidence does not cover a question, the answer says so. Text that cannot be matched to a concept comes back with concept: null. None of these are errors.