> ## Documentation Index
> Fetch the complete documentation index at: https://vobiz.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Voice Campaign Manager API

> Create and operate outbound voice campaigns with reusable agents, CSV contact lists, caller-ID pools, retries, scheduling, capacity controls, and signed webhooks.

The Voice Campaign Manager API lets you create outbound calling campaigns and operate their full lifecycle. You define a reusable agent, configure campaign capacity and caller ID behavior, upload contacts, then start or schedule the campaign.

<Info>
  The production campaign service is `https://campaign.vobiz.ai`. The examples use `{account_id}` and `{auth_token}` placeholders. Keep credentials on your server and never expose them in client-side code.
</Info>

## Workflow

<Steps>
  <Step title="Create an agent">
    Save the returned agent `id`. The agent defines the answer URL, optional hangup URL, request methods, and static SIP headers.
  </Step>

  <Step title="Create a campaign">
    Select the agent, concurrency, timezone, caller-ID strategy, retry policy, and optional schedule or daily calling window.
  </Step>

  <Step title="Configure caller IDs">
    For a pool campaign, add at least one number. Fixed campaigns use `fixed_caller_id`. Per-contact campaigns read the caller ID from each CSV row.
  </Step>

  <Step title="Upload contacts">
    Upload a CSV with a `to` column. A valid upload moves the campaign from `draft` to `ready`.
  </Step>

  <Step title="Launch and monitor">
    Call the start endpoint for an immediate launch, or set `scheduled_at`. Monitor campaign health, contacts, attempts, and account capacity.
  </Step>

  <Step title="Export outcomes">
    Download campaign results or query CDRs with `campaign_id` for billing and call-quality analysis.
  </Step>
</Steps>

## Base URLs

| Service          | Production                  | Local development       |
| ---------------- | --------------------------- | ----------------------- |
| Campaign Manager | `https://campaign.vobiz.ai` | `http://localhost:8095` |
| CDR API          | `https://cdr.vobiz.ai`      | `http://localhost:8096` |

## Resource map

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/docs/campaign-manager/authentication">
    Configure customer and internal request headers.
  </Card>

  <Card title="Agents" icon="user-gear" href="/docs/campaign-manager/agents">
    Manage reusable answer and hangup webhook configurations.
  </Card>

  <Card title="Campaigns" icon="bullhorn" href="/docs/campaign-manager/campaigns">
    Create, list, retrieve, and update outbound campaigns.
  </Card>

  <Card title="Campaign controls" icon="sliders" href="/docs/campaign-manager/controls">
    Start, pause, resume, cancel, and archive campaigns.
  </Card>

  <Card title="Contacts and results" icon="address-book" href="/docs/campaign-manager/contacts-and-results">
    Upload CSV contacts, browse contacts and attempts, and export results.
  </Card>

  <Card title="Caller-ID pools" icon="phone" href="/docs/campaign-manager/caller-pool">
    Add numbers and manage rotation limits.
  </Card>

  <Card title="Capacity and monitoring" icon="gauge-high" href="/docs/campaign-manager/capacity-and-monitoring">
    Inspect account capacity and campaign health.
  </Card>

  <Card title="Webhook events" icon="webhook" href="/docs/campaign-manager/webhooks">
    Verify signed campaign and contact events.
  </Card>
</CardGroup>

## Lifecycle

```text theme={null}
draft ──upload──▶ ready ──start/schedule──▶ running ──▶ completed
                     │                       │  ▲
                     │                       ▼  │
                     │                     paused
                     │                       │
                     └───────────────────────┴──▶ cancelled

non-running campaign ──archive──▶ archived
```

`queued` can appear while launch work is being prepared. Some mutation endpoints reject both `queued` and active states.

## Common status codes

| Code  | Meaning                                                               |
| ----- | --------------------------------------------------------------------- |
| `200` | Request succeeded.                                                    |
| `201` | Resource created.                                                     |
| `400` | Request data is invalid.                                              |
| `401` | Authentication failed. Check both headers and account ownership.      |
| `404` | The resource does not exist for the authenticated account.            |
| `409` | The requested transition or edit is not allowed in the current state. |
| `502` | An upstream platform dependency is unavailable.                       |
