---
title: "Preview bulk enrollment eligibility"
method: POST
path: "/public/v1/sequences/{sequenceId}/enrollments/eligibility"
tags: ["Sequences"]
---

# Preview bulk enrollment eligibility

`POST /public/v1/sequences/{sequenceId}/enrollments/eligibility`

Preview-only check of up to 500 People against this Sequence's enrollment policy (already-enrolled, active-sequence conflicts, concurrent-enrollment limit), backed by the People enrollment read projection rather than a live Postgres check per Person. Requires a USER API key. The authoritative check still runs when an enrollment is actually attempted, so a stale projection can never let an over-limit enrollment through. Instances in a Sequence the caller cannot view are returned as `{ instanceId, restricted: true }`.

## Path parameters

- `sequenceId` number, nullable

## Request body

- object
  - `personRowIds` string[], required

## Response `200`

Per-person eligibility results

- PublicSequenceBulkEligibilityResult
  - `results` object[], required
    - `personRowId` string, required
    - `eligible` boolean, required
    - `code` 'ALREADY_ENROLLED' | 'ACTIVE_SEQUENCE_CONFLICT' | 'MULTIPLE_SEQUENCES_DISABLED' | 'MAX_CONCURRENT_SEQUENCES_REACHED' | 'INVALID_REPLACE_INSTANCE'
    - `activeCount` number, required
    - `maxAllowed` number, required
    - `activeInstances` object[], required
      - `instanceId` number, required
      - `restricted` boolean, required
      - `sequenceId` number
      - `sequenceName` string

## Other responses

- `401` — Unauthorized
- `404` — Sequence not found

## Changes

- **2026-10-03** `666cd9efa9f3` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/getfrontline/apis/public-api/changes/public/v1/sequences/:sequenceId/enrollments/eligibility/post.md)

---

[API](https://skmtc.dev/getfrontline/apis/public-api.md) · [All operations](https://skmtc.dev/getfrontline/apis/public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getfrontline/apis/public-api/revisions/666cd9efa9f3?raw)
