> ## 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.

# internal_error

> HTTP 500 — unexpected server-side failure. Quote request_id when reporting.

|                 |                                                                     |
| --------------- | ------------------------------------------------------------------- |
| **HTTP status** | `500 Internal Server Error`                                         |
| **Code**        | `internal_error`                                                    |
| **Retry?**      | Optional — single retry is fine; quote `request_id` when reporting. |

## When this happens

The server hit an unexpected failure that it could not categorise as
[`validation_error`](/errors/validation_error), one of the analyzer-
or service-level 503 errors, or anything else specific. Operators are
paged automatically.

## Example response

The API never includes stack traces or upstream error strings in
500 bodies — only the canonical envelope:

```json theme={null}
{
  "detail": "An unexpected error occurred.",
  "code": "internal_error",
  "request_id": "5b3f6c7e-7d24-4d40-9b12-3a59c01c6e91",
  "doc_url": "https://docs.lasscyber.com/errors/internal_error"
}
```

## What to do

1. Optionally retry once. Some 500s are genuinely transient.
2. If the retry also fails, file a support ticket from
   [`agnes.lasscyber.com/support`](https://agnes.lasscyber.com/support)
   and **quote the `request_id`**. The team uses it to correlate the
   exact server-side log line.
3. Check the [status page](https://status.lasscyber.com) — if a
   broader incident is open, the resolution there will fix the call.

## SDK behaviour

| SDK        | Exception           |
| ---------- | ------------------- |
| Python     | `agnes.ServerError` |
| TypeScript | `ServerError`       |

SDKs retry 5xx errors up to the configured budget. A surfaced
`ServerError` with `code: "internal_error"` means retries were
exhausted.

## Privacy

500 responses never echo customer prompts back, never include upstream
credentials, and never include database identifiers. The `request_id`
is the only identifier you need to quote in a ticket; do not paste
prompts.

## Related

* [`service_unavailable`](/errors/service_unavailable) — retryable
  503\.
* [`analyzer_unavailable`](/errors/analyzer_unavailable) — analyzer-
  specific 503.
* [status.lasscyber.com](https://status.lasscyber.com)
