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

# Errors and retries

> Handle HTTP failures, typed render errors, and partial AI results safely.

Scrinly uses standard HTTP status codes and JSON error bodies. Preserve the HTTP status, `error` or `type`, and message in your application telemetry, but redact request headers, cookies, storage credentials, and provider keys.

| Status | Meaning                                      | Retry guidance                                       |
| ------ | -------------------------------------------- | ---------------------------------------------------- |
| `400`  | Invalid option or unsupported combination    | Fix the request. Do not retry unchanged.             |
| `401`  | Missing, unknown, or revoked Scrinly key     | Replace the credential.                              |
| `402`  | Credit limit reached                         | Add credits or wait for the account period to reset. |
| `403`  | Account is deactivated                       | Resolve the account state.                           |
| `404`  | Resource missing or owned by another account | Check the ID and account.                            |
| `408`  | Render or upstream deadline exceeded         | Retry with backoff if the operation is idempotent.   |
| `429`  | Rate limited                                 | Respect `Retry-After` and use jittered backoff.      |
| `5xx`  | Temporary platform or provider failure       | Retry with bounded exponential backoff.              |

Batch requests may return `207`; inspect each item.

## AI partial results

An interpreted blueprint can return HTTP `200` with `status:"blueprint_only"`. The capture succeeded, so the response includes the snapshot, the design and the full blueprint, but `blueprint.interpretation` is `null` and `blueprint.interpretationError` explains the provider, timeout, truncation, or grounding failure. Only the interpretation credits are refunded — the blueprint was delivered.

This is not a transport error. Save the useful design result and decide whether to retry generation. A URL retry can reuse the account-scoped snapshot and avoid another browser render.

Scrinly never silently switches AI providers. A missing platform provider key returns a typed `503` before rendering or charging.
