Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.esheria.ai/llms.txt

Use this file to discover all available pages before exploring further.

All errors use the normal API envelope.
{
  "status": "error",
  "data": null,
  "errors": [
    {
      "code": "unauthorized",
      "message": "Invalid API key"
    }
  ],
  "trace_id": "..."
}

Common Codes

CodeHTTP statusMeaningRecovery
unauthorized401Missing or invalid API keyCheck x-api-key, rotate exposed credentials
validation_error422Request payload or parameters do not match the schemaCompare with the API Reference and examples
idempotency_key_required400Mutating request omitted idempotency-keySend a unique key for the request intent
idempotency_key_conflict409Same idempotency key reused with a different payloadUse a new key or replay the original request
unsupported_capability400 or 422Pack exists but does not support the requested workflowUse another workflow or pack
deprecated_api_route410Caller used a non-regulatory route outside the public contractMove to the Regulatory Pack API surface
not_ready503Runtime dependencies are missing or unhealthyCheck /readyz and retry after operators resolve readiness

Client Pattern

import httpx

try:
    response = httpx.get(
        f"{base_url}/api/v1/domain-packs",
        headers={"x-api-key": api_key},
        timeout=30,
    )
    response.raise_for_status()
except httpx.HTTPStatusError as exc:
    payload = exc.response.json()
    trace_id = payload.get("trace_id")
    errors = payload.get("errors", [])
    raise RuntimeError(f"Esheria API error trace_id={trace_id} errors={errors}") from exc

Support Checklist

When escalating an issue, include:
  • endpoint and method
  • timestamp
  • trace_id
  • HTTP status
  • first error code and message
  • sanitized request shape
Do not include API keys or personal data unless your support channel explicitly requires and protects it.