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

# Introduction

> The SendKit API lets you send transactional emails with a simple REST API.

## Base URL

The SendKit API is available at:

```
https://api.sendkit.dev
```

## Authentication

All API requests require a Bearer token in the `Authorization` header. You can create API keys from the [dashboard](https://app.sendkit.dev/api-keys).

```bash theme={null}
Authorization: Bearer sk_your_api_key
```

<Warning>
  Keep your API key secret. Do not expose it in client-side code or public repositories.
</Warning>

## Rate limiting

API requests are rate limited per team based on your plan. When you exceed the limit, the API returns a `429` status code with a `Retry-After` header indicating how many seconds to wait.

### Send email — `POST /emails`

| Plan | Rate limit    | Monthly quota    | Daily limit |
| ---- | ------------- | ---------------- | ----------- |
| Free | 60 req/min    | 3,000 emails     | 100 emails  |
| 10K  | 120 req/min   | 10,000 emails    | No limit    |
| 25K  | 120 req/min   | 25,000 emails    | No limit    |
| 50K  | 300 req/min   | 50,000 emails    | No limit    |
| 75K  | 300 req/min   | 75,000 emails    | No limit    |
| 100K | 600 req/min   | 100,000 emails   | No limit    |
| 150K | 600 req/min   | 150,000 emails   | No limit    |
| 250K | 600 req/min   | 250,000 emails   | No limit    |
| 500K | 1,200 req/min | 500,000 emails   | No limit    |
| 750K | 1,200 req/min | 750,000 emails   | No limit    |
| 1M   | 1,200 req/min | 1,000,000 emails | No limit    |
| 2M   | 1,200 req/min | 2,000,000 emails | No limit    |
| 5M   | 1,200 req/min | 5,000,000 emails | No limit    |

### Validate email — `POST /emails/validate`

Fixed at **60 requests per minute** for all plans.

### Rate limit error response

```json theme={null}
{
  "name": "rate_limit_exceeded",
  "message": "Rate limit exceeded. Please retry after 30 seconds."
}
```

## Errors

The API uses conventional HTTP status codes. All error responses include a `name` and `message` field.

| Status | Description                                                      |
| ------ | ---------------------------------------------------------------- |
| `200`  | Success                                                          |
| `202`  | Accepted — request received and will be processed asynchronously |
| `401`  | Missing or invalid API key                                       |
| `422`  | Validation error (invalid parameters, unverified domain, etc.)   |
| `429`  | Rate limit exceeded                                              |

```json theme={null}
{
  "name": "validation_error",
  "message": "The from address domain is not verified."
}
```

### Common validation errors

| Error message                            | Cause                                                             |
| ---------------------------------------- | ----------------------------------------------------------------- |
| The from address domain is not verified. | The domain in the `from` address is not verified in your account. |
| Monthly email quota exceeded.            | Your team has reached its monthly sending limit.                  |
| Sending is paused for this account.      | Sending has been paused for your account. Contact support.        |
