---
title: "Add new subscriber to list"
method: POST
path: "/lists/{list_id}/subscribe"
tags: ["Lists"]
---

# Add new subscriber to list

`POST /lists/{list_id}/subscribe`

Subscribe a new contact to a specific list.

## Path parameters

- `list_id` integer, required

## Request body

- object
  - `subscriber_data` object, required — Information about the subscriber.
    - `email` string, required — Subscriber's email address.
    - `name` string — First name.
    - `surname` string — Last name.
    - `gender` string — Gender. Must be `male` or `female`.
    - `status` integer — Subscriber status. `1` = subscribed, `2` = unsubscribed, `4` = hard bounce, `5` = spam complaint, `6` = unconfirmed.
    - `company` string — Company name.
    - `city` string — City.
    - `street` string — Street address.
    - `zip` string — ZIP or postal code.
    - `country` string — Country code.
    - `phone` string — Phone number.
    - `pretitle` string — Pre-title (e.g. Mr., Mrs.).
    - `surtitle` string — Post-nominal title (e.g. PhD).
    - `birthday` string — Birthday in `YYYY-MM-DD` format.
    - `nameday` string — Name day in `MM-DD` format.
    - `source` string — Source of the subscriber.
    - `custom_fields` object — Custom field values. Limited to 5000 characters total. Reserved system merge tags are ignored. If a field doesn't exist, a new field is created. Supported types: `string`, `date`, `json`, `int`, `float`, `url`. Float precision is limited to 3 decimal places. Keys are case-insensitive — they are trimmed and lowercased on input, so `SHOP`, `shop` and ` Shop ` are treated as the same field. Two keys that differ only in case or whitespace in the same request are rejected as duplicates.
    - `tags` unknown[] — Subscriber tags. Limited to 2000 characters total and 50 characters per tag. Content overwrites current tags. Only updates if the parameter is present and `update_existing` is `true`. To clear all tags, send an empty array.
      - unknown
    - `groups` object — Group assignments. Overwrites current values. To keep existing selections, send the current values together with new ones.
  - `trigger_autoresponders` boolean — Trigger automations when the subscriber is added.
  - `trigger_notification` boolean — Send a notification about the new subscriber if configured in list settings.
  - `update_existing` boolean — Update the subscriber if they already exist in the list.
  - `skip_confirmation` boolean — Skip double opt-in confirmation. If `false`, the system sends a double opt-in email and the subscriber is added with status `6` (unconfirmed).
  - `resubscribe` boolean — Force resubscribe if the subscriber was previously unsubscribed (status `2`). If `status` is provided in `subscriber_data`, it takes precedence. For resubscribe to work, the status must be `1`.

## Response `200`

OK

- object
  - `id` integer
  - `name` string
  - `surname` string
  - `email` string
  - `gender` unknown
  - `bounce_soft` integer
  - `bounced_hard` integer
  - `bounce_message` unknown
  - `inserted_at` string
  - `already_subscribed` boolean

## Other responses

- `422` — Unprocessable Entity

---

[API](https://skmtc.dev/ecomail/apis/ecomail-api.md) · [All operations](https://skmtc.dev/ecomail/apis/ecomail-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ecomail/ecomail-api/revisions/31b5789931fe/schema)
