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

# Rate limits

> Which endpoints are rate limited and how to handle 429 responses.

A few endpoints limit how fast you can create things. Reads are not limited.

| Endpoint | Limit |
| - | - |
| `POST /members` | 100 new members an hour per workspace. Members created by a pushed event count too. |
| `POST /calendar_events` | 1,000 pushes a minute per workspace. |
| `POST /bots` | 100 bots an hour per workspace. |
| `POST /workspaces` | 20 workspaces a day per API user, archived ones included. |

When the limit is reached, the API returns `429 Too Many Requests` with a
`retry_in_seconds` field in the response body, and the same number in the `Retry-After`
header:

```json theme={null}
{
  "errors": [{ "code": "rate_limited", "message": "Too many requests. Try again in 42 seconds." }],
  "retry_in_seconds": 42
}
```

Wait that many seconds before retrying. A simple backoff loop:

```javascript theme={null}
async function createMember(body) {
  while (true) {
    const res = await fetch('https://api.meetingkit.com/api/v1/members', {
      method: 'POST',
      headers: {
        authorization: process.env.MEETINGKIT_API_KEY,
        'happyscribe-version': '2026-10-12',
        'content-type': 'application/json',
      },
      body: JSON.stringify(body),
    });
    if (res.status !== 429) return res.json();
    const seconds = Number(res.headers.get('retry-after') ?? 60);
    await new Promise((r) => setTimeout(r, seconds * 1000));
  }
}
```

<Tip>
  Need a higher limit? [Contact
  sales](mailto:sales@happyscribe.co?subject=MeetingKit%20for%20Business) — limits can be raised
  for business plans.
</Tip>
