# API error codes

> Every stable error code the Corpo API returns, with the HTTP status, what it means and how to fix it.

Canonical: https://corpoapi.com/errors

- [invalid_parameter](https://corpoapi.com/errors/invalid_parameter): Invalid parameter. A query or body field is missing, malformed, or outside the allowed range.
- [invalid_identifier](https://corpoapi.com/errors/invalid_identifier): Invalid identifier. The company number or other identifier does not match the scheme the register uses.
- [unknown_jurisdiction](https://corpoapi.com/errors/unknown_jurisdiction): Unknown jurisdiction. The jurisdiction code is not one the API serves.
- [missing_api_key](https://corpoapi.com/errors/missing_api_key): Missing API key. The request carried no API key.
- [invalid_api_key](https://corpoapi.com/errors/invalid_api_key): Invalid API key. The API key is malformed, unknown, or does not belong to an active account.
- [key_revoked](https://corpoapi.com/errors/key_revoked): Key revoked. The API key has been revoked and can no longer authenticate requests.
- [free_tier_exhausted](https://corpoapi.com/errors/free_tier_exhausted): Free tier exhausted. The account has used the first 100 free paid calls, and the prepaid balance cannot cover another $0.05 call.
- [premium_not_allowed](https://corpoapi.com/errors/premium_not_allowed): Premium lookup not allowed. The request asks for a paid registry product that this account is not allowed to run.
- [spend_cap_reached](https://corpoapi.com/errors/spend_cap_reached): Spend cap reached. The account's spend cap has been reached.
- [company_not_found](https://corpoapi.com/errors/company_not_found): Company not found. No company matches that identifier or name in the requested jurisdiction.
- [job_not_found](https://corpoapi.com/errors/job_not_found): Lookup not found. No queued lookup matches that lookup_id.
- [officers_not_available](https://corpoapi.com/errors/officers_not_available): Officers not available. The register does not publish a structured officer table for this company, so there are no officers to return.
- [batch_too_large](https://corpoapi.com/errors/batch_too_large): Batch too large. A batch request contains more items than the endpoint accepts.
- [missing_identifier_or_name](https://corpoapi.com/errors/missing_identifier_or_name): Missing identifier or name. A verify request supplied neither a company_number nor a name.
- [rate_limited](https://corpoapi.com/errors/rate_limited): Rate limited. The key exceeded a per-second or per-minute request window.
- [internal_error](https://corpoapi.com/errors/internal_error): Internal error. The API hit an unexpected error while handling the request.
- [registry_unavailable](https://corpoapi.com/errors/registry_unavailable): Registry unavailable. A source register, or the service that reads it, is temporarily unavailable.
- [registry_budget_exhausted](https://corpoapi.com/errors/registry_budget_exhausted): Registry budget exhausted. The budget for live calls to a paid or metered register is used up for now.
