Read a recheck created by schedule_recheck. Before it runs: its status and run_at. Once it has run: per prompt and per engine, before (the baseline audit) vs after (the recheck) — which prompts the brand gained or lost a citation on (its URL among the answer's sources) and gained or lost a mention on (named in the answer).
Billing: free — reads stored results only; asks no engine and works at a zero balance.
When to call: when the user asks whether their fixes worked, or once a recheck's run_at has passed. Pass recheck_id for one recheck; without it, pass site_id or domain to list that site's rechecks, or nothing to list the workspace's.
Status: scheduled (waiting for run_at) | queued | running | complete | failed | paused (its site was archived before it ran — it won't run; schedule a new one).
Returns for one recheck: { recheck_id, status, headline, site_id, domain, brand, label, scheduled_at, run_at, ran_at, prompts, engines, baseline: {audit_id, completed_at} | null, audit_id, report_url, audit_url, failure_reason, out_of_credits, answered, attempted, total, charged_cents, charged_breakdown_cents: {checks, playbook}, summary: {compared_cells, cited_before, cited_after, mentioned_before, mentioned_after, citation_gained: [{prompt, engine}], citation_lost, mention_gained, mention_lost, no_baseline}, results: [{prompt, engines: [{engine, before: {cited, mentioned} | null, after, after_error, citation, mention}]}] }. citation and mention are gained | lost | kept | still_missing, or null when either side has no answer. summary counts cover cells answered in both runs. headline is a one-line verdict to relay to the user.
Returns for a list: { rechecks: [{recheck_id, status, site_id, domain, label, scheduled_at, run_at, ran_at, prompt_count, engines, audit_id}] }.
Example: { recheck_id: "…" }