Skip to main content
The playground and raw API calls require an API key. Sign up in the Caesar app, create a key, and try it now:
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

Send Authorization: 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.
Branch on 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, and search_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.