cURL
Base URL and spec
Agents and code generators should fetch the spec directly; the generated endpoint pages alongside this one are rendered from it.
Authentication
SendAuthorization: Bearer $CAESAR_API_KEY on API calls. A missing or bad key returns 401 and the request does not proceed unauthenticated. See Authentication.
Conventions
The
access and usage blocks look like this:
Endpoints
The SDKs and CLI wrap these exact endpoints — same fields, same semantics. The remote MCP server exposes the search and document endpoints as its
web_search and web_fetch tools; feedback and file operations are REST/SDK/CLI-only.
Rate limits
Every response carries three headers:X-RateLimit-Limit-RPS, X-RateLimit-Remaining, and X-RateLimit-Reset (RFC3339). Exceeding your per-second limit returns 429 rate_limited. There is no Retry-After header — wait until X-RateLimit-Reset or back off exponentially. Details in Rate limits.
Errors
All errors share one envelope:type is the literal string "error", plus request_id and an error object with a stable snake_case code, a human-readable message, and optional details.
error.code, not message. The full code table is in Errors.
Idempotency and caching
All three endpoints are POST and there is no idempotency key. Repeating an identical search is not guaranteed to return identical results: ordering, scores, andsearch_id values can differ between replays. score.value is response-local — comparable only within the response that returned it, never across responses or ranker versions. Treat each response as a snapshot, and use doc_id plus provenance when you need reusable references.