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

# Authentication

> API keys, test and live modes, and scopes.

Every request carries an API key in the `Authorization` header:

```http theme={null}
Authorization: Bearer ps_live_3f9a...
```

A missing, unknown or revoked key returns `401` with the code `missing_api_key` or `invalid_api_key`.

## Test and live keys

| | Test (`ps_test_`) | Live (`ps_live_`) |
| - | - | - |
| Delivers email | Never | Yes |
| Costs credits | No | One per recipient |
| Needs a verified domain | No | Yes, for the `from` address |
| Appears on the dashboard | Yes, tagged *test* | Yes |

Use test keys in development and CI. The response has the same shape in both modes; `test_mode` tells you which one you used.

## Scopes

Each key carries scopes that limit what it can do. New keys get the defaults.

| Scope | Allows | Default |
| - | - | - |
| `emails:send` | `POST /emails` | Yes |
| `emails:read` | `GET /emails`, `GET /emails/{id}` | Yes |
| `domains:read` | Reading domains | Yes |
| `domains:write` | Adding and removing domains | No |
| `webhooks:write` | Managing webhook endpoints | No |

A call outside a key's scopes returns `403` with the code `missing_scope`.

## Managing keys

You can hold up to 20 active keys per team. Create one per app or environment, so you can revoke a leaked key without touching the others. Revoking takes effect within a minute.

<Warning>
  Keep keys on your server. Anyone with a live key can send email from your
  verified domains and spend your credits.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.