---
title: "Add existing contacts to a list"
method: POST
path: "/lists/{id}/contacts"
tags: ["Campaigns"]
---

# Add existing contacts to a list

`POST /lists/{id}/contacts`

## Request

- Base URL: `https://sendhq.cc/api/v1`
- URL: `https://sendhq.cc/api/v1/lists/{id}/contacts`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sendhq/apis/sendhq-api/docs/lists/:id/contacts/post.ts> (a function with typed inputs; its response is checked against the schema)

Add up to 500 existing contacts by `contact_ids` or `emails`. Each membership mirrors the contact: subscribed contacts join subscribed, others join in their current state. Unknown references are returned in `notFound`.

## Path parameters

- `id` string, required

## Request body

- object
  - `emails` string[], required

## Response `200`

Successful response

- object
  - `listId` string, required
  - `added` integer, required
  - `notFound` unknown[], required
    - unknown
  - `list` object, required
    - `id` string, required
    - `name` string, required
    - `description` string, required
    - `form` object, required
      - `enabled` boolean, required
      - `from` string, required
      - `redirectUrl` string, uri, required
      - `url` string, uri, required
    - `counts` object, required
      - `subscribed` integer, required
      - `pending` integer, required
      - `unsubscribed` integer, required
    - `welcome` object, required
      - `enabled` boolean, required
      - `subject` string, required
      - `html` string, required
      - `content` unknown, required
    - `site` object, required
      - `enabled` boolean, required
      - `slug` string, required
      - `title` string, required
      - `description` string, required
      - `accent` string, required
      - `url` string, uri, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid authentication
- `402`: A paid entitlement is required for this recipient or feature
- `403`: The workspace, domain, policy, or suppression state forbids the operation
- `404`: Tenant-scoped resource not found
- `409`: Resource state or idempotency conflict
- `413`: Attachment count or bytes exceed the accepted limit
- `422`: Request validation or suppression check failed
- `423`: Sending is paused for this sender identity or workspace; the message gives the reason and how to appeal
- `429`: A monthly, daily, or trial usage limit was reached
- `500`: Unexpected server error
- `502`: An upstream provider operation failed
- `503`: A required provider or signing configuration is unavailable
- `default`: An error response using SendHQ's standard JSON envelope

---

[API](https://skmtc.dev/sendhq/apis/sendhq-api.md) - [All operations](https://skmtc.dev/sendhq/apis/sendhq-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sendhq/apis/sendhq-api/revisions/98e39e48cb9a?raw)
