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

# Limits and budgets

> Rate limits, the monthly token budget, and the usage Rollup counts for your app.

Rollup limits how fast each device and each app can call its server, and how many model tokens each app can use in a month. Search and indexing on the iPhone are never limited by these.

## Rate limits

Limits count in 5-minute windows. A request over a limit gets 429 `rate_limited`, which is retryable: the SDK throws `RollupError` with code `rateLimited`, and `retryAfter` when the server says how long to wait. Wait and try again.

### Per device

| Request | Limit per 5 minutes |
| - | - |
| `query` steps | 300 |
| `profile` steps | 300 |
| Place data | 240 requests |
| Geography data | 240 requests |
| Key check | 120 |
| Run reports | 60 |
| Model catalog | 30 |
| Device deletion (`reset`) | 10 |
| Device registration | 8 per IP address |

A `query` or `profile` usually takes a few steps.

### Per app

These are shared by every install of your app.

| Bucket | Default per 5 minutes | Counts |
| - | - | - |
| Agent steps | 600 | `query` and `profile` steps |
| Data requests | 300 | Place data, geography data, device registrations and run reports |

Rollup sets these per app. Your app's page in the dashboard shows its current limits. If your app needs more, ask Rollup to raise them.

## Monthly token budget

Each app has a budget of model tokens per month: the input and output tokens of every `query` and `profile` step, across all installs. The default is 5,000,000 tokens per calendar month in UTC.

Before each step, Rollup checks the tokens your app has used this month. Once they reach the budget, `query` and `profile` get 429 `app_quota_exceeded`, which is not retryable, with a message naming the date the budget resets: the first day of the next month, UTC. A step that is already running finishes, so the total can go slightly over the budget.

Search, indexing, place data and everything else keep working. Your app's page shows this month's tokens against the budget, and Rollup can raise the budget.

## Usage

Rollup counts your app's usage per day in UTC and shows it on your app's page:

* devices registered,
* place data and geography requests,
* `query` steps and `profile` steps,
* input tokens and output tokens,
* searches, as reported in the SDK's run reports.

Usage names no device and no person. There is no billing.

## Run reports

After each indexing run, the SDK sends a report that your app's page summarizes: the SDK and iOS versions, the device model, what started the run, how it ended, how long it took, how many photos it indexed and left, peak memory, bytes downloaded, the number of searches, and the time and outcome of each stage, with error codes when something failed. A run the app did not survive is reported the next time it launches. Reports contain no photos, labels, places, text or questions, and no device identifier. Rollup keeps them for 90 days.


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