Normalize any API error into RFC 9457 Problem Details with agent-ready classification.
POST any API error response — JSON, HTML, plain text — and get back a consistent RFC 9457 Problem Details object with error classification, retryability, and suggested recovery actions. Agents use ErrorMap to handle failures from any API without custom error parsers.
/api/v1/errormap/parseParse any raw error into structured Problem Details with classification
/api/v1/errormap/normalizeNormalize a JSON error object to RFC 9457 format
/api/v1/errormap/classifyClassify an error by category with retry guidance
curl -X POST https://neverparse.com/api/v1/errormap/parse \
-H 'Content-Type: application/json' \
-d '{"raw": {"error": {"code": "RATE_LIMIT_EXCEEDED", "message": "Too many requests"}}, "statusCode": 429, "headers": {"Retry-After": "30"}}'const res = await fetch(class="token-string">39;https:class="token-comment">//neverparse.com/api/v1/errormap/parse39;, {
method: class="token-string">39;POST39;,
headers: { class="token-string">39;Content-Type39;: class="token-string">39;application/json39; },
body: JSON.stringify({
raw: { error: { code: class="token-string">39;RATE_LIMIT_EXCEEDED39;, message: class="token-string">39;Too many requests39; } },
statusCode: 429,
headers: { class="token-string">39;Retry-After39;: class="token-string">39;3039; }
})
});
const { problem } = await res.json();
if (problem.retryable) await sleep(problem.retryAfterMs);import requests
res = requests.post(&class="token-comment">#39;https://neverparse.com/api/v1/errormap/parse39;,
json={&class="token-comment">#39;rawclass="token-string">39;: {39;errorclass="token-string">39;: {39;codeclass="token-string">39;: 39;RATE_LIMIT_EXCEEDEDclass="token-string">39;, 39;messageclass="token-string">39;: 39;Too many requestsclass="token-string">39;}}, 39;statusCodeclass="token-string">39;: 429, 39;headersclass="token-string">39;: {39;Retry-Afterclass="token-string">39;: 39;3039;}})
problem = res.json()[&class="token-comment">#39;problem39;]
if problem[&class="token-comment">#39;retryableclass="token-string">39;]: time.sleep(problem[39;retryAfterMs39;] / 1000)Include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEYAll errors return structured JSON with code, message, and details fields.
{
"error": {
"code": "INVALID_INPUT",
"message": "The 39;data39; field is required",
"details": {
"field": "data",
"expected": "object | array"
}
}
}