# internal-error

# `internal-error`

**HTTP 500.** Something went wrong inside Supliful. This is our fault, not a problem with your request.

```json
{
  "type": "https://developers.supliful.com/errors/internal-error",
  "title": "Internal server error",
  "status": 500,
  "instance": "/v1/me"
}
```

## Why there is no detail

The document deliberately carries no `detail`. Internal failure messages leak implementation details — table names, upstream hostnames, stack frames — so we never put them on the wire. The full error, including the stack, is written to our logs against the same request, so the information exists; it just isn't yours to read.

That means you cannot diagnose a 500 yourself, and shouldn't try. What you *can* do is capture enough for us to find it.

## What to send us

Contact [help@supliful.com](mailto:help@supliful.com) with:

- The **`instance`** value from the response — the path that failed.
- The **time** of the request, with a timezone.
- The **connection** the key acts as, from `GET /v1/me`. Never send the key itself.
- Whether it is **reproducible**, and if so the request shape that triggers it.

## Retry behaviour

Retryable, with care. Some 500s are transient — a brief dependency failure — and the same request will succeed shortly after. Others are deterministic and will fail identically forever.

Retry with exponential backoff and a firm cap: two or three attempts, spaced out, then stop and surface it. Do not retry indefinitely; if the cause is deterministic you will simply spend your [rate limit](/errors/rate-limit-exceeded) discovering that.

If a request is not idempotent, weigh the risk of duplicating work against the chance the first attempt failed before taking effect. When in doubt, verify state before retrying rather than assuming the call did nothing.
