> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Enroll Subscribers

> Manually enroll subscribers into a sequence

Manually enroll active subscribers into a sequence by email or subscriber ID. Enrollment starts at the first step after the trigger, or at a specific node when you pass `targetNodeId`. Subscribers that are inactive or already enrolled are skipped. You can pass up to 500 targets per request, combined across `emails` and `subscriberIds`.

The sequence must be open for enrollment: enabled (or capturing entrants) and not enrollment-paused.

## Request

<ParamField path="sequenceId" type="string" required>
  Sequence ID.
</ParamField>

<ParamField body="emails" type="string[]">
  Subscriber emails to enroll. Emails are trimmed and lowercased. Unknown emails
  are returned in `notFound`.
</ParamField>

<ParamField body="subscriberIds" type="string[]">
  Subscriber IDs to enroll.
</ParamField>

<ParamField body="targetNodeId" type="string">
  Node to start enrollment at. Defaults to the first non-trigger node connected
  to the trigger. Cannot be a trigger node. When the target is a delay step,
  enrollment is scheduled after the delay.
</ParamField>

Provide at least one of `emails` or `subscriberIds`.

```bash theme={null}
curl -X POST "https://api.sequenzy.com/api/v1/sequences/seq_abc123/enroll" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"emails": ["user@example.com", "unknown@example.com"]}'
```

## Responses

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "enrolled": 1,
    "skipped": 0,
    "notFound": ["unknown@example.com"],
    "targetNodeId": "node_email_1",
    "scheduledFor": "2026-06-11T10:00:00.000Z"
  }
  ```

  ```json 400 theme={null}
  {
    "error": "Provide emails or subscriberIds"
  }
  ```

  ```json 400 theme={null}
  {
    "error": "A maximum of 500 subscribers can be enrolled per request"
  }
  ```

  ```json 400 theme={null}
  {
    "error": "Cannot enroll subscribers while sequence enrollment is closed"
  }
  ```

  ```json 400 theme={null}
  {
    "error": "Target node not found in this sequence"
  }
  ```

  ```json 400 theme={null}
  {
    "error": "Cannot enroll subscribers at the trigger node"
  }
  ```

  ```json 400 theme={null}
  {
    "error": "Sequence has no enrollable step"
  }
  ```

  ```json 401 theme={null}
  {
    "error": "Invalid API key"
  }
  ```

  ```json 404 theme={null}
  {
    "error": "Sequence not found"
  }
  ```
</ResponseExample>
