FOR DEVELOPERS AND ARCHIVES

Put evidence-first identification triage inside your own catalogue.

One POST returns the whole dossier: typed claims, the source behind each one, what contradicted it, which citations failed a live re-check, and the deterministic gate that refused or allowed a verdict.

No signup, no email, no sales call. Mint a key below, run a real call from this page, then copy the snippet into your own code. The site itself has no privileged path: every button on this product calls these same endpoints.

STEP ONE

Mint a key.

No key yet.

The key is signed, not stored. It carries its own tier and expiry, verifies on every Cloud Run instance, and survives restarts, so it cannot 401 because you happened to reach a different instance than the one that minted it. Nothing server-side can list or recover it, so copy it now. Rotating the signing pepper invalidates every outstanding key at once.

STEP TWO

Run it live, right here.

This is a real request against the live service with your real key. The response below is not a recording.

Ready.
The response will appear here.

STEP THREE

Copy it into your own code.


      

The snippet updates with the endpoint you selected above and embeds your minted key.

REFERENCE

The whole surface.

Full OpenAPI at /openapi.json, browsable at /docs.
EndpointKeyWhat it does
POST /v1/keysNoneMint a key. {"tier":"judge"} needs no email.
GET /healthNoneLiveness.
GET /health/integrationsNoneWhether Vertex AI and Parallel are genuinely reachable right now.
GET /v1/stackNoneEvery sponsor service, the function that calls it, and its live status.
GET /v1/presetsNoneThe ten demo fragments with tier, required behaviour and hashes.
GET /v1/presets/{id}/mediaNoneWatch or download a fragment. Range requests supported. Held-out cases return 423.
GET /v1/eval/corpusNoneBenchmark composition and whether the holdout has been opened.
GET /v1/eval/manifestNoneThe unedited manifest as a download.
POST /v1/identifyBearerInvestigate a demo fragment. depth: "deep" adds independent falsification per candidate.
POST /v1/investigateBearerInvestigate your own file. multipart/form-data, 48 MB.
POST /v1/watchBearerLeave a standing Parallel Monitor on a fragment that could not be identified.
GET /v1/eval/latestBearerThe frozen held-out report, once it exists.

THE CONTRACT

What you can rely on.

An abstention is a 200

“I could not identify this” is a correct, useful answer, not an error. Check meta.verdict, which is one of probable, candidates or abstain. The API can never return a confirmed identity: human_approved is a gate threshold only an archivist can satisfy, outside this API.

Errors say how to fix themselves

Every failure returns {ok:false, error:{code, message, fix, docs}} with a stable machine-readable code. A missing partner credential is a 503, never a degraded guess: this service will stop before it answers from model memory.

Provenance is in the payload

Each source carries verified (the excerpt matched what Parallel returned) and live_verified (the quotation is still on the page today). A source that fails either is shown to you and refused by the gate. evidence.rejected_citations lists everything discarded and why.

Limits, stated honestly

2,000 calls a day for a judge key, 500 for an evaluation key. That counter lives in each instance's memory, so with several instances the real ceiling is higher, and we would rather say that than imply a distributed quota we do not have. Investigations took 61 to 444 seconds (median 304) across 27 runs, with one 95-minute outlier; nothing is queued or cached, so every call pays that in full. The full distribution is at /v1/eval/stability.