> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.askelephant.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.askelephant.ai/_mcp/server.

# Rate limits

Authenticated requests to `/api/v2` resource routes are rate limited **per workspace**, not per API key or OAuth token. The limit is **1000 requests per 60-second window**, shared across every credential issued for that workspace. The limit applies to all HTTP methods on v2 resource routers (for example `GET`, `POST`, `PATCH`, and `DELETE` on contacts, companies, engagements, tags, users, and transcript resources)—not read-only traffic alone.

## Response headers

Every successful authenticated response includes proactive rate-limit headers so clients can monitor usage without waiting for a `429`:

| Header                  | When present                | Meaning                                                     |
| ----------------------- | --------------------------- | ----------------------------------------------------------- |
| `X-RateLimit-Limit`     | All authenticated responses | Maximum requests allowed in the current window (1000)       |
| `X-RateLimit-Remaining` | All authenticated responses | Requests remaining before the limit is exceeded             |
| `X-RateLimit-Reset`     | All authenticated responses | Unix epoch seconds when the current window resets           |
| `Retry-After`           | `429` only                  | Seconds to wait before retrying after the limit is exceeded |

If rate-limit enforcement is temporarily unavailable, the API returns `503` with a problem response. Retry after a short delay; successful responses are not returned in that state.

## Guidance for integrators

* Read `X-RateLimit-Remaining` and `X-RateLimit-Reset` on every response to pace workers before hitting the limit.
* Handle `429` explicitly and respect `Retry-After` before retrying.
* Use cursor pagination instead of aggressive polling.
* Back off with jitter when multiple workers share the same workspace credential.

If your use case needs predictable high-volume sync, tell us the expected throughput so limits can be tuned to something more scientific than vibes and coffee.