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

> ## Agent Instructions
> To search or read these docs, connect the Ringg docs MCP server at https://docs.ringg.ai/mcp (no key needed; tools search_ringg_ai and query_docs_filesystem_ringg_ai) instead of browsing pages one by one. Setup for each client: https://docs.ringg.ai/resources/mcp-server/docs-mcp-server/mcp-for-ai-assistants.md
> The dashboard labels agents "Assistants"; these docs say "agent". Both mean the same object, identified by agent_id.
> API base URL: https://prod-api.ringg.ai/ca/api/v0. Send the workspace API key in the X-API-KEY header, from server-side code only.
> Placing a call dials a real phone number and spends credits. Confirm the number with the user before calling.
> To act on a Ringg workspace (place calls, edit agents, read transcripts), use the separate Ringg workspace MCP server at https://mcp.ringg.ai/mcp: https://docs.ringg.ai/resources/mcp-server/workspace-mcp-server/overview.md

> Start a campaign uploaded with POST /campaign/save using caller numbers you list in from_numbers; the campaign then moves to scheduled or ongoing.

# Start Campaign

export const RelatedTopics = ({items}) => <div className="not-prose mt-12">
    <div className="text-sm font-medium text-gray-500 dark:text-zinc-400 mb-3">Related topics</div>
    <div className="flex flex-col gap-2.5">
      {items.map(([title, href]) => <a key={href} href={href} className="flex items-center gap-2.5 text-sm text-gray-700 hover:text-gray-950 dark:text-zinc-300 dark:hover:text-white">
          <Icon icon="file-text" size={16} color="currentColor" />
          {title}
        </a>)}
    </div>
  </div>;

To let Ringg choose caller numbers from a [number pool](/documentation/inventory/phone-numbers/number-pools) instead, use [Start campaign (number pool)](/api-reference/calling/campaigns/start-campaign-v2).

`list_id` is the one returned by [Upload campaign contact list](/api-reference/calling/campaigns/upload-campaign-contact-list); `agent_id` is the agent the list was uploaded for; `from_numbers` are workspace numbers from [List workspace numbers](/api-reference/inventory/numbers/get-workspace-numbers): send each number's `id` (recommended), or the number written exactly as it is listed there. Each retry dials the next number in the list.

```json theme={null}
{
  "agent_id": "your-agent-id",
  "list_id": "123e4567-e89b-12d3-a456-426614174000",
  "from_numbers": ["00000000-0000-4000-8000-000000000109"]
}
```

A success returns `{"status": "campaign registered successfully!"}` and the campaign's `campaign_status` becomes `scheduled` or `ongoing` in [Get all campaigns](/api-reference/calling/campaigns/get-all-campaigns).

The workspace balance must cover the campaign ([Billing](/documentation/manage-account/billing)); otherwise the request returns `402`.

## Errors

* `400`: an ID is wrong, a caller number is not in the workspace (`From numbers not found: …`), or the campaign has already started.
* `402`: the balance does not cover the campaign.
* `401`: `X-API-KEY` is missing or invalid.

<RelatedTopics items={[["Monitor a campaign", "/documentation/deploy/campaigns/manage-a-campaign"], ["Run a campaign by API", "/documentation/deploy/campaigns/campaigns-by-api#with-the-api"], ["Terminate calls by campaign", "/api-reference/calling/campaigns/stop-campaign"]]} />


## OpenAPI

````yaml post /campaign/start
openapi: 3.0.0
info:
  title: Ringg AI API Documentation
  description: >-
    The Ringg AI REST API. Base URL https://prod-api.ringg.ai/ca/api/v0; send
    your workspace API key in the X-API-KEY header from server-side code only.
    Requests and responses are JSON.
  version: 2.0.0
  contact:
    name: Ringg AI support
    email: admin@ringg.ai
    url: https://docs.ringg.ai
servers:
  - url: https://prod-api.ringg.ai/ca/api/v0
security: []
tags:
  - name: workspace
    description: Endpoints for managing your workspace.
  - name: agent
    description: Endpoints for managing agents.
  - name: calling
    description: Endpoints for making and managing calls.
  - name: campaign
    description: Endpoints for managing campaigns.
  - name: analytics
    description: Endpoints for accessing call analytics and performance metrics.
  - name: termination
    description: Endpoints for terminating active calls using different methods.
  - name: knowledgebase
    description: Endpoints for managing knowledge bases.
paths:
  /campaign/start:
    post:
      tags:
        - campaign
      summary: Start Campaign
      description: Initiates a new campaign with the specified configuration.
      operationId: startCampaign
      parameters:
        - name: X-API-KEY
          in: header
          description: (Required) Your Ringg AI API key.
          required: true
          schema:
            type: string
            example: rg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - agent_id
                - list_id
                - from_numbers
              properties:
                agent_id:
                  type: string
                  description: (Required) ID of the agent that will handle the calls.
                  example: 00000000-0000-4000-8000-0000000000a1
                list_id:
                  type: string
                  description: (Required) ID of the uploaded campaign contact list.
                  example: 123e4567-e89b-12d3-a456-426614174000
                from_numbers:
                  type: array
                  description: >-
                    (Required) Caller numbers, as workspace number IDs from List
                    workspace numbers (recommended) or as numbers written
                    exactly as listed there. Each retry dials the next number in
                    the list. A number not in the workspace returns 400.
                  items:
                    type: string
                  example:
                    - '+1234567890'
                    - '+14155550123'
              example:
                agent_id: 00000000-0000-4000-8000-0000000000a1
                list_id: 123e4567-e89b-12d3-a456-426614174000
                from_numbers:
                  - '+1234567890'
      responses:
        '200':
          description: Campaign started successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: Success message indicating campaign registration
                    example: campaign registered successfully!
                  has_ongoing_calls:
                    type: boolean
                    description: Whether the workspace has other ongoing calls
                    example: false
                example:
                  status: campaign registered successfully!
                  has_ongoing_calls: false
        '400':
          description: Bad Request - Invalid input.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invalid agent_id.
        '401':
          description: Unauthorized - Invalid or missing authentication.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invalid credentials
        '402':
          description: >-
            Payment Required - The balance (or available credit limit) does not
            cover the campaign.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: >-
                      your current balance is insufficient to complete this
                      action
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: An unexpected error occurred. Please try again later.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.