> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# Errors, retries, and quotas

> **Availability:** The DevBase runtime and production API are not yet deployed. This page describes the committed v1 contract for integration planning; requests to the API URL will not succeed until the runtime is released.

Errors use the Connect JSON error envelope. The top-level `code` is the Connect status code and `message` is a human-readable summary. Typed protobuf details are carried in the envelope's `details` array, not as top-level fields:

```json
{
  "code": "resource_exhausted",
  "message": "workspace quota exhausted",
  "details": [
    {
      "type": "devbase.v1.ErrorDetail",
      "value": "CAgSJgokMDE5MDAwMDAtMDAwMC03MDAwLTgwMDAtMDAwMDAwMDAwMDAxGh9jb3JyXzAxSjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIB4oAQ==",
      "debug": {
        "reason": "ERROR_REASON_QUOTA_EXHAUSTED",
        "requestId": {
          "value": "01900000-0000-7000-8000-000000000001"
        },
        "correlationId": "corr_01J00000000000000000000000",
        "retryAfterSeconds": 30,
        "retryGuidance": "RETRY_GUIDANCE_AFTER_DELAY"
      }
    }
  ]
}
```

The `type`
 identifies the fully qualified protobuf message and `value`
 is its standard padded base64-encoded binary protobuf payload. Decode `value`
 with the published [DevBase v1 descriptor set
](/devbase/v1/downloads/devbase/v1/devbase_v1.descriptor.binpb) or [common.proto
](/devbase/v1/downloads/devbase/v1/common.proto), then read the `ErrorDetail`
 fields. The optional `debug`
 object is for readability only; clients must decode `value`
 and must not depend on `debug`
. Internal causes and secret-bearing values are not returned.
Retry only when the guidance permits it. Rate limits and temporary dependency failures may be retried after the indicated delay; authentication, authorization, malformed input, idempotency conflicts, resource-version conflicts, checksum failures, and other permanent validation errors require a state or request change.

Workspace, API-key, RPC rate, and concurrency quotas are enforced independently. Exhaustion returns a typed `resource_exhausted` response. Paid work also requires an active workspace and an available Delcore spend decision.
