The HTTP API
Public sample scans, authenticated access to your sites, and the private AX Rush engine. Use HTTP from your application or CI with the same capabilities available through MCP.
The public API
No authentication and no account. Described by an OpenAPI 3.1 specification the site serves about itself; a test holds that specification against the routes that exist on disk, so what it promises is what runs.
Read the OpenAPI specification
POST /api/v1/scan
Measure a domain
Runs the checks against the site's home page and returns the score, the grade and every finding. Rate limited per caller and per target, because a scan sends real requests to somebody else's server.
curl -X POST https://axrush.com/api/v1/scan \
-H "content-type: application/json" \
-d '{"domain":"example.com"}'GET /api/v1/report/{host}
Read a stored report
Returns the most recent public measurement without scanning again. Sends no traffic to the measured site and is not rate limited.
curl https://axrush.com/api/v1/report/example.com
GET /api/v1/agent-tasks/{host}
Read published agent task replays
Returns what an agent was asked to do on a site, whether it could, and what it reported. Only the runs the site's owner chose to publish are visible.
curl https://axrush.com/api/v1/agent-tasks/example.com
POST /api/v1/channel
Read a public YouTube channel
Reads a YouTube channel by handle or URL through the platform's public API and returns 8 verdicts rather than a score: identity, about, contact, hub, keywords, captions, chapters, naming. Checks that need a declared identity come back not applicable. Nothing is stored. Rate limited per caller and per account, because the read spends a shared API quota.
curl -X POST https://axrush.com/api/v1/channel \
-H "content-type: application/json" \
-d '{"handle":"@midudev"}'Your sites, authenticated
Authenticated endpoints cover websites, social identities, exact channels, context and Answers. Each operation checks its own permissions, role, plan and revisions. Reading saved results never starts a paid execution.
Every endpoint below takes an organization API key as a bearer token and is part of the paid plan. Sign in, then create keys on your account page
Every request carries the key as a bearer token:
curl -H "authorization: Bearer axr_..." \ https://axrush.com/api/v1/me/sites
GET /api/v1/me/sites/{id}/ai-executions: Read saved AI execution metadata: context policy and revision, model usage and outcome. No prompts or context values are returned. Requires the subject’s explicit context-read permission.GET /api/v1/me/social-identities/{id}/ai-executions: Read saved AI execution metadata: context policy and revision, model usage and outcome. No prompts or context values are returned. Requires the subject’s explicit context-read permission.GET /api/v1/me/social-identities: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-identities/{id}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-channels/{id}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-channels/{id}/connection: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-channels/{id}/connection/options: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-channels/{id}/connection/selection: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-channels/{id}/connection/cancel: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-identities: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.PATCH /api/v1/me/social-identities/{id}/kind: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.PUT /api/v1/me/social-identities/{id}/site: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.DELETE /api/v1/me/social-identities/{id}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-identities/{id}/channels: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.PATCH /api/v1/me/social-channels/{id}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.DELETE /api/v1/me/social-channels/{id}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.PATCH /api/v1/me/social-channels/{id}/watching: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-channels/{id}/readings: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-readings/{id}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-channels/{id}/readings: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-channels/{id}/documents: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-channels/{id}/verifications: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-channels/{id}/verifications: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-identities/{id}/rivals: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.DELETE /api/v1/me/social-identities/{id}/rivals/{rivalId}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-identities/{id}/rivals: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-channels/{id}/disconnect: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-removals/{id}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-identities/{id}/alerts/rules: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.PUT /api/v1/me/social-identities/{id}/alerts/rules: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.DELETE /api/v1/me/social-identities/{id}/alerts/rules/{ruleId}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-identities/{id}/alerts/rules/{ruleId}/secret: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-identities/{id}/answers/questions: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.PUT /api/v1/me/social-identities/{id}/answers/questions: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-identities/{id}/answers/settings: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.PATCH /api/v1/me/social-identities/{id}/answers/settings: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-identities/{id}/answers/options: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-identities/{id}/answers/passes: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-identities/{id}/answers/gift: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.POST /api/v1/me/social-identities/{id}/answers/suggestions: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-identities/{id}/answers/suggestions/{suggestionId}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-identities/{id}/answers: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/social-identities/{id}/answers/passes/{passId}: Every operation checks your current role, channel coverage, revisions and consent. These permissions do not grant website or GitHub access, buy a plan or publish content.GET /api/v1/me/sites/{id}/artifacts/options: Inspect generation options, then explicitly confirm scope, AI use and replacement to reserve a durable operation. Follow its status and paginated history. Saved-file reads withhold stale or unknown bodies. Requires artifact read/write consent for OAuth; generation never publishes a site.POST /api/v1/me/sites/{id}/artifacts/generations: Inspect generation options, then explicitly confirm scope, AI use and replacement to reserve a durable operation. Follow its status and paginated history. Saved-file reads withhold stale or unknown bodies. Requires artifact read/write consent for OAuth; generation never publishes a site.GET /api/v1/me/sites/{id}/artifacts/generations/{operationId}: Inspect generation options, then explicitly confirm scope, AI use and replacement to reserve a durable operation. Follow its status and paginated history. Saved-file reads withhold stale or unknown bodies. Requires artifact read/write consent for OAuth; generation never publishes a site.GET /api/v1/me/sites/{id}/artifacts/generations: Inspect generation options, then explicitly confirm scope, AI use and replacement to reserve a durable operation. Follow its status and paginated history. Saved-file reads withhold stale or unknown bodies. Requires artifact read/write consent for OAuth; generation never publishes a site.GET /api/v1/me/sites/{id}/artifacts: Inspect generation options, then explicitly confirm scope, AI use and replacement to reserve a durable operation. Follow its status and paginated history. Saved-file reads withhold stale or unknown bodies. Requires artifact read/write consent for OAuth; generation never publishes a site.GET /api/v1/me/sites/{id}/artifacts/{kind}: Inspect generation options, then explicitly confirm scope, AI use and replacement to reserve a durable operation. Follow its status and paginated history. Saved-file reads withhold stale or unknown bodies. Requires artifact read/write consent for OAuth; generation never publishes a site.POST /api/v1/me/sites/{id}/remediations/markdown-drafts: Generate a paid homepage Markdown draft from public context and verified source evidence, or read its saved result. Review and confirm public content before preparing a PR.GET /api/v1/me/sites/{id}/remediations/markdown-drafts: Generate a paid homepage Markdown draft from public context and verified source evidence, or read its saved result. Review and confirm public content before preparing a PR.POST /api/v1/me/sites/{id}/remediations/{operationId}/verify: Read private corrections and exact diffs. Write access prepares and approves supported recipes; security.txt needs security consent and Content Negotiation needs source consent and confirmed public Markdown. A draft PR requires exact-manifest approval, owner/admin role, paid website coverage and repository access. Separate verify consent enables bounded post-merge public-content checks and a fresh indicator review, without changing original/global scores or proving deployment or CI. Approve verifyAfterMerge is optional and false by default. No AI, merge or deployment is included.GET /api/v1/me/sites/{id}/remediations: Read private corrections and exact diffs. Write access prepares and approves supported recipes; security.txt needs security consent and Content Negotiation needs source consent and confirmed public Markdown. A draft PR requires exact-manifest approval, owner/admin role, paid website coverage and repository access. Separate verify consent enables bounded post-merge public-content checks and a fresh indicator review, without changing original/global scores or proving deployment or CI. Approve verifyAfterMerge is optional and false by default. No AI, merge or deployment is included.GET /api/v1/me/sites/{id}/remediations/{operationId}: Read private corrections and exact diffs. Write access prepares and approves supported recipes; security.txt needs security consent and Content Negotiation needs source consent and confirmed public Markdown. A draft PR requires exact-manifest approval, owner/admin role, paid website coverage and repository access. Separate verify consent enables bounded post-merge public-content checks and a fresh indicator review, without changing original/global scores or proving deployment or CI. Approve verifyAfterMerge is optional and false by default. No AI, merge or deployment is included.POST /api/v1/me/sites/{id}/remediations/inputs: Read private corrections and exact diffs. Write access prepares and approves supported recipes; security.txt needs security consent and Content Negotiation needs source consent and confirmed public Markdown. A draft PR requires exact-manifest approval, owner/admin role, paid website coverage and repository access. Separate verify consent enables bounded post-merge public-content checks and a fresh indicator review, without changing original/global scores or proving deployment or CI. Approve verifyAfterMerge is optional and false by default. No AI, merge or deployment is included.POST /api/v1/me/sites/{id}/remediations: Read private corrections and exact diffs. Write access prepares and approves supported recipes; security.txt needs security consent and Content Negotiation needs source consent and confirmed public Markdown. A draft PR requires exact-manifest approval, owner/admin role, paid website coverage and repository access. Separate verify consent enables bounded post-merge public-content checks and a fresh indicator review, without changing original/global scores or proving deployment or CI. Approve verifyAfterMerge is optional and false by default. No AI, merge or deployment is included.POST /api/v1/me/sites/{id}/remediations/{operationId}/approve: Read private corrections and exact diffs. Write access prepares and approves supported recipes; security.txt needs security consent and Content Negotiation needs source consent and confirmed public Markdown. A draft PR requires exact-manifest approval, owner/admin role, paid website coverage and repository access. Separate verify consent enables bounded post-merge public-content checks and a fresh indicator review, without changing original/global scores or proving deployment or CI. Approve verifyAfterMerge is optional and false by default. No AI, merge or deployment is included.POST /api/v1/me/sites/{id}/remediations/{operationId}/cancel: Read private corrections and exact diffs. Write access prepares and approves supported recipes; security.txt needs security consent and Content Negotiation needs source consent and confirmed public Markdown. A draft PR requires exact-manifest approval, owner/admin role, paid website coverage and repository access. Separate verify consent enables bounded post-merge public-content checks and a fresh indicator review, without changing original/global scores or proving deployment or CI. Approve verifyAfterMerge is optional and false by default. No AI, merge or deployment is included.POST /api/v1/me/sites/{id}/remediations/{operationId}/retry: Read private corrections and exact diffs. Write access prepares and approves supported recipes; security.txt needs security consent and Content Negotiation needs source consent and confirmed public Markdown. A draft PR requires exact-manifest approval, owner/admin role, paid website coverage and repository access. Separate verify consent enables bounded post-merge public-content checks and a fresh indicator review, without changing original/global scores or proving deployment or CI. Approve verifyAfterMerge is optional and false by default. No AI, merge or deployment is included.GET /api/v1/me/integrations: Read connected accounts and authorized repository pages, or read, link and unlink a site repository at expectedRevision. Owner/admin authorization is required. Connecting a repository does not edit source code, create pull requests or publish a site.GET /api/v1/me/integrations/{id}/repositories: Read connected accounts and authorized repository pages, or read, link and unlink a site repository at expectedRevision. Owner/admin authorization is required. Connecting a repository does not edit source code, create pull requests or publish a site.GET /api/v1/me/sites/{id}/repository: Read connected accounts and authorized repository pages, or read, link and unlink a site repository at expectedRevision. Owner/admin authorization is required. Connecting a repository does not edit source code, create pull requests or publish a site.PUT /api/v1/me/sites/{id}/repository: Read connected accounts and authorized repository pages, or read, link and unlink a site repository at expectedRevision. Owner/admin authorization is required. Connecting a repository does not edit source code, create pull requests or publish a site.DELETE /api/v1/me/sites/{id}/repository: Read connected accounts and authorized repository pages, or read, link and unlink a site repository at expectedRevision. Owner/admin authorization is required. Connecting a repository does not edit source code, create pull requests or publish a site.GET /api/v1/me/sites/{id}/context: Read private context, provenance, revisions, usage and automation, even before the first scan.GET /api/v1/me/sites/{id}/context/jobs: Read research activity in pages of five. Pass the returned older or newer cursor with its direction.GET /api/v1/me/sites/{id}/context/jobs/{jobId}: Read a real context job and its proposal or source comparison. Poll no more than once every five seconds.PATCH /api/v1/me/sites/{id}/context: Save the complete context document at its current revision. Preserve unchanged fields.POST /api/v1/me/sites/{id}/context/jobs: Start paid AI research or a source comparison. Reuse requestId only to retry the same request. Plan limits apply.POST /api/v1/me/sites/{id}/context/proposal: Accept selected proposal fields at the expected revision. This does not edit the website.PATCH /api/v1/me/sites/{id}/context/preferences: Change field protection or visibility at the current revision. Publishing a field requires explicit user intent.PATCH /api/v1/me/sites/{id}/context/policy: Configure cadence, auto-acceptance and budget. Owner/admin only; enabled automation requires paid coverage.GET /api/v1/me/social-identities/{id}/context: Read private brand or creator identity, topics, audience, business facts, field provenance, privacy, revision, automation and usage. Works before a first channel reading. Requires the separate social-context read grant.GET /api/v1/me/social-identities/{id}/context/jobs: Read five social identity research or comparison jobs with stable pagination. Returns evidence excerpts and source metadata, never raw model output or source bodies.GET /api/v1/me/social-identities/{id}/context/jobs/{jobId}: Read the real status, proposal, evidence or findings of one social identity context job. Poll no faster than every five seconds and stop when ready, failed or cancelled.PATCH /api/v1/me/social-identities/{id}/context: Replace the social identity context at expectedRevision. Preserve unrequested fields. Corrections become protected. Legacy social declarations are projections of this document; historical channel checks and answers remain unchanged.POST /api/v1/me/social-identities/{id}/context/jobs: Start paid research from current supported channel readings and an optional linked public hub, or compare that evidence and independent agent answers with context. Requires active paid channel coverage. Use a unique requestId, reused only for retries. Budgets, cooldown and a single active job apply. Returns a jobId, not a finished result.POST /api/v1/me/social-identities/{id}/context/proposal: Apply explicitly selected fields from a ready social identity research proposal at expectedRevision after reviewing evidence and conflicts. Requires active paid channel coverage and current sources. Does not publish to a channel or change measured answers.PATCH /api/v1/me/social-identities/{id}/context/preferences: Change protection and public/private visibility of a social identity context field at expectedRevision. Private is the default. Make public only when the user explicitly requests it.PATCH /api/v1/me/social-identities/{id}/context/policy: Configure social identity research cadence, budget, automatic acceptance and answer comparisons at the policy expectedRevision. Owner/admin only. Enabling requires active paid channel coverage and social-context run scope. Obtain the intended schedule and budget before enabling.GET /api/v1/me/sites: your sites with their latest and previous scores; add limit or offset to paginateGET /api/v1/me/sites/{id}/report: the latest full report for one site, pages includedGET /api/v1/me/sites/{id}/history: finished scans, newest first, with engine versions and nextOffset; returns 100 by default for existing integrationsPOST /api/v1/me/sites/{id}/scan: queues a scan of your own site and returns its id at onceGET /api/v1/me/scans/{id}: polls one scan until it settles; queued and running include pollAfterSeconds, succeeded carries the full reportGET /api/v1/me/sites/{id}/fixes: the open work on one site, ordered by the points each fix returnsGET /api/v1/me/sites/{id}/fixes/{checkId}: every finding behind one check, its guide, and the whole fix as one prose blockGET /api/v1/me/sites/{id}/compare: compares the latest two finished scans, or the pair selected with before_scan_id and after_scan_id; includes resolved findings, regressions and engine or coverage warningsGET /api/v1/me/sites/{id}/verifications: existing verification records, including pending, measuring, verified and expired outcomes; never schedules verificationGET /api/v1/me/sites/{id}/answers: stored Answers passes and their answers, citations, mentions and ranking; select pass_id or read the latest finished passGET /api/v1/me/sites/{id}/agent-runs: private agent runs, including unpublished runs, with verdicts and evidence; select run_id or paginate
Read every page
Pass limit (1–50, default 20) and offset (0–10000, default 0). Continue with nextOffset as the next offset, keeping the same limit, until it is null. On /me/sites, omit both parameters to keep the existing unpaged response. On /history, omit both to keep the existing 100-scan default. New lists default to 20. pass_id selects an Answers pass independently of the listed page; run_id selects one agent run and ignores pagination.
curl --fail-with-body -H "authorization: Bearer $AXRUSH_API_KEY" \ "https://axrush.com/api/v1/me/sites/$SITE_ID/history?limit=20&offset=0"
Verify what changed
Omit both scan ids to compare the latest two finished scans, or supply both in chronological order. Read comparable and warnings before interpreting scoreDelta: changes in engine version, measured pages or applicability can prevent a fair comparison. Check differences describe the origin only. Answers, verification records and agent runs are read-only through these endpoints.
curl --fail-with-body -H "authorization: Bearer $AXRUSH_API_KEY" \ "https://axrush.com/api/v1/me/sites/$SITE_ID/compare?before_scan_id=$BEFORE_SCAN_ID&after_scan_id=$AFTER_SCAN_ID"
Reports expose scope, checksScope, pageCount and informational checks. discoveredUrls counts discovery, not measured pages. For compatibility, v1 retains numeric scores for N/A checks: always inspect applicable before treating a score as a failure. Existing field names, including score, scannedAt and history finishedAt, are unchanged.
A CI gate that says what to fix
Trigger a scan after a deploy, poll until it settles, and fail the build when the score falls below your bar. A failing gate prints the work list, so the log says what to fix rather than only that something is wrong:
set -eu
SCAN=$(curl --fail-with-body -sS -X POST -H "authorization: Bearer $AXRUSH_API_KEY" \
"https://axrush.com/api/v1/me/sites/$SITE_ID/scan" | jq -er .scanId)
for attempt in $(seq 1 60); do
BODY=$(curl --fail-with-body -sS -H "authorization: Bearer $AXRUSH_API_KEY" \
"https://axrush.com/api/v1/me/scans/$SCAN")
STATUS=$(echo "$BODY" | jq -er .status)
[ "$STATUS" = queued ] || [ "$STATUS" = running ] || break
sleep 5
done
[ "$STATUS" = succeeded ] || { echo "Scan failed or timed out: $STATUS"; exit 1; }
SCORE=$(echo "$BODY" | jq -er .report.score)
[ "$SCORE" -ge 90 ] || {
echo "score $SCORE fell below 90; what to fix first:"
curl --fail-with-body -sS -H "authorization: Bearer $AXRUSH_API_KEY" \
"https://axrush.com/api/v1/me/sites/$SITE_ID/fixes" \
| jq -r '.fixes[] | select(.gain > 0) | " +\(.gain) \(.checkId) \(.headline)"'
exit 1
}Run the private engine
POST /api/v1/engine/audit executes an audit on AX Rush servers. This is the endpoint used by ax-audit 6. Send an organization API key with an active paid subscription; every audit verifies access again.
curl --fail-with-body https://axrush.com/api/v1/engine/audit \
-H "authorization: Bearer $AXRUSH_API_KEY" \
-H "content-type: application/json" \
-d '{"url":"https://example.com","profile":"auto"}'Required: url. Optional: checks (1–26 check ids), profile (auto, api, mcp, agent, docs, commerce or all), timeout (100–10000 ms per request), and retries (0–2). The response is an AuditReport with overallScore, results and engine. It is not saved to your site history; use /api/v1/me/sites/SITE_ID/scan for a stored site scan.
Only public HTTP(S) URLs on ports 80 and 443 are accepted. Localhost and private networks are unavailable because execution is remote. Requests are limited to 8 KiB, 10 audits per organization per hour and 5 per target per hour, with target limits shared across scan surfaces. A 429 response includes Retry-After.
Handle errors
Check the HTTP status before reading a successful response. Errors contain error and message: 400 for invalid input, 401 for a missing or revoked key, 403 for insufficient access, 404 for unavailable owned data, 409 when a social account must first be connected in the panel, 413 for a body over 8 KiB on the scan, channel and engine endpoints, 429 for rate limits, 500 when a scan or a reading could not be queued, 502 when a public scan cannot measure the site, and 503 when a read or remote execution is temporarily unavailable. Asking for a scan of a site that already has one in flight answers 202 with that scan. Private responses are not cached.