---
title: "Create a signature"
description: "Add a named signature to an address or to a catch-all."
url: "https://openemail.uk/docs/api/signatures/create"
area: "API"
category: "Mailbox"
---

# Create a signature

Add a named signature to an address or to a catch-all.

`POST /signatures`

## POST /signatures

Add a named signature to an address or to a catch-all.

## Example

Needs `settings:write`. `address`, `name` and `html` are required.

**curl**

```
curl -X POST "$OE/signatures" -H "$AUTH" -H "Content-Type: application/json" \
  -d '{
    "address": "ada@acme.com",
    "name": "Short",
    "html": "<p>Ada<br>Acme Ltd</p>",
    "isReplyDefault": true
  }'
```

**Response**

```
{
  "object": "signature",
  "id": "sig_8f2c1a9b7d3e4f60a1b2c3d4",
  "address": "ada@acme.com",
  "name": "Short",
  "html": "<p>Ada<br />Acme Ltd</p>",
  "isDefault": false,
  "isReplyDefault": true,
  "createdAt": "2026-10-12T09:14:03.117Z",
  "updatedAt": "2026-10-12T09:14:03.117Z"
}
```

> The HTML is sanitised the way outgoing mail is, so what comes back can differ from what you sent, and it has to keep some text or an image. It takes at most 150,000 characters, before and after sanitising, or the call is a 422 `signature_too_long`.

> The first signature of an address becomes its default for new mail and for replies unless `isDefault` or `isReplyDefault` says `false`. A later one becomes a default only when asked, and then takes that place from the signature that held it.

> `name` is 1 to 80 characters and unique on its address, whatever the case. A name the address already uses is a 409 `signature_name_taken`. An address holds at most 50 signatures, and the one past that is a 422 `signature_limit_reached`.

> The address has to be one of the workspace, or a catch-all on a verified domain here with its catch-all on. Anything else, a whole domain included, is a 422 `invalid_parameter`.

## Reference

- [`POST /signatures`](https://openemail.uk/docs/api/reference/settings#post-signatures): full reference
