Docs/ Errors

Errors

Every error code, when it happens and what to do.

Errors always use the same envelope: { "error": { "code", "message", ... } }. Retry only 502 (twice, a minute apart); never retry a 4xx.

StatusCodeWhen
400invalid_isinThe ISIN is not syntactically valid (format + checksum), or a batch / portfolio / overlap call contained no valid ISIN.
400invalid_bodyPOST body is not the expected JSON shape (batch: { isins: [] }; portfolio: { positions: [{ isin, weight }] }).
400invalid_querySearch: ?q= is missing or shorter than two characters.
400batch_too_largeMore ISINs than the plan's batch size (Free 1, Starter 10, Pro 50, Scale 200, Enterprise 1,000). Includes batchMax.
401missing_api_keyNo Authorization: Bearer header (or X-Api-Key) was sent.
401invalid_api_keyThe key is malformed or unknown.
401revoked_api_keyThe key exists but was revoked from the dashboard.
404fund_not_foundNo public data could be retrieved for this ISIN (not a fund/ETF, delisted, or not covered yet). The response still contains the empty `data` skeleton.
403plan_requiredThe endpoint needs a higher plan: changes, webhooks and export need Scale; extract needs Pro. Includes `required`.
404not_cachedDemo endpoint only: the ISIN has not been loaded yet. Use an API key to load it.
404not_foundWebhooks: no such endpoint on this account.
429rate_limitedMonthly credits (and overage cap) exhausted, or the per-minute burst limit hit. `reason` is credits_exhausted | overage_cap | burst; includes retryAfter (seconds) and resetAt; the Retry-After header is also set.
502upstream_errorThe fund data could not be retrieved (temporary upstream outage). Retry later; the request is counted.
404 Not Foundjson
{
"error": {
"code": "fund_not_found",
"message": "No published fund documents could be found for this ISIN. It may not be a UCITS fund/ETF, or its issuer may not be covered yet."
},
"isin": "US0378331005",
"cached": false,
"generatedAt": "2026-09-09T08:12:44.000Z",
"data": {
"…": "empty skeleton"
}
}