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

# Rate Limits

> The API enforces rate limits to ensure fair usage and platform stability.

## Rate Limits

| Authentication Type | Rate Limit |
| - | - |
| API Key | 1,000 requests/minute |
| OAuth (Development) | 100 requests/minute |
| OAuth (Approved) | 10,000 requests/minute |

> [!TIP]
>
> **Benefits of OAuth App Approval**
>
> * **100x higher rate limits** – Scale without worrying about throttling
> * **Marketplace listing** – Get discovered in the OrbitForms directory
> * **Priority support** – Direct access to our developer relations team
>
> [Learn about the review process →](https://app.useorbitcrm.ai/developer/app-review)

Need higher limits for your use case? Contact us at [support@orbitforms.ai](mailto:support@orbitforms.ai) to discuss custom rate limits for your application.

## Write and import limits

Reads count against the per-minute limits above. Writes have their own buckets:

| Operation | Limit |
| - | - |
| Any `POST` / `PATCH` / `DELETE` on CRM endpoints | 300 per minute per credential |
| `POST /api/v1/contacts` (single creates) | 100 per hour per user with an API key; for an app, 100 per hour per workspace (1,000 once approved), apart from the person's own |
| `PATCH` / `DELETE` on `/api/v1/contacts/:id`, contact tags | 500 / 100 / 500 per minute per user with an API key; for an app, the same per workspace, apart from the person's own |
| Imports (`/contacts/import`, `/companies/import`, `/deals/import`, `/activities/import`) | 100,000 rows per workspace per hour, counted by rows, not calls |
| `POST /api/v1/sequences/unsubscribes` | 20 calls per minute (60 for an approved app), 1,000 emails per call |
| Webhook creation | 20 per hour per workspace with an API key; 10 per hour (500 once approved) per workspace for an app |

A migration should use the imports: 1,000-row batches move 100,000 records an hour, where single creates would take days. See [Migrating from another CRM](https://docs.useorbitcrm.ai/developers/migrating-from-another-crm.md).

## Handling Rate Limits

> [!WARNING]
>
> **429 Too Many Requests**
>
> Webhook creation has its own limit: 60 an hour per app per workspace while an app is in development, 500 once it is approved, and 60 an hour per workspace for API keys. `POST /api/v1/webhooks` answers with `RateLimit-Limit` and `RateLimit-Remaining`, and a `429` adds `RateLimit-Reset`. Pause and resume a webhook with `PATCH` `is_active` instead of deleting and re-creating it.
>
> When you exceed the rate limit, you'll receive a 429 response with a `Retry-After` header. Implement exponential backoff:
>
> 1. Wait for the time specified in the `Retry-After` header
> 2. Or implement exponential backoff (1s, 2s, 4s, 8s...)
> 3. Maximum retry time should be capped at 60 seconds

## Best Practices

* Cache responses when possible to reduce API calls
* Use webhooks instead of polling for real-time updates
* Batch operations when the API supports it
* Monitor your rate limit headers proactively

[Next: Webhooks →](https://docs.useorbitcrm.ai/developers/webhooks)


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