---
title: "Create an address"
description: "Creates an address on the domain. It receives as soon as the domain does, and it can be sent from once the domain can send."
url: "https://openemail.uk/docs/api/domains/addresses/create"
area: "API"
category: "Mailbox"
---

# Create an address

Creates an address on the domain. It receives as soon as the domain does, and it can be sent from once the domain can send.

`POST /domains/{id}/addresses`

## POST /domains/{id}/addresses

Creates an address on the domain. It receives as soon as the domain does, and it can be sent from once the domain can send.

## The request

**Parameters**

- `localPart` (string, required): The part before the `@`, 1 to 64 characters, lowercased. `*` is how the catch-all is written and cannot be an address of its own.
- `label` (string | null): A name for the address in the app, at most 120 characters.

## Example

Needs `domains:write`. A key limited to particular addresses or domains needs to hold the whole domain.

**curl**

```
curl -X POST "$OE/domains/b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f/addresses" -H "$AUTH" -H "Content-Type: application/json" \
  -d '{ "localPart": "billing", "label": "Invoices" }'
```

**Response**

```
{
  "object": "address",
  "id": "5f0c2b7e-8d41-4a6f-b913-7e2a0c4d9b18",
  "domainId": "b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f",
  "address": "billing@acme.com",
  "localPart": "billing",
  "label": "Invoices",
  "enabled": true,
  "lastReceivedAt": null,
  "createdAt": "2026-09-25T10:00:00.000Z",
  "updatedAt": "2026-09-25T10:00:00.000Z"
}
```

> Creating an address that was removed brings it back, enabled. Creating one that already exists turns it back on and returns it, and changes its label only when you send one.

> With the catch-all on, a new address starts with the signature and settings the catch-all has.

> An address reserved for an account answers `409` `address_reserved`, and a workspace at its address limit answers `422` `workspace_limit_reached`.
