Error envelope
All errors return a top-levelerror object with the following fields:
A stable, machine-readable string that identifies the error type. Use this field in your code to branch on specific failure conditions — never parse
message programmatically.A human-readable description of the error. Suitable for logging or surfacing to developers, but not intended for end-user display.
Optional. Provides context-specific information about the error — for example, which scope is missing, which rate window was exceeded, or how many batch items were received vs. allowed. The shape of
details varies by error code.Error codes reference
| Status | code | Meaning |
|---|---|---|
| 401 | unauthorized | Missing, invalid, revoked, or expired API key |
| 403 | account_inactive | Your organization or API client is not active |
| 403 | insufficient_scope | Your key lacks the required scope for this endpoint |
| 402 | quota_exceeded | Monthly quota exhausted on your plan |
| 404 | not_found | The requested resource does not exist |
| 409 | idempotency_conflict | Same idempotency key is still being processed |
| 422 | validation_failed | Request body failed validation |
| 422 | batch_too_large | Batch exceeds your plan’s max_batch_size |
| 422 | idempotency_key_reuse | Idempotency key reused with a different payload |
| 429 | rate_limit_exceeded | Per-minute or per-day limit exceeded |
| 501 | not_implemented | Endpoint exists but logic is not yet available |
| 500 | server_error | Unexpected server-side error |
Per-error examples
The following examples show the exact response shape for the most common errors you are likely to encounter.unauthorized — missing or invalid API key
Returned when you make a request without an Authorization header, or with a key that is invalid, revoked, or expired:
Authorization: Bearer <token> header with a valid, active key.
insufficient_scope — key missing a required scope
Returned when your API key does not carry the scope required by the endpoint you are calling. The details.required_scope field tells you exactly which scope to add:
rate_limit_exceeded — per-minute or per-day limit hit
Returned when you exhaust your plan’s request rate limit. The details.window field indicates whether the per-minute or per-day window was hit, and details.limit shows the threshold:
Retry-After response header — it tells you exactly how many seconds to wait before retrying. See Plans & Limits for rate limit details by plan.
quota_exceeded — monthly quota exhausted
Returned when your plan’s monthly request quota has been fully consumed. No further requests are processed until the quota resets at the start of your next billing period:
GET /api/v1/me to see how much quota you have used and when it resets. Consider upgrading your plan if you consistently reach this limit.
batch_too_large — batch exceeds plan maximum
Returned when the number of items in a batch request exceeds your plan’s max_batch_size. The details object tells you both the maximum allowed and how many you submitted:
max_items limit for your plan.
Correlation IDs
Every response from the 8bitedge API — both successful responses and errors — includes anX-Request-Id header containing a UUID:
X-Request-Id value from the response. It allows the 8bitedge team to look up the exact request, trace its execution path, and diagnose the problem quickly.