Errors

NeuroAPI uses conventional HTTP status codes and a predictable JSON envelope.

Error envelope

json
{
"success": false,
"error": {
"code": "insufficient_credits",
"message": "Account balance (12) is lower than request cost (50)."
}
}

Status codes

StatusCodeMeaning
400bad_requestInvalid JSON body or missing required parameter.
401unauthorizedMissing, malformed or revoked API key.
402insufficient_creditsAccount balance is below the cost of the request.
402monthly_cap_exceededPlan-level monthly credit cap reached. Upgrade or wait for the next billing period.
403forbiddenAuthenticated, but not allowed to act on this resource (e.g. interact session you don't own).
403forbidden_scopeAPI key is missing the required scope for this endpoint.
403ip_not_allowedRequest IP is outside the key's IP allowlist.
403robots_disallowedTarget URL is blocked by its robots.txt for our user agent.
404not_foundResource (e.g. job id) does not exist or doesn't belong to you.
410session_expiredInteract session no longer exists. Call /api/v1/scrape again to get a fresh sessionId.
413file_too_largeUpload exceeds the parse endpoint's file-size limit.
415unsupported_media_typeUploaded file type is not supported by /api/v1/parse.
429rate_limitedToo many requests in a short window — back off and retry.
429concurrency_limit_exceededToo many in-flight requests for this account's plan. Lower parallelism or upgrade.
503upstream_busyEvery upstream worker is saturated; retry shortly.
500internal_errorUnexpected server-side failure. Safe to retry idempotent calls.

Retry strategy

Retry 429, 503 and 500 with exponential backoff (e.g. 1s, 2s, 4s, 8s) plus jitter. Do not retry 400, 401 or 402 — fix the request, fix the key, or top up credits.