API documentation
Machine-first JSON over HTTPS. Discovery: /openapi.json, /llms.txt, /.well-known/agent-errors.json.
- Search
- Payment (x402)
- Cases
- Results
- How matching works
- Case schema
- Evidence model
- Sources and ingestion
- Languages
- Errors
POST /api/v1/search
Send symptoms in any language. At least one of query, symptoms, error_message. Optional: framework, language, model, environment, recent_changes, category, min_classification (STRONG | POSSIBLE | WEAK, default WEAK), max_results (1–10, default 5). Body ≤ 32 KB.
curl -s -X POST https://agenterrors.online/api/v1/search -H 'content-type: application/json' -d '{
"symptoms": ["HTTP request timeout", "same tool call repeated"],
"error_message": "GraphRecursionError: Recursion limit of 25 reached",
"framework": "LangGraph"
}'- No match (below
min_classification):200 {"no_match": true, "charged": false, …}. Free. - Match:
402with a free preview (number of matches, similarity classes, categories, how your query was understood) and the x402 challenge. Pay and retry. - Paid:
200withmatches[]— each withsimilarity(classification, score, reasons, differences),failure_pattern,known_causes,successful_repairs,failed_repairs,suggested_repairs,verification_methods,outcome,recurrence,evidence,confidence,sources,freshness— plusdifferentialwhen similar matches have different documented causes, and areceipt.
Payment (x402 v2)
0.018 USDC per paid lookup, scheme “exact”, network eip155:8453. The 402 response carries the challenge in the body and in the PAYMENT-REQUIRED header (base64 JSON). Sign it with an EVM wallet (EIP-3009 authorization) and resend the identical request with PAYMENT-SIGNATURE: <base64 payload>. The network, asset, amount, recipient and time window are checked before anything else; settlement happens only when the result is produced. Retrying with the same payment header returns the same result without a second charge; the same authorization cannot pay for a different request.
import { wrapFetchWithPayment } from '@x402/fetch'; // any x402 v2 client works
const pay = wrapFetchWithPayment(fetch, client); // client = x402Client with your EVM signer
const res = await pay('https://agenterrors.online/api/v1/search', { method: 'POST',
headers: { 'content-type': 'application/json' }, body: JSON.stringify({ query: '…' }) });Cases
GET /api/v1/cases— free public summaries of every case.GET /api/v1/cases/{case_id}— full evidence record; paid (402 includes the public summary), public samples free. Example:AE-6QKQR78H.GET /api/v1/categories,GET /api/v1/stats(counts from records only),GET /api/v1/pricing,GET /api/v1/health(?ready=1adds a cached database probe).
Results
GET /api/v1/results/{result_id} re-fetches a paid result free for 24 hours. Result ids are unguessable and authenticated.
How matching works
Deterministic, no model call. Your text is mapped to 85 language-independent concepts (e.g. repeated_call, timeout, prompt_injection) with surface forms in 11 languages; related concepts share families (a “network error” partially matches a “timeout” case). Scores combine concept coverage, how much of the case’s own symptom picture you describe, exact identifiers (exception classes, config keys, status codes) and BM25 text overlap. Every match lists its reasons and the differences you should check. STRONG requires a shared symptom concept or identifier. A match is similarity to a documented case, never a diagnosis.
Case schema (v1)
failure (title, category, symptoms with basis, verbatim error messages, severity, component, agent type, framework, model, environment) → trigger (conditions with basis, task, tools, unknowns) → root_cause (status, basis, description, evidence) → remediation_attempts[] (method, actor, status with reason, patch reference, verification, evidence) → verified_outcome → recurrence → sources[], evidence[] (verbatim quotes), languages, confidence (level, score, factors, explanation), dedupe, extraction (gate notes).
Evidence model
- Claim basis: VERIFIED_FACT, SUPPORTED_INTERPRETATION, REPORTED_CLAIM, INFERENCE, UNKNOWN.
- Remediation: SUGGESTED, APPLIED, TESTED, VERIFIED_SUCCESS, PARTIAL_SUCCESS, FAILED, UNKNOWN. APPLIED = merged/released; TESTED = merged with a regression test; VERIFIED_SUCCESS = plus an independent confirmation that the failure is gone (not written by the fix author); FAILED/PARTIAL need quotes saying so.
- Outcome (computed, never asserted): RESOLVED_VERIFIED, RESOLVED_UNVERIFIED, MITIGATED, UNRESOLVED, UNKNOWN. Confidence: HIGH, MEDIUM, LOW, UNVERIFIED with the factors listed.
- Every quote is verified verbatim against the retrieved source before publication; @mentions and e-mail addresses are masked; secret-like text is never published; instruction-like text is flagged as untrusted data.
- One incident appearing as an issue, a pull request, an advisory and a CVE is one case with several sources.
Sources and ingestion
Source types: GITHUB_ISSUE, GITHUB_PULL_REQUEST, GITHUB_COMMIT, GITHUB_DISCUSSION, SECURITY_ADVISORY, POSTMORTEM, VENDOR_STATEMENT, RESEARCH_REPORT, DEVELOPER_DISCUSSION, NEWS_REPORT, LEGAL_DECISION, CONTROLLED_TEST. The pipeline (source → fetch → extract → normalize → deduplicate → classify → evidence gate → case record) runs only when an operator starts it, with bounded batches and no scheduled crawling. Sources are linked, with short excerpts; full third-party content is not republished. Controlled test cases are labelled CONTROLLED_TEST_CASE.
Languages
Query in any language. Output summaries are English; quotes, error messages, identifiers and project names stay in their original form, with derived translations labelled as such. Language is metadata about text, never about a person or a place.
Errors
JSON {"error": {"code", "message"}}; branch on code: invalid_request, invalid_json, unsupported_media_type, request_too_large, rate_limited, not_found, invalid_payment, payment_wrong_network, payment_wrong_asset, payment_wrong_amount, payment_wrong_recipient, payment_expired, payment_rejected, payment_already_used, payment_in_progress, settlement_failed, settlement_unknown, payments_unavailable, service_unavailable.