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

# service_unavailable

> HTTP 503 — generic temporary unavailability. Retry with backoff.

|                 |                                                      |
| --------------- | ---------------------------------------------------- |
| **HTTP status** | `503 Service Unavailable`                            |
| **Code**        | `service_unavailable`                                |
| **Retry?**      | Yes — exponential backoff. SDKs retry automatically. |

## When this happens

A generic temporary unavailability that is *not* tied to a specific
analyzer's upstream. Causes include:

* Database failover or short connection saturation.
* Cloud Run cold-start delays under unusual load patterns.
* Scheduled maintenance windows.
* Generic gateway / network blips.

If the underlying cause was a single analyzer's upstream, the API
returns [`analyzer_unavailable`](/errors/analyzer_unavailable)
instead.

## Example response

```http theme={null}
HTTP/1.1 503 Service Unavailable
Retry-After: 5
```

```json theme={null}
{
  "detail": "Service temporarily unavailable. Please retry.",
  "code": "service_unavailable",
  "request_id": "5b3f6c7e-7d24-4d40-9b12-3a59c01c6e91",
  "doc_url": "https://docs.lasscyber.com/errors/service_unavailable"
}
```

## How to recover

1. Read `Retry-After` if present (otherwise default to a few seconds).
2. Sleep + jitter, retry up to 3 times.
3. If retries are exhausted, check the
   [status page](https://status.lasscyber.com).

The official SDKs handle this automatically.

## SDK behaviour

| SDK        | Exception                                                  |
| ---------- | ---------------------------------------------------------- |
| Python     | `agnes.ServerError` (with `code == "service_unavailable"`) |
| TypeScript | `ServerError` (with `code === "service_unavailable"`)      |

SDKs auto-retry up to the configured retry ceiling.

## Related

* [`analyzer_unavailable`](/errors/analyzer_unavailable) — same status,
  specific analyzer / upstream named.
* [`internal_error`](/errors/internal_error) — non-retryable 500.
* [status.lasscyber.com](https://status.lasscyber.com)
