# Costs and limits

> The one protection limit of the API, the headers that show it, and what does and does not cost credits.

Last updated: 2026-10-30. Source: https://docs.smartchat.marketing/en/concepts/rate-limits/

## The protection limit

There is **one** limit: 120 requests per minute for each API key or MCP connection. REST and MCP calls made with the same key or connection count together. It protects you and us from a mistake such as a loop that calls the API without end. It is not a usage cap. A key can lower its own limit; it cannot raise it.

Every answer shows where you stand:

| Header | Meaning |
|---|---|
| `X-RateLimit-Limit` | Requests allowed per minute for this key. |
| `X-RateLimit-Remaining` | Requests left in the current minute. |
| `X-RateLimit-Reset` | When the minute ends (Unix time in seconds). |
| `X-RateLimit-Class` | The class of the call: `read`, `write`, `send`, `bulk` or `upload`. |

If you go over, the answer is 429 [`rate_limited`](https://docs.smartchat.marketing/en/errors/#rate_limited) with the header `Retry-After` (seconds). Wait that long and send the request again. It is safe to repeat the request; nothing was done.

The Python example needs the package `requests` (`pip install requests`).

**Python**

```python
import os
import time
import requests

def get_with_wait(url, headers):
    while True:
        response = requests.get(url, headers=headers)
        if response.status_code != 429:
            return response
        time.sleep(int(response.headers.get("Retry-After", "1")))

headers = {"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]}
print(get_with_wait("https://api.smartchat.marketing/v1/me", headers).status_code)
```

SmartChat counts calls in an audit log. If the amount of calls looks unusual, the SmartChat team is warned. There is no other limit on how much you may do.

## The daily limit of the WhatsApp number

This is not a limit of your key. WhatsApp limits how many new people one phone number may write to per day. A newsletter preview shows it: `daily_limit` is that number (or `null` if there is none) and `estimated_days` is how many days the send takes because of it. A larger audience is sent over several days; nothing is lost. See [`get_newsletter_send_preview`](https://docs.smartchat.marketing/en/api/reference/newsletters/get_newsletter_send_preview/).

## Credits

Calls to the API do not use credits. Doing the same thing in the app with an AI feature may use credits. A reference page says "Uses credits" if a call is an exception. Sending messages follows the quota of your plan; if it is used up, the answer is [`quota_exceeded`](https://docs.smartchat.marketing/en/errors/#quota_exceeded).

