---
title: "Preview/enroll up to 50 clients into versioned agency packages, or retry/pause installation checks."
method: POST
path: "/v1/agency-packages"
---

# Preview/enroll up to 50 clients into versioned agency packages, or retry/pause installation checks.

`POST /v1/agency-packages`

## Request

- Base URL: `https://www.kaicalls.com/api`
- URL: `https://www.kaicalls.com/api/v1/agency-packages`
- Auth: HTTP bearer

Admin membership for every existing client. New imports create owned workspaces atomically under stable external references; partner identity comes only from verified auth. Enroll requires approved=true and the exact fingerprint/entries returned by preview. Installation resumes through the scheduled coordinator. Care templates do not grant campaign authority. Pause stops installation/checks, not existing live services. No billing, number purchase or campaign send is performed by this endpoint.

## Request body

- union
  - object
    - `action` 'preview' | 'enroll', required
    - `packages` string[], required
    - `enableFollowThrough` boolean: Explicit opt-in to existing caller follow-through; requires Convert.
    - `defaults` object: Fallbacks applied only AFTER reading saved client facts.
      - `timezone` string
      - `instructions` string
    - `approved` boolean: Must be true for enroll.
    - `fingerprint` string: Required for enroll; exact preview fingerprint.
    - `entries` object[], required
      - `businessId` string, uuid: Use an existing authorized client OR newClient, never both.
      - `newClient` object
        - `name` string, required
        - `externalRef` string, required
      - `expectedRevision` string, nullable, required: Current enrollment revision, or null for first enrollment/replay of a new import.
      - `profile` object
        - `timezone` string
        - `services` string[]
        - `serviceArea` string
        - `hours` string
        - `instructions` string
        - `website` string: HTTPS without credentials, or empty.
        - `reviewUrl` string: HTTPS without credentials, or empty.
  - object
    - `action` 'retry' | 'pause', required
    - `businessId` string, uuid, required
    - `revision` string, required

## Response `200`

Frozen preview or installation control accepted.

## Other responses

- `202`: Per-client queued/replayed/conflict outcomes. Inspect every result.
- `400`: Invalid package batch or missing approval.
- `401`: Authentication required.
- `403`: Missing scope or client admin membership.
- `409`: Preview or enrollment changed; refresh and review again.
- `413`: Body too large.
- `503`: Enrollment unavailable. The same approved batch is safe to retry.

---

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