AE Agent Errors

API documentation

Machine-first JSON over HTTPS. Discovery: /openapi.json, /llms.txt, /.well-known/agent-errors.json.

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"
}'

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

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

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.