> For the complete documentation index, see [llms.txt](https://docs.aevo.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aevo.xyz/api-reference/urls/private-api/postapikey.md).

# POST /api-key

Creates a new API key.

`POST https://api.aevo.xyz/api-key`

> **Authentication required.** Include your `AEVO-KEY` and `AEVO-SECRET` headers. See [Authentication](/api-reference/urls/authentication.md).

## Body Parameters

| Field          | Type           | Required | Description                                                                       |
| -------------- | -------------- | -------- | --------------------------------------------------------------------------------- |
| `name`         | string         | Yes      | API key name. Example: `main`                                                     |
| `ip_addresses` | array\[string] | No       | Whitelisted client's IP address for API access. Example: `['1.1.1.1', '2.2.2.2']` |
| `read_only`    | boolean        | No       | API can only access read-only endpoints if true. Example: `True`                  |

## Example Request

```bash
curl --request POST \
     --url https://api.aevo.xyz/api-key \
     --header 'accept: application/json' \
     --header 'AEVO-KEY: <your-api-key>' \
     --header 'AEVO-SECRET: <your-api-secret>' \
     --header 'content-type: application/json' \
     --data '{ ... }'
```

## Responses

**`200`** — API key details.

| Field          | Type           | Required | Description                                                                                                    |
| -------------- | -------------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| `name`         | string         | Yes      | name Example: `5732cc1f14e842f393e8cdecb49f02fa`                                                               |
| `api_key`      | string         | Yes      | Account's API Key. Example: `URPtt6eNCXgL8ERuchphUretdaga2smF`                                                 |
| `api_secret`   | string         | Yes      | Client's API Secret Example: `0140af7046a63530fc4bd319823d6eee98086ef0d446584b42f68b640b60c457`                |
| `ip_addresses` | array\[string] | No       | Whitelisted client's IP address for API access. Example: `[1.1.1.1 2.2.2.2]` Example: `['1.1.1.1', '2.2.2.2']` |
| `read_only`    | boolean        | Yes      | API can only access read-only endpoints if true. Example: `true` Example: `True`                               |

**`400`** — Bad request.

| Field   | Type   | Required | Description                                     |
| ------- | ------ | -------- | ----------------------------------------------- |
| `error` | string | Yes      | Error message. Example: `ERR_MALFORMED_REQUEST` |

**`401`** — Unauthorized.

| Field   | Type   | Required | Description                            |
| ------- | ------ | -------- | -------------------------------------- |
| `error` | string | Yes      | Error message. Example: `UNAUTHORIZED` |

**`429`** — Rate limit exceeded.

| Field   | Type   | Required | Description                                   |
| ------- | ------ | -------- | --------------------------------------------- |
| `error` | string | Yes      | Error message. Example: `RATE_LIMIT_EXCEEDED` |

**`500`** — Internal server error.

| Field   | Type   | Required | Description                              |
| ------- | ------ | -------- | ---------------------------------------- |
| `error` | string | Yes      | Error message. Example: `INTERNAL_ERROR` |
