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

> ## Agent Instructions
> Install the Courier skill before writing code: `npx skills add trycourier/courier-skills`. It carries the verified SDK shapes and the rules you cannot get wrong.
> Authenticate every request with `Authorization: Bearer <API_KEY>`. A workspace has several environments and each has its own keys, which are plain `pk_` strings with no environment prefix. Start with Test.
> Send with `client.send.message` from the Node SDK (`@trycourier/courier` v7 and later, where the client is the default import). Reference a template by its `nt_` id or its alias.
> A send accepts a bare Elemental element list, but storing content on a template requires the top-level elements wrapped in a channel element.
> To translate a template, write one locale at a time with `PUT /notifications/{id}/locales/{localeId}`, which merges into the existing translations. `PUT /notifications/{id}/content` and `PUT /notifications/{id}/elements/{elementId}` overwrite translations along with the content, so send each element's `id` and `locales` back, and first remove every `checksum` and any `locales` key that starts with an underscore.
> Templates and journeys can be built in the Courier app or created through the API. Either way they live in the workspace and are referenced by ID when you send.
> The hosted MCP server is https://mcp.courier.com. For a briefing on what Courier is and when to use it, read https://www.courier.com/llms.txt.
> Prefer the Guides tab for how-do-I questions and the Docs tab for how-does-it-behave questions. The API reference lives under /api-reference.

# Send rate limits

> Set the maximum rate Courier sends to a provider. Sends above the rate are queued, not dropped.

Send to Courier at any rate, and Courier hands those sends to each provider at the rate you set. Without a limit, Courier sends to the provider as fast as possible.

![Provider settings with a Send Rate Limit field and a Per dropdown set to Second](https://mintcdn.com/courier-4f1f25dc/NaVp9cBYP7WR7F2u/assets/integration-send-rate-limit-settings.webp?fit=max\&auto=format\&n=NaVp9cBYP7WR7F2u\&q=85\&s=b1b7c169da648677b46a468201612234)

Each provider sets its own limits, and they often differ by account or plan. Amazon SES, for example, gives each account a maximum send rate. Set the send rate limit to match your account.

## Set a limit in the console

In Integrations, click the provider, then click **Settings**. Enter a number in **Send Rate Limit** and pick **Second**, **Minute**, or **Hour** under **Per**. Clear the field to remove the limit.

## Set a limit with the API

The limit is `rate_limit` in the provider configuration's `settings`. Set it when you create the configuration with [Create a Provider](/docs/api-reference/providers/create-a-provider), or change it with [Update a Provider](/docs/api-reference/providers/update-a-provider).

```json theme={null}
{
  "provider": "sendgrid",
  "settings": {
    "api_key": "SG.xxxxxxxx",
    "rate_limit": { "rate": 10, "period": "second" }
  }
}
```

| Field | Value |
| - | - |
| `rate` | A number greater than 0. Fractions are allowed. |
| `period` | `second`, `minute`, or `hour` |

The interval between sends (`period` divided by `rate`) must be from 1 millisecond to 12 hours. A value outside that range returns a `400` with an `InvalidRateLimit` error. Set `rate_limit` to `null` for no limit.

**An update replaces the whole `settings` object,** so include the provider's credentials and `rate_limit` in every `PUT`.

## How it works

* **Sends above the rate are queued, not dropped.** Courier sends them to the provider as the rate allows.
* **Each configuration has its own limit.** Two SES configurations each get their own rate, and so does each environment. A limit in Test doesn't apply to Production.
* **Changes apply within 60 seconds.**

## Related docs

> **[Rate limit backoff](/docs/integrations/overview#rate-limit-management)**
>
> How Courier retries when a provider returns a 429.

> **[Amazon SES](/docs/integrations/email/aws-ses)**
>
> Connect SES and match your account's maximum send rate.
