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

# Limits & quotas

This page summarizes practical limits and constraints when integrating with the Resistant Documents API.

<Note>
  Some limits may vary by contract, tenant configuration, or deployment cell. If you need a higher tier, contact your Resistant AI representative.
</Note>

## API rate limits

Rate limits apply **per tenant** and are enforced separately for:

* **Create submission** requests (`POST /v2/submission`)
* **Other requests** (e.g., polling result endpoints, delete, etc.)

| Tier    | Create submission (`POST /v2/submission`) |      Other requests |
| ------- | ----------------------------------------: | ------------------: |
| Default |                         4 req/s (6 burst) | 10 req/s (15 burst) |

<Warning>
  If you exceed your quota you may receive **HTTP 429** responses. Your client must handle this with backoff and retries.
</Warning>

### Recommended behavior on HTTP 429

* Back off and retry using **exponential backoff + jitter**
* Avoid synchronized retries across many workers
* **Reuse access tokens** (don’t request a token per API call)

## Timeouts

### Hard analysis timeout (15 minutes)

Processing has a hard upper bound of **15 minutes**.

<Warning>
  If results are not available within 15 minutes, treat it as a terminal failure in your workflow and surface it for investigation.
</Warning>

### Polling guidance

<Tip>
  Use exponential backoff, cap your interval at **45 seconds**, and stop polling after **15 minutes**.
</Tip>

## Retention and deletion

Retention depends on the contract. By default, retention is **90 days**.

If you need earlier deletion, use:

* `DELETE /v2/submission/{submission_id}`

## File processing constraints

There is no single hard “maximum file size” limit. Whether a file can be processed depends on:

* document complexity (structure, embedded objects)
* document length (e.g., number of pages)
* file format and encoding
* overall parsing complexity

### Recommended integration behavior

* Be prepared for non-success terminal statuses (e.g., `INVALID_INPUT` / `FAILED`).
* Log identifiers and context (environment, region/cell, `submission_id`) to support debugging.
* Follow [Document intake best practices](/support/document-intake-best-practices) to preserve original file bytes and avoid re-encoding.

## Supported formats

See:  [Supported file formats](/supported-formats).
