> 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/postregister.md).

# POST /register

Registers a new account.

`POST https://api.aevo.xyz/register`

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

## Body Parameters

| Field                   | Type    | Required | Description                                                                                                                        |
| ----------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `account`               | string  | Yes      | Account's Ethereum address. Example: `0xE9b3a48d15BE316A8e34FAd53fFDFDddf0C3D24b`                                                  |
| `signing_key`           | string  | Yes      | Ethereum address of the signing key. Example: `0xE9b3a48d15BE316A8e34FAd53fFDFDddf0C3D24b`                                         |
| `expiry`                | string  | Yes      | Signing key expiry in UNIX timestamp in seconds. Example: `1685520000`                                                             |
| `account_signature`     | string  | Yes      | Hash of EIP-712 signature signed by the account. Example: `0x4c55895aa6f2dfc2da8189a71a054348ce63abbc1ae27267977e0d9cc6848e91`     |
| `signing_key_signature` | string  | Yes      | Hash of EIP-712 signature signed by the signing key. Example: `0x4c55895aa6f2dfc2da8189a71a054348ce63abbc1ae27267977e0d9cc6848e91` |
| `referral_code`         | string  | No       | Referral Code (username of referrer) of the new account registration Example: `Indignant-Intelligent-Satoshi`                      |
| `no_api_key`            | boolean | No       | If registering without creating an api key Example: `False`                                                                        |

## Example Request

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

## Responses

**`200`** — Account keys and credentials.

| Field          | Type           | Required | Description                                                                                     |
| -------------- | -------------- | -------- | ----------------------------------------------------------------------------------------------- |
| `success`      | boolean        | Yes      | Request successful if true. Example: `true` Example: `True`                                     |
| `signing_keys` | array\[object] | No       |                                                                                                 |
| `api_key`      | string         | Yes      | Account's API Key. Example: `URPtt6eNCXgL8ERuchphUretdaga2smF`                                  |
| `api_secret`   | string         | Yes      | Client's API Secret Example: `0140af7046a63530fc4bd319823d6eee98086ef0d446584b42f68b640b60c457` |
| `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` |
