---
title: "Put one person into the exact published Hive sequence version they reviewed. Read publishedDocument and currentVersion with read_sequence first. This queues real messages to an eligible person, so your AI asks before this runs; with Hive approvals on, Hive asks again inside Hive. A changed publication requires a new review. Contacts without live consent are recorded as stopped_opt_out and receive no messages."
method: POST
path: "/api/v1/tools/enroll_contact_in_sequence"
---

# Put one person into the exact published Hive sequence version they reviewed. Read publishedDocument and currentVersion with read_sequence first. This queues real messages to an eligible person, so your AI asks before this runs; with Hive approvals on, Hive asks again inside Hive. A changed publication requires a new review. Contacts without live consent are recorded as stopped_opt_out and receive no messages.

`POST /api/v1/tools/enroll_contact_in_sequence`

## Request

- Base URL: `https://hivepublish.com`
- URL: `https://hivepublish.com/api/v1/tools/enroll_contact_in_sequence`
- Auth: HTTP bearer

This reaches real people, so the person is asked before it runs. Their own AI client asks them. When the connection was made with Hive approvals switched on, the first call returns a single-use Hive approval link instead of acting, and the exact request is repeated with approvalToken and an Idempotency-Key once they approve it inside Hive.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `sequenceId` string, required: The published Hive sequence.
  - `expectedVersion` integer, required: The positive currentVersion from read_sequence whose publishedDocument the person reviewed.
  - `contactId` string, required: The Hive contact identity to enroll.
  - `entryEventKey` string, required: A caller-generated key of 8 to 180 characters naming why this person is being enrolled. The same key never enrolls the same person twice.
  - `approvalToken` string: Single-use token returned by Hive after the owner approves this exact action.

## Response `200`

Tool result or approval challenge

- union
  - ToolResult
    - `data` unknown, required
    - `meta` object, required
      - `tool` string
      - `workspaceId` string, uuid
  - ApprovalChallengeResponse
    - `data` ApprovalChallenge, required
      - `confirmationRequired` unknown, required
      - `challengeId` string, uuid, required
      - `approvalToken` string, required: Secret, single-use token. Retry only after the human approves approvalUrl.
      - `approvalUrl` string, uri, required
      - `expiresAt` string, date-time, required
      - `warning` string
    - `meta` object, required

## Other responses

- `400`: Invalid input
- `401`: Missing or invalid credential
- `403`: Missing workspace scope, role permission, or plan entitlement
- `409`: Idempotency conflict, replay, or request still in progress
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/hivepublish/apis/hive-developer-api.md) · [All operations](https://skmtc.dev/hivepublish/apis/hive-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hivepublish/apis/hive-developer-api/revisions/b440c763583e?raw)
