answer.text · answer.markdown · answer.blocksClaude’s answer normalized to the same shape as every other surface — one parser reads ChatGPT, Perplexity and Claude alike.
evidence.sources[].quoteClaude exposes verbatim cited_text — the exact snippet it quoted from a source. We carry it through as sources[].quote, provenance-grade data most pipelines drop.
evidence.sources[]Cited and retrieved sources with roles, cited booleans and charRanges into the answer.
provenance.fidelity = "api_surrogate"The honesty stamp: this capture came from the official model API, not the consumer UI. When the browser lane ships, its captures will say consumer_ui — you can always tell them apart.
provenance.modelVerified providerId with inferred:false and high confidence — an official API capture knows exactly which model answered.
job.artifacts.rawKeyThe verbatim upstream API payload retained durably in R2 — diffable and auditable later.
Envelope excerpt — claude
{
"job": {
"id": "job_2d71e9bc.claude.official-api.US",
"surface": "claude",
"method": "official-api",
"status": "completed",
"warnings": [],
"artifacts": { "rawKey": "raw/2026/06/30/job_2d71e9bc.json",
"screenshotKey": null, "proofHtmlKey": null }
},
"provenance": {
"acquisition": "official-api",
"official": true,
"fidelity": "api_surrogate",
"model": { "providerId": "claude-sonnet-4-5", "inferred": false,
"confidence": 0.99 },
"webSearch": { "enabled": true, "known": true },
"surfacePresent": true,
"requestedRoute": "auto",
"actualRoute": "official-api"
},
"answer": { "text": "…", "markdown": "…", "blocks": [ … ] },
"evidence": {
"sources": [
{ "id": 0, "url": "https://…", "title": "…", "role": "cited",
"cited": true, "charRanges": [[0, 58]],
"quote": "verbatim snippet Claude cited from this source" }
],
"fanOut": { "provenance": "observed", "queries": ["…"] }
}
}