HTTP/1.1 500 Internal Server Error
Content-Type: application/problem+json
X-Request-Id: req_01HV9XK...

{
  "type": "https://docs.digitalseaservice.com/errors/internal_error",
  "title": "Internal error",
  "status": 500,
  "detail": "An unexpected error occurred. Reference this request_id to support.",
  "instance": "req_01HV9XK..."
}

What it means

Something on our side failed in a way we didn’t anticipate. We never leak internal details in detail — but every 500 is logged with full context, and the instance field matches the X-Request-Id header so we can find the exact request in our logs.

What to do

  1. Retry with exponential backoff. 500-class responses are typically transient. Start at 1 second, double up to a cap of 30 seconds, give up after ~5 attempts.
  2. Keep the X-Request-Id. If the error persists, send it to admin@digitalseaservice.com. We can pull the exact request in seconds.
  3. Check status.digitalseaservice.com before raising — if we’re in an incident, you’re not alone and we’re already on it.
  4. Don’t surface the raw error to end users. The instance is for your engineers. Show users a generic “Couldn’t reach Digital Sea Service — please retry in a moment” message.

Idempotency

All V1 endpoints are read-only (GET), so retrying a 500 is always safe. When we add write endpoints in V2 they’ll require explicit idempotency keys — until then, just retry.