> For the complete documentation index, see [llms.txt](https://shinkalabs.gitbook.io/hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinkalabs.gitbook.io/hub/andromeda/pricing/quotas.md).

# Quotas & rate limits

Two independent mechanisms shape what an API key can do: a **quota** (how much total work, by cost) and a **rate limit** (how fast).

## Quota

Each API key has a quota. Every call deducts the operation's cost from it (see [Pricing catalogue](/hub/andromeda/pricing/catalogue.md)). When the quota is exhausted, calls return `402` until it is topped up or the quota window rolls. An [idempotency](/hub/andromeda/guides/idempotency.md) replay returns the cached response without re-charging.

## Rate limit

Calls are throttled per API key in two sliding-window buckets:

* **`read`**: GETs and read-only POSTs (challenges, previews, status checks, ciphertext reads). Generous; can sustain high request rates.
* **`tx`**: everything that touches an engine or makes a transaction, including signing, prepares, submits, recovery flows, future-sign and identity. Smaller, because the MPC and FHE engines are the sensitive resource here.

Exceeding a bucket returns `429` with a `Retry-After` header. Back off and retry after the indicated delay. A flood of cheap reads cannot starve the `tx` bucket; the two are separate.

## What is not enforced here

Per-tenant multi-tenant controls beyond the key's own scope, quota and rate limit are not part of this layer. If you are reselling access or running many sub-tenants, build that accounting on your side.

## Practical guidance

* **Warm up presignatures off-peak.** `presign` is `tx`-class; building a buffer when you are idle keeps the signing critical path fast and avoids bursting the `tx` bucket later.
* **Batch when you can.** [Auto-batching](/hub/andromeda/guides/batching.md) packs many signature requests into fewer transactions, which is easier on both quota and the `tx` rate limit.
* **Use idempotency keys.** Retries with the same key replay rather than re-charge, so a transient failure does not cost you twice.
* **Watch for `402` and `429` separately.** `402` means you are out of quota (a billing-side problem). `429` means you are going too fast (a pacing problem). They need different responses.
* **Scope keys narrowly.** A `read`-only key cannot accidentally burn `tx` quota.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://shinkalabs.gitbook.io/hub/andromeda/pricing/quotas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
