# Create an API key

> Creates a key with scope full or sending, optionally restricted to one domain_id. The token is returned once.

Source: https://docs.pidgely.com/api-reference/v1/api-keys/create/

`POST https://api.pidgely.com/v1/api-keys`

Creates a key with `scope` `full` or `sending`, optionally restricted to one `domain_id`. The token is returned once.

**Authorization:** `Bearer pdg_…`. An API key with the `full` scope.

## Body parameters

JSON object.

| Name | Type | Required | Description |
|---|---|---|---|
| `name` | string | Yes | Display name. |
| `scope` | string | No | `full` or `sending`. One of `full`, `sending`. |
| `domain_id` | string | No | Restricts the key to sending from this domain (implies `sending_access`). UUID. |

## Request

```bash tab="cURL"
curl -X POST 'https://api.pidgely.com/v1/api-keys' \
  -H "Authorization: Bearer $PIDGELY_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "Production",
  "scope": "sending"
}'
```

## Response

`201 Created` with a JSON object.

## Errors

Native routes return `{"error": {"code", "message", "field", "request_id"}}`. See [Errors](https://docs.pidgely.com/errors/#native-api-errors).

| Status | Code | When |
|---|---|---|
| 401 | `missing_api_key` | No `Authorization: Bearer` header. |
| 403 | `invalid_api_key`, `insufficient_scope` | The key is invalid or lacks the scope. |
| 404 | `not_found` | The resource does not exist in this account. |
| 422 | `validation_error` | A field is missing or invalid; `field` names it. |
| 429 | `rate_limited`, `daily_quota_exceeded` | Too many requests, or the quota is used up. |
