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

# Rate limits

> How many calls each workspace can make, how to know where you stand, and how to sync without hitting the limits.

Limits apply **per workspace, all keys together**. A normal sync uses a small fraction of them.

| What | Limit | `details.limit` when reached |
| - | - | - |
| Reads | **120 per minute** | `reads_per_minute` |
| Writes (every change, tests and resends included) | **30 per minute** | `writes_per_minute` |
| Pages of full leads — `GET /v1/leads`, the leads of a list or a post, `GET /v1/events` | **2,000 per day** (UTC) | `lead_pages_per_day` |
| Profiles added to tracking | **50 per day** (UTC) | `tracked_profile_additions_per_day` |
| Tests and resends of destinations | **5 per minute** | `tests_per_minute` (one destination resent more than 5 times a minute: `resends_per_minute`) |
| All accepted calls | **20,000 per day** (UTC) | `requests_per_day` |

There is no limit on the number of profiles you track.

Two more limits apply **per IP address**, before any key is read:

* **600 requests per minute** from one address.
* **20 unknown keys in 10 minutes** from one address, then every request from it is refused for 10 minutes (`failed_keys_per_ip`, `Retry-After: 600`).

## When a limit is reached

The API answers `429` with the code `trop_de_requetes`, the limit in `details.limit`, and a `Retry-After` header: the number of seconds to wait. Nothing was done. Wait, then send the same request again.

```http theme={null}
HTTP/1.1 429 Too Many Requests
Retry-After: 60
RateLimit-Limit: 120
RateLimit-Remaining: 0
RateLimit-Reset: 60
```

## Know where you stand

Every answer carries three headers for the per-minute limit of its kind (reads or writes):

| Header | |
| - | - |
| `RateLimit-Limit` | The limit per minute: 120 for a read, 30 for a write. |
| `RateLimit-Remaining` | What remains of it. |
| `RateLimit-Reset` | `60`: the window slides over the last minute, so waiting a minute always frees the full limit. |

`GET /v1/limits` returns all your workspace's limits, what remains of the reads this minute, and the calls made today.

## Sync what changed, not everything

Reading every lead every five minutes wastes your limits and finds nothing new. Instead:

* **Let TIKT call you.** A [webhook](/webhooks) sends each new lead as it is found: nothing to poll.
* **Ask for what's new.** `GET /v1/events?after=<last event id>` returns only what happened since your last call; `GET /v1/leads?first_seen_after=…` only the leads found since a date; `status_changed_after` the ones discarded or restored since. See [Syncing changes](/api/syncing).
* **Use the biggest pages.** `limit=100` reads 100 leads for one call.
* **Batch your changes.** `POST /v1/leads/batch` and `POST /v1/lists/{id}/leads` act on up to 100 leads in one call.


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