---
title: "Add a contact to an audience"
description: "Takes an address already in the workspace book and returns the membership, with the contact it points at. There is one membership per audience and contact, so adding somebody already in the audience answers `200` with the original `addedAt` rather than adding a second one or failing. That makes the call safe to retry."
url: "https://openemail.uk/docs/api/audiences/add"
area: "API"
category: "Mailbox"
---

# Add a contact to an audience

Takes an address already in the workspace book and returns the membership, with the contact it points at. There is one membership per audience and contact, so adding somebody already in the audience answers `200` with the original `addedAt` rather than adding a second one or failing. That makes the call safe to retry.

`POST /audiences/{id}/contacts`

## POST /audiences/{id}/contacts

Takes an address already in the workspace book and returns the membership, with the contact it points at. There is one membership per audience and contact, so adding somebody already in the audience answers `200` with the original `addedAt` rather than adding a second one or failing. That makes the call safe to retry.

## Example

Needs `audiences:write`.

**curl**

```
curl -X POST "$OE/audiences/aud_4c1b8e2a7d9f05c36b4e8a71/contacts" -H "$AUTH" -H 'content-type: application/json' -d '{
  "email": "grace@example.com"
}'
```

**Response**

```
{
  "object": "audience_member",
  "audienceId": "aud_4c1b8e2a7d9f05c36b4e8a71",
  "addedAt": "2026-09-18T09:30:00.000Z",
  "contact": {
    "object": "contact",
    "email": "grace@example.com",
    "name": "Grace Hopper",
    "source": "manual",
    "notes": null,
    "lastSeenAt": null,
    "createdAt": "2026-09-18T09:00:00.000Z",
    "updatedAt": "2026-09-18T09:00:00.000Z"
  }
}
```

> An address that is not a contact is refused with `422` `contact_not_found` rather than created on the spot. Save it with `POST /contacts` first.

> `audiences:write` is the only scope checked. Putting a contact in a list is not a write to the contact.

> One call per contact. There is no bulk add in this version, and deleting the contact later drops this membership with it.
