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

# Retries

> What the SDKs retry, what they never retry, and how to mirror that in custom clients.

<Info>
  **BlobRouter v0.1** · Last updated: August 2026 · Architecture version: **2.0**
</Info>

## SDK default (`maxRetries` / `max_retries` = 3)

### Retry on

* Network timeout
* DNS failure
* Connection reset
* HTTP `408`, `429`
* HTTP `500`, `502`, `503` (and other `5xx`)

Backoff: exponential (`1s`, `2s`, `4s`, … capped).

### Never retry

* `400`, `401`, `403`, `404`, `409`, `422` (and other non-retryable `4xx` except `408`/`429`)

### Never retry (provider)

The **presigned PUT** to S3/R2/B2 is not retried by the SDK. Provider behavior and stream/body constraints are outside BlobRouter’s control.

## Custom HTTP clients

Mirror the same policy. Honor `Retry-After` on `429`. Include `X-Request-ID` when contacting support after exhausted retries.
