> ## Documentation Index
> Fetch the complete documentation index at: https://docs.datavibe.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# Errors and recovery

> Handle DataVibe authentication, validation, quota, rate-limit, snapshot, and dispatch failures.

Policy outcomes usually return HTTP `200` with a gate status. Transport and
platform failures use non-2xx responses with a structured error envelope.

| Condition                 | Response                   | Recovery                                                       |
| ------------------------- | -------------------------- | -------------------------------------------------------------- |
| Invalid or revoked key    | `401`                      | Replace the credential; do not retry unchanged.                |
| Invalid payload           | `422`                      | Correct the request fields.                                    |
| Plan quota exhausted      | `429 PLAN_QUOTA_EXCEEDED`  | Follow `reset_at` or upgrade guidance.                         |
| Burst rate limited        | `429 GATE_RATE_LIMITED`    | Honor `Retry-After` and retry with backoff.                    |
| Snapshot unavailable      | `503 SNAPSHOT_UNAVAILABLE` | Retry after the indicated delay with the same idempotency key. |
| Dispatch/provider failure | Gate status `FAILED`       | Inspect metadata; verify no delivery occurred before retrying. |

Rate and quota responses may include:

* `next_step`
* `reset_at`
* `X-Usage-*` headers
* `X-Request-Id`
* `Retry-After`

## Safe error logging

Log the error code, request ID, action ID, and idempotency key. Do not log full
API keys, sensitive recipient content, or unredacted policy matches.

<Warning>
  A scanner exception fails closed as a blocking decision. A missing policy
  snapshot returns `503`; DataVibe does not evaluate without an auditable snapshot.
</Warning>
