> For the complete documentation index, see [llms.txt](https://titan-exchange.gitbook.io/titan/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://titan-exchange.gitbook.io/titan/developer-doc/developers-portal/plans-rate-limits-credits.md).

# Plans, Rate Limits & Credits

Plan tiers, rate limit behavior, credit accrual and plan changes.

All plans use the same base URL and routing engine. Higher tiers raise the rate limit and included credits.

| Plan       | Price   | Requests/sec | Credits/month | API keys | For                                 |
| ---------- | ------- | ------------ | ------------- | -------- | ----------------------------------- |
| Sandbox    | $0      | 1            | 2,500,000     | 1        | Testing and prototyping             |
| Build      | $25/mo  | 10           | 25,000,000    | 5        | Your first integration              |
| Scale      | $100/mo | 50           | 125,000,000   | 5        | Production workloads                |
| Growth     | $500/mo | 150          | 400,000,000   | 5        | High-volume production              |
| Enterprise | Custom  | Custom       | Custom        | Custom   | Custom limits and dedicated support |

Every plan includes Titan Gateway via REST with DART-enabled routing.

## Enterprise

Titan Direct — streaming quotes over WebSocket — is available only on the Enterprise plan. Enterprise also provides custom rate limits and monthly credits, a custom API key limit, latency and uptime SLAs, a dedicated support channel, and colocation on request. Contact Titan through the Plans page at [developer.titan.exchange](https://developer.titan.exchange/).

## Limits

Two independent limits apply to every organization. Each returns a distinct error code.

## Rate limit

The requests-per-second figure is enforced as a rolling 60-second window of `rps × 60` requests.

| Plan    | Requests per rolling 60 seconds |
| ------- | ------------------------------- |
| Sandbox | 60                              |
| Build   | 600                             |
| Scale   | 3,000                           |
| Growth  | 9,000                           |

The window is shared across every key in the organization and across all three regions. Distributing traffic between keys or regions does not raise the ceiling.

Exceeding the window returns `429`:

```json
{ "error": { "code": "rate_limited" } }
```

{% hint style="warning" %}
Rate-limit headers are returned only on `429` responses. Successful responses carry no `x-ratelimit-*` headers, so remaining budget cannot be tracked from successful replies.
{% endhint %}

### Rate-limit headers

| Header                  | Meaning                                             |
| ----------------------- | --------------------------------------------------- |
| `x-ratelimit-limit`     | Rolling 60-second budget for your plan              |
| `x-ratelimit-remaining` | Requests left in the current window; `0` on a `429` |
| `x-ratelimit-reset`     | Seconds until capacity becomes available            |
| `retry-after`           | The same value, as a standard header                |

Honor `retry-after` rather than retrying immediately.

## Credits

A credit is the unit of usage on your plan. Currently, one credit is consumed per request — one quote call, one credit. Every endpoint is priced the same; `/api/v1/info` costs the same one credit as `/api/v1/quote/swap`. The response status does not affect the charge.

| Plan    | Credits per month | Equivalent quote calls |
| ------- | ----------------- | ---------------------- |
| Sandbox | 2,500,000         | 2,500,000              |
| Build   | 25,000,000        | 25,000,000             |
| Scale   | 125,000,000       | 125,000,000            |
| Growth  | 400,000,000       | 400,000,000            |

Credits are granted per paid month from the purchase date, not the calendar month, and do not roll over. When the allocation is spent, requests return `429` with a different code until the period rolls over or the plan is upgraded:

```json
{ "error": { "code": "allowance_exhausted" } }
```

Handle the two codes separately. `rate_limited` resolves once the request rate falls within the window. `allowance_exhausted` does not resolve through retries.

## Payment

Prices are in USD. Plans are currently paid in USDC at 1 USDC = 1 USD. Network fees are paid by the customer.

## Titan Genesis 50

The first 50 organizations to purchase Build, Scale or Growth during the launch window (23 September 2026, 00:00 UTC – 23 October 2026, 00:00 UTC) receive 25% off the base subscription for 12 months. See [Titan Genesis 50](/titan/developer-doc/developers-portal/titan-genesis-50.md) for terms.

## Changing plans

| Action                     | Effect                                                                              |
| -------------------------- | ----------------------------------------------------------------------------------- |
| Repurchasing the same plan | Extends the period by the months bought                                             |
| Upgrading                  | Takes effect immediately; unused credits carry into the first month of the new plan |
| Downgrading                | Takes effect at the end of the current period                                       |
| Lapsing without renewal    | Organization returns to Sandbox limits; existing keys keep working                  |
