> ## 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.

# Start Campaign

> Initiates a new campaign with the specified configuration.

<Warning>
  **Deprecated.** This endpoint requires you to pass and manage `from_numbers` yourself. New integrations should use [Start Campaign (Pool)](/api-reference/endpoint/campaign/start-campaign-v2), which resolves numbers automatically from a managed pool (rotation, spam skipping, and auto-purchase).
</Warning>

Start a campaign that was created with `POST /campaign/save`. This is the legacy start endpoint for the standard campaign flow.

The endpoint schedules outbound calls for all valid contacts in the uploaded campaign list.

<Warning>
  Before starting a campaign, ensure you have:

  * Uploaded a contact list using [Upload campaign contact list](/api-reference/endpoint/campaign/upload-campaign-contact-list)
  * Configured your agent with the appropriate prompts and settings
  * Selected valid `from_numbers` that are provisioned for your workspace
</Warning>

## Request parameters

| Parameter      | Type   | Required | Description                                                      |
| -------------- | ------ | -------- | ---------------------------------------------------------------- |
| `agent_id`     | string | Yes      | ID of the agent that will handle all campaign calls              |
| `list_id`      | string | Yes      | ID of the uploaded campaign contact list                         |
| `from_numbers` | array  | Yes      | Workspace caller numbers or number IDs to use for outbound calls |

## Standard flow

1. Upload contacts with [Upload campaign contact list](/api-reference/endpoint/campaign/upload-campaign-contact-list).
2. Save the returned `list_id`.
3. Start calls with this endpoint.
4. Monitor progress with [Get all campaigns](/api-reference/endpoint/campaign/get-all-campaigns) and call history filtered by `bulk_list_id`.

## Beta large-campaign start

Do not use this endpoint for the beta 5,000+ row flow. After `POST /campaign/upload-csv`, wait for upload processing to complete, check balance, then start calls with [Make large campaign calls async](/api-reference/endpoint/campaign/make-large-campaign-calls-async).

## Important notes

* **Credits Required**: Ensure your workspace has sufficient credits for all contacts in the campaign
* **International Calls**: For international numbers, only Twilio from\_numbers are supported
* **Campaign Status**: Once started, the campaign status changes to "scheduled" or "ongoing"
* **Duplicate Prevention**: Cannot start a campaign that's already in "scheduled" or "ongoing" status

## Error responses

* **400**: Invalid agent\_id, campaign not found, insufficient credits, or campaign already started
* **401**: Invalid or missing API key
* **404**: Campaign or agent not found
* **402**: Insufficient credits to initiate campaign


## OpenAPI

````yaml post /campaign/start
openapi: 3.0.0
info:
  title: Ringg AI API Documentation
  description: >-
    This is the documentation for the Ringg AI APIs. The Ringg AI API follows
    RESTful principles, making it intuitive and easy to integrate with your
    applications. All API requests should be made to the base URL. The API
    accepts and returns data in JSON format. Ensure your requests include the
    appropriate Content-Type header for POST and PATCH requests.
  version: 2.0.0
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 assistants (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: 7251cb4b-3373-43a4-844c-b27a1d45e0c9
      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: 830f767a-397e-4b39-82ff-235cd344e2f9
                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) Array of phone numbers to use for outbound calls.
                  items:
                    type: string
                  example:
                    - '+1234567890'
                    - '+0987654321'
              example:
                agent_id: 830f767a-397e-4b39-82ff-235cd344e2f9
                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:
                  detail:
                    type: string
                    example: Invalid agent_id.
        '401':
          description: Unauthorized - Invalid or missing authentication.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: Invalid credentials
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: An unexpected error occurred.

````