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

# Get campaign

> Retrieve a single campaign by ID

Returns the full campaign object.

## Authentication

<ParamField header="X-API-Key" type="string" required>
  Project API key for this organization and project. Format: `bot_live_…`
</ParamField>

## Path parameters

<ParamField path="organization_id" type="string" required>
  Organization ID. Must match the API key.
</ParamField>

<ParamField path="project_id" type="string" required>
  Project ID. Must match the API key.
</ParamField>

<ParamField path="campaign_id" type="string" required>
  Campaign ID.
</ParamField>

## Response

<ResponseField name="_id" type="string" required>
  Campaign ID.
</ResponseField>

<ResponseField name="name" type="string" required>
  Campaign name.
</ResponseField>

<ResponseField name="status" type="string" required>
  One of `draft`, `running`, `paused`, `completed`, `cancelled`.
</ResponseField>

<ResponseField name="call_direction" type="string" required>
  `outbound` or `inbound`.
</ResponseField>

<ResponseField name="campaign_type" type="string" required>
  `workflow`, `static`, or `whatsapp`.
</ResponseField>

<ResponseField name="workflow_id" type="string">
  Workflow ID when `campaign_type` is `workflow`.
</ResponseField>

<ResponseField name="phone_numbers" type="array">
  Caller ID numbers for outbound campaigns.
</ResponseField>

<ResponseField name="list_ids" type="array">
  Customer list IDs used for bulk dialing.
</ResponseField>

<ResponseField name="created_at" type="datetime">
  Creation timestamp.
</ResponseField>

<ResponseField name="updated_at" type="datetime">
  Last update timestamp.
</ResponseField>

## Errors

<ResponseField name="401" type="Unauthorized">
  Missing, invalid, or revoked API key.
</ResponseField>

<ResponseField name="403" type="Forbidden">
  API key is not authorized for this organization or project.
</ResponseField>

<ResponseField name="404" type="Not Found">
  Campaign not found.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://backend.botcadence.com/organizations/ORG_ID/projects/PROJECT_ID/campaigns/CAMPAIGN_ID" \
    -H "X-API-Key: bot_live_YOUR_KEY"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    `https://backend.botcadence.com/organizations/${organizationId}/projects/${projectId}/campaigns/${campaignId}`,
    { headers: { "X-API-Key": process.env.BOTCADENCE_API_KEY } }
  );
  const campaign = (await response.json()).data;
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.get(
      f"https://backend.botcadence.com/organizations/{organization_id}/projects/{project_id}/campaigns/{campaign_id}",
      headers={"X-API-Key": os.environ["BOTCADENCE_API_KEY"]},
  )
  campaign = response.json()["data"]
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "status": "success",
    "message": "Campaign retrieved successfully",
    "data": {
      "_id": "665f1a2b3c4d5e6f7a8b9c0d",
      "name": "January Sales Outreach",
      "description": "Follow up with trial users",
      "status": "draft",
      "call_direction": "outbound",
      "campaign_type": "workflow",
      "workflow_id": "665e00000000000000000001",
      "phone_numbers": [
        { "number": "+14155550100", "provider": "twilio" }
      ],
      "list_ids": ["665d00000000000000000001"],
      "timezone": "America/Los_Angeles",
      "start_time": "09:00",
      "end_time": "17:00",
      "call_days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
      "recording_enabled": true,
      "call_summary_enabled": true,
      "created_at": "2026-07-01T10:00:00Z",
      "updated_at": "2026-07-01T10:00:00Z"
    },
    "status_code": 200
  }
  ```

  ```json 404 theme={null}
  {
    "status": "error",
    "message": "Campaign not found",
    "data": null,
    "status_code": 404
  }
  ```
</ResponseExample>
