KaiCalls Agency Packages API

The Agency Packages API from KaiCalls — 1 operation(s) for agency packages.

GitHub OpenAPI

Operations 2

GET /v1/agency-packages Read up to 50 accessible clients, Convert/Care/Improve enrollment receipts and… #
POST /v1/agency-packages Preview/enroll up to 50 clients into versioned agency packages, or retry/pause… #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kaicalls-com:kaicalls-com-agency-packages-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kaicalls-com-agency-packages-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: KaiCalls Public Agency Packages API
  version: '2026-06-05'
  description: Machine-readable surface for KaiCalls external developers and client agents.
servers:
- url: https://www.kaicalls.com/api
security:
- bearerAuth: []
tags:
- name: Agency Packages
paths:
  /v1/agency-packages:
    get:
      summary: Read up to 50 accessible clients, Convert/Care/Improve enrollment receipts and…
      description: Membership and token tenant scope are both required. Also accepts authenticated dashboard sessions. Reports distinguish unavailable data, recorded lead status and verified business outcomes.
      parameters:
      - in: query
        name: after
        schema:
          type: string
          format: uuid
        description: Exclusive business-id page cursor.
      - in: query
        name: ids
        schema:
          type: string
        description: Optional comma-separated UUIDs, maximum 50; still membership/token scoped.
      responses:
        '200':
          description: Catalog, authorized client page, enrollment checks, artifacts, report and nextCursor.
        '400':
          description: Invalid page.
        '401':
          description: Authentication required.
        '403':
          description: Missing scope.
        '503':
          description: Enrollment schema or evidence unavailable.
      x-required-scopes:
        allOf:
        - workspaces:read
        - calls:read
        - leads:read
        - emails:read
      tags:
      - Agency Packages
      operationId: getV1AgencyPackages
      x-operation-id-source: derived
    post:
      summary: Preview/enroll up to 50 clients into versioned agency packages, or retry/pause…
      description: 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.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - type: object
                required:
                - action
                - packages
                - entries
                additionalProperties: false
                properties:
                  action:
                    type: string
                    enum:
                    - preview
                    - enroll
                  packages:
                    type: array
                    minItems: 1
                    maxItems: 3
                    uniqueItems: true
                    items:
                      type: string
                      enum:
                      - convert
                      - care
                      - improve
                  enableFollowThrough:
                    type: boolean
                    default: false
                    description: Explicit opt-in to existing caller follow-through; requires Convert.
                  defaults:
                    type: object
                    additionalProperties: false
                    description: Fallbacks applied only AFTER reading saved client facts.
                    properties:
                      timezone:
                        type: string
                        maxLength: 100
                      instructions:
                        type: string
                        maxLength: 3000
                  approved:
                    type: boolean
                    description: Must be true for enroll.
                  fingerprint:
                    type: string
                    pattern: ^[a-f0-9]{64}$
                    description: Required for enroll; exact preview fingerprint.
                  entries:
                    type: array
                    minItems: 1
                    maxItems: 50
                    items:
                      type: object
                      required:
                      - expectedRevision
                      additionalProperties: false
                      properties:
                        businessId:
                          type: string
                          format: uuid
                          description: Use an existing authorized client OR newClient, never both.
                        newClient:
                          type: object
                          required:
                          - name
                          - externalRef
                          additionalProperties: false
                          properties:
                            name:
                              type: string
                              minLength: 1
                              maxLength: 200
                            externalRef:
                              type: string
                              minLength: 1
                              maxLength: 150
                        expectedRevision:
                          type: string
                          nullable: true
                          description: Current enrollment revision, or null for first enrollment/replay of a new import.
                        profile:
                          type: object
                          additionalProperties: false
                          properties:
                            timezone:
                              type: string
                              maxLength: 100
                            services:
                              type: array
                              maxItems: 20
                              items:
                                type: string
                                minLength: 1
                                maxLength: 120
                            serviceArea:
                              type: string
                              maxLength: 500
                            hours:
                              type: string
                              maxLength: 1000
                            instructions:
                              type: string
                              maxLength: 3000
                            website:
                              type: string
                              maxLength: 1000
                              description: HTTPS without credentials, or empty.
                            reviewUrl:
                              type: string
                              maxLength: 1000
                              description: HTTPS without credentials, or empty.
              - type: object
                required:
                - action
                - businessId
                - revision
                additionalProperties: false
                properties:
                  action:
                    type: string
                    enum:
                    - retry
                    - pause
                  businessId:
                    type: string
                    format: uuid
                  revision:
                    type: string
                    pattern: ^[a-f0-9]{64}$
      responses:
        '200':
          description: Frozen preview or installation control accepted.
        '202':
          description: Per-client queued/replayed/conflict outcomes. Inspect every result.
        '400':
          description: Invalid package batch or missing approval.
        '401':
          description: Authentication required.
        '403':
          description: Missing scope or client admin membership.
        '409':
          description: Preview or enrollment changed; refresh and review again.
        '413':
          description: Body too large.
        '503':
          description: Enrollment unavailable. The same approved batch is safe to retry.
      x-required-scopes:
        allOf:
        - workspaces:write
        - agents:write
      tags:
      - Agency Packages
      operationId: postV1AgencyPackages
      x-operation-id-source: derived
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'KaiCalls API key. Per-operation scope requirements are published on each operation as `x-required-scopes` — a scope string, or a nested `{ allOf: [...] }` / `{ anyOf: [...] }` expression. An operation with no `x-required-scopes` requires a valid key but no particular scope.'
      x-scopes:
      - workspaces:read
      - workspaces:write
      - numbers:read
      - numbers:write
      - agents:read
      - agents:write
      - communication-runs:read
      - communication-runs:write
      - calls:read
      - calls:write
      - sms:read
      - sms:write
      - webhooks:read
      - webhooks:write
      - events:read
      - events:replay
      - lifecycle:write
      - leads:read
      - leads:write
      - emails:read
      - emails:write
      - sdr:read
      - sdr:write
      - evals:read
      - evals:write
      - appointments:read
      - appointments:write
      - knowledge:read
      - knowledge:write
      - products:read
      - products:write
      - integrations:write
      - approvals:write
      - concierge:write
      - billing:read
      - billing:write
      - call_evidence:read
      - call_evidence:write
      - support:write
    sessionAuth:
      type: apiKey
      in: cookie
      name: sb-access-token
      description: Authenticated dashboard session cookie. Used by first-party flows that mint or manage API keys.