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

# CLIENT_DISCONNECTED

> The caller closed the connection before the response could be delivered (HTTP 499).

## What this error means

`CLIENT_DISCONNECTED` is returned with HTTP status **499** when the caller
closes the connection before the response could be delivered: a browser tab
or app closed mid-request, a mobile network handoff, or a proxy or load
balancer dropping an idle connection. It is a record of the disconnect, not a
server fault; Orbit classifies it separately so that client-side closes are
not counted as server errors.

Every response for this error carries this page's address in `meta.docs_url`:

```json theme={null}
{
  "error": {
    "code": "CLIENT_DISCONNECTED",
    "message": "The client closed the connection before a response.",
    "status": 499
  },
  "meta": {
    "request_id": "req_01J9ZKQ3V8",
    "docs_url": "https://docs.orbit.devotel.io/errors/CLIENT_DISCONNECTED"
  }
}
```

## Cause

| Situation | Why the connection closes early |
| - | - |
| User closes the tab or app mid-request | The browser or OS tears the socket down |
| Mobile network handoff | A network switch drops in-flight connections |
| Proxy or load balancer idle timeout | An intermediate hop gives up before the server answers |
| Client timeout shorter than processing time | Your HTTP client abandons a request that is still running |

## How to fix it

1. **Treat it as informational, not an error to retry blindly.** The envelope
   carries no retry semantics: there is no `retry_after`, and by the time you
   see it the original caller is already gone.
2. **Check the outcome before reissuing.** If the request may have side
   effects (a send, a create), look up the resulting record or webhook events
   first so a reissue does not duplicate the operation.
3. **Raise client-side timeouts for long-running calls.** If your own code is
   the disconnecting client, give slow endpoints enough headroom, or poll for
   the result instead of holding one request open.
4. **Expect some baseline volume.** A public API always sees a background
   rate of 499s from closed tabs and network handoffs; a low steady count is
   normal traffic, not a defect.

## Related

* [Error Code Reference](https://docs.orbit.devotel.io/reference/error-codes.md#from-a-code-to-a-runbook) — the
  `CLIENT_DISCONNECTED` row and its 499 status.
* [Error Handling Examples](https://docs.orbit.devotel.io/guides/error-handling-examples.md) — response-envelope
  handling patterns in code.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.