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

# Rate Limits & Quotas

> Usage limits, quotas, credit costs, and data retention policies

## Rate Limits

The Developer API enforces rate limits to ensure fair usage and system stability.

| Limit                         | Value | Description                                                        |
| ----------------------------- | ----- | ------------------------------------------------------------------ |
| **Requests per minute**       | 100   | Maximum API requests per API key within a 60-second window         |
| **Concurrent render jobs**    | 5–50  | Maximum running jobs per organization (depends on plan, see below) |
| **Max items per bulk job**    | 100   | Maximum documents in a single bulk render request                  |
| **Max image upload size**     | 25 MB | Maximum file size for temporary image uploads                      |
| **Max bulk file upload size** | 10 MB | Maximum CSV/JSON file size for bulk render                         |
| **Max tool file upload size** | 50 MB | Maximum file size for tool file uploads                            |

When rate limits are exceeded, you'll receive a `429 Too Many Requests` response:

```json theme={null}
{
  "statusCode": 429,
  "message": "Rate limit exceeded. Please wait before making more requests.",
  "error": "Too Many Requests"
}
```

## Credit Costs

Each API operation consumes credits from your organization's balance.

| Operation                  | Credit Cost |
| -------------------------- | ----------- |
| **Image upload**           | Free        |
| **Single render**          | 5 credits   |
| **Bulk render** (per item) | 4 credits   |
| **Tool file upload**       | Free        |
| **Tool PDF action**        | 1 credit    |

## TTLs (Time-To-Live)

<Warning>
  Download your rendered files within 1 hour of job completion. After that, both the job record and the download URL expire.
</Warning>

| Resource             | TTL        | Description                                     |
| -------------------- | ---------- | ----------------------------------------------- |
| **Temporary images** | 24 hours   | Images uploaded via `/images` endpoint          |
| **Render jobs**      | 1 hour     | Job metadata and download availability          |
| **Download URLs**    | 1 hour     | Pre-signed S3 URLs for file downloads           |
| **Tool files**       | 60 minutes | Files uploaded for PDF tools (input and output) |

### Cleanup Schedule

The API runs automatic cleanup to remove expired resources:

* Expired temporary images are deleted from storage (every 60 minutes)
* Completed render jobs older than 1 hour are removed (every 60 minutes)
* Expired tool files and completed tool jobs are removed (every 10 minutes)
* Associated files are permanently deleted

## Concurrent Job Limits

The maximum number of concurrent render jobs depends on your subscription plan:

| Plan     | Concurrent Job Limit |
| -------- | -------------------- |
| **Free** | 5                    |
| **Pro**  | 50                   |
| **Team** | 50                   |

This limit includes:

* Single render jobs (each counts as 1)
* Bulk render jobs (each counts as 1, regardless of item count)

If you hit this limit, you'll receive:

```json theme={null}
{
  "statusCode": 400,
  "message": "Maximum concurrent jobs limit reached (50). Please wait for existing jobs to complete.",
  "error": "Bad Request"
}
```

## Best Practices

<AccordionGroup>
  <Accordion title="Implement exponential backoff">
    When you receive a `429` response, wait before retrying. Start with 1 second and double the wait time for each subsequent retry, up to a maximum of 60 seconds.
  </Accordion>

  <Accordion title="Download files promptly">
    Download completed renders immediately after job completion. The 1-hour TTL is a hard limit — files are permanently deleted after expiration.
  </Accordion>

  <Accordion title="Monitor your credit balance">
    Check your credit balance before submitting large bulk jobs. Use the billing endpoints to verify sufficient credits are available.
  </Accordion>

  <Accordion title="Use webhooks for bulk jobs">
    Instead of polling, provide a `webhookUrl` when creating bulk jobs to receive instant completion notifications.
  </Accordion>

  <Accordion title="Batch efficiently">
    For bulk renders, group up to 100 items per job to minimize API calls while staying within limits.
  </Accordion>
</AccordionGroup>

## Summary Table

| Category        | Limit              | Value                    |
| --------------- | ------------------ | ------------------------ |
| **Rate Limit**  | Requests/minute    | 100                      |
| **Rate Limit**  | Window duration    | 60 seconds               |
| **Concurrency** | Max parallel jobs  | 5 (Free) · 50 (Pro/Team) |
| **Bulk**        | Max items/job      | 100                      |
| **Upload**      | Max image size     | 25 MB                    |
| **Upload**      | Max bulk file size | 10 MB                    |
| **Upload**      | Max tool file size | 50 MB                    |
| **TTL**         | Temporary images   | 24 hours                 |
| **TTL**         | Render jobs        | 1 hour                   |
| **TTL**         | Download URLs      | 1 hour                   |
| **TTL**         | Tool files         | 60 minutes               |
| **Credits**     | Image upload       | Free                     |
| **Credits**     | Single render      | 5                        |
| **Credits**     | Bulk render/item   | 4                        |
| **Credits**     | Tool file upload   | Free                     |
| **Credits**     | Tool PDF action    | 1                        |
