Skip to main content
Search results can drift: URLs change, snippets age, and the source an agent saw may not match what a human opens later. Caesar returns source identity and capture metadata so a citation can point at content that can be verified later. A glass orb holding layered documents, punched-card textures, botanical shadows, and orbiting provenance paths.
cURL
The result, trimmed and annotated:

The identifiers

All identifiers are plain UUIDs. The content identifiers — doc_id, capture_id, and passage_id — are derived deterministically, so the same input produces the same ID. search_id and request_id are minted fresh for every response.

Identity vs. response-local

Identity persists across reads; ranking is response-local. Treat them differently:
  • Safe to store and cite: doc_id, canonical_url, capture_id, capture_time, passage_id (valid until the content changes), content_digest, and search_id (for feedback).
  • Never store as facts: rank and score.value. The ranking.score_scope field is always "response_local" — scores compare results within one response only, never across responses or ranker versions. score is present only when the second-stage reranker scored the result; when reranking is unavailable and results fall back to first-stage order, it is absent.
Replayed searches may be served from cache. Deterministic ordering, identical scores, and identical search_id values across repeated identical queries are not guaranteed. If you need to refer back to a specific result set, keep the search_id from the response you actually received.

canonical_url vs. source_url

Both exist because deduplication and citation pull in different directions. canonical_url is the normalized representative URL and the input to doc_id: scheme defaults to https, scheme and host are lowercased, the fragment is stripped, tracking parameters (utm_*, fbclid, gclid, msclkid) are removed, and the trailing slash is trimmed except at the root. Two URLs that differ only in tracking noise are the same document with the same doc_id. source_url is the URL as actually provided or captured — use it when you need the link that was really fetched.

Timestamps and content_digest

The metadata block on search results carries the document’s observation history. All values are RFC3339 strings. content_digest is the drift detector: store it alongside anything you cite, and compare it on the next read. A changed digest means the content changed and any claims built on the old capture need re-verification.

The provenance object

provenance is exactly two fields:
Where it appears differs by endpoint:
  • On /v1/search results, provenance is returned only at response.verbosity: "full" (see response shaping). The default standard verbosity omits it.
  • On /v1/document, provenance is always present when a capture exists — it names the capture the returned content actually came from.

Search, read, cite

The IDs connect search results to full-document reads. This runs with CAESAR_API_KEY:
cURL
If you send feedback later, use the search_id, doc_id, and passage_id from the response you actually used.

Why this matters for agents

  • Cite what you actually read. A bare URL cites whatever the page serves at click time. Citing doc_id plus capture_id and capture_time from the /v1/document provenance block pins the claim to the content the agent really consumed.
  • Keep continuation reads honest. When reading a long document in ranges, pin the capture with content.range.capture_id. If a newer capture has replaced it, the response carries a stale_range warning instead of silently serving misaligned offsets. See documents for the continuation loop.
  • Detect content drift. Compare content_digest between reads. Same digest, same content — earlier conclusions still hold. Different digest, re-read before repeating a claim.
  • Tolerate stale passage IDs. Requesting a passage_id that no longer exists in the latest capture does not fail: /v1/document returns the passages that are still available plus a stale_passage_id warning naming the missing ones.

Next

  • Search — ranking and where source IDs are returned
  • Documents — the read loop, capture freshness, and range reads
  • Quickstart — search and read in two minutes