---
title: "Manage agency offers using a strict reviewed command."
method: POST
path: "/v1/agency-offers"
---

# Manage agency offers using a strict reviewed command.

`POST /v1/agency-offers`

## Request

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

IDs are in the body. Runtime refinements, current role, assignment and exact approval/hash/lease guards apply. Enrollment creation and commit require a stable Idempotency-Key. Installation run_scenarios also requires evals:write. Care requires sms:write and exact owner approval; preparation creates a draft, launch explicitly queues it. Provider-unknown outcomes require reconciliation. Configuration, testing, activation, billing and measured outcomes are distinct.

## Headers

- `Idempotency-Key` string

## Request body

- union
  - object
    - `action` 'save', required
    - `partnerId` string, uuid, required
    - `offerId` string, uuid
    - `expectedRevision` string, uuid
    - `draft` object, required
      - `name` string, required
      - `industry` 'legal' | 'home_services' | 'neutral', required
      - `commercialMode` 'commission' | 'partner_billed', required
      - `retail` object, required
        - `monthlyCents` integer, required
        - `currency` 'USD', required
        - `scope` string, required
        - `collection` 'agency_external', required
      - `packages` object[], required
        - `key` 'convert' | 'care' | 'improve', required
        - `version` string, required
        - `variant` string, required
      - `supportedClaims` string[], required
      - `supportPolicy` string, required
      - `brandingLimitationsAcknowledged` true, required
  - object
    - `action` 'preview', required
    - `partnerId` string, uuid, required
    - `offerId` string, uuid, required
  - object
    - `action` 'publish', required
    - `partnerId` string, uuid, required
    - `offerId` string, uuid, required
    - `expectedRevision` string, uuid, required
    - `fingerprint` string, required
  - object
    - `action` 'archive', required
    - `partnerId` string, uuid, required
    - `offerId` string, uuid, required
    - `expectedRevision` string, uuid, required

## Response `200`

Recorded command receipt; read back current evidence.

## Other responses

- `202`: Enrollment per-client receipt; inspect waiting and conflict states.
- `400`: Invalid command.
- `403`: Authority or approved owner revision required.
- `409`: State changed or provider reconciliation required.
- `503`: Dependency unavailable; durable operation retained.

---

[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)
