# Rate Limits

To maintain the performance and reliability of our API we enforce the following rate limits on API requests:

* Maximum of 5 concurrent requests at any given time
* 300 requests per minute (equivalent to 5 requests per second)
* 900 requests per 15 minutes (equivalent to 1 request per second)

When a rate limit is reached, Missive API will return the following HTTP error status code: `429 Too Many Requests` with the following headers:

| Header                | Description                                                                       |
| --------------------- | --------------------------------------------------------------------------------- |
| Retry-After           | How many seconds the client should wait before attempting a new request           |
| X-RateLimit-Limit     | The rate limit ceiling that is applicable for the current request                 |
| X-RateLimit-Remaining | The number of requests left for the current rate-limit window                     |
| X-RateLimit-Reset     | The time at which the rate limit resets, specified in UTC epoch time (in seconds) |

{% stepper %}
{% step %}

#### Continuously query the API (24/7)

Send at most 1 request per second. In most programming languages, you can achieve this with a 1-second “sleep” between requests.
{% endstep %}

{% step %}

#### Periodic bursts of requests

Send at most 5 requests per second. This way you can spread your usage over time, for instance:

* one burst of 900 requests lasting 3 minutes, every 15 minutes
* one burst of 600 requests lasting 2 minutes, every 10 minutes
* one burst of 300 requests lasting 1 minute, every 5 minutes
  {% endstep %}
  {% endstepper %}

## Reducing API calls

Some endpoints support batch operations to reduce the number of API calls needed:

* **GET /v1/messages/:id,:id2,:id3** - Retrieve multiple messages in a single call by passing comma-separated message IDs. See [Get a Message](/docs/developers/rest-api/endpoints.md#get-a-message) for details.

Using batch endpoints helps you stay within rate limits when processing large volumes of data.

Last updated on July 17th, 2023

<details>

<summary>Need more specific answers?</summary>

[Contact us](/docs/developers/contact.md)

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://missiveapp.com/docs/developers/rest-api/rate-limits.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
