Skip to main content
GET
https://api.getdoppel.ai/api/v1
/
api
/
v1
/
campaigns
List Campaigns
curl --request GET \
  --url https://api.getdoppel.ai/api/v1/api/v1/campaigns \
  --header 'Authorization: Bearer <token>'
{
  "success": true,
  "data": {
    "campaigns": [
      {}
    ]
  },
  "meta": {}
}

List Campaigns

Returns a list of all campaigns configured in your account. Campaigns represent different outreach initiatives like no-show recovery, patient reactivation, appointment reminders, and more.

Request

GET https://api.getdoppel.ai/api/v1/campaigns

Headers

HeaderRequiredDescription
AuthorizationYesBearer token with your API key

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number (1-indexed)
limitinteger25Items per page (max: 500)
clinic_idstring-Filter by clinic UUID
statusstring-Filter by status: active, paused, completed

Response

success
boolean
Whether the request was successful
data
object
meta
object
Pagination metadata

Campaign Object

FieldTypeDescription
idstringUnique campaign ID
namestringCampaign name
descriptionstringCampaign description
typestringCampaign type (e.g., no_show_recovery, reactivation)
channelstringChannel used: voice, whatsapp, or multi
statusstringCurrent status: active, paused, completed
clinic_idstringAssociated clinic UUID
created_atstringWhen the campaign was created (ISO 8601)
updated_atstringLast update timestamp (ISO 8601)
settingsobjectCampaign configuration settings

Examples

Basic Request

curl -X GET "https://api.getdoppel.ai/api/v1/campaigns" \
  -H "Authorization: Bearer dpl_live_YOUR_API_KEY"

Filter Active Campaigns

curl -X GET "https://api.getdoppel.ai/api/v1/campaigns?status=active" \
  -H "Authorization: Bearer dpl_live_YOUR_API_KEY"

Filter by Clinic

curl -X GET "https://api.getdoppel.ai/api/v1/campaigns?clinic_id=550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer dpl_live_YOUR_API_KEY"

Response Example

{
  "success": true,
  "data": {
    "campaigns": [
      {
        "id": "camp_abc123",
        "name": "No-Show Recovery",
        "description": "Reach out to patients who missed their appointments",
        "type": "no_show_recovery",
        "channel": "voice",
        "status": "active",
        "clinic_id": "550e8400-e29b-41d4-a716-446655440000",
        "created_at": "2024-01-01T00:00:00.000Z",
        "updated_at": "2024-01-15T10:30:00.000Z",
        "settings": {
          "max_attempts": 3,
          "retry_interval_hours": 24,
          "call_window_start": "09:00",
          "call_window_end": "18:00"
        }
      },
      {
        "id": "camp_def456",
        "name": "Patient Reactivation",
        "description": "Re-engage patients who haven't visited in 6+ months",
        "type": "reactivation",
        "channel": "whatsapp",
        "status": "active",
        "clinic_id": "550e8400-e29b-41d4-a716-446655440000",
        "created_at": "2024-02-01T00:00:00.000Z",
        "updated_at": "2024-02-15T14:20:00.000Z",
        "settings": {
          "inactivity_threshold_days": 180,
          "message_template": "reactivation_v2"
        }
      },
      {
        "id": "camp_ghi789",
        "name": "Appointment Reminders",
        "description": "Send reminders 24h before appointments",
        "type": "appointment_reminder",
        "channel": "whatsapp",
        "status": "active",
        "clinic_id": "550e8400-e29b-41d4-a716-446655440000",
        "created_at": "2024-01-15T00:00:00.000Z",
        "updated_at": "2024-01-15T00:00:00.000Z",
        "settings": {
          "reminder_hours_before": 24,
          "allow_reschedule": true,
          "allow_cancel": true
        }
      }
    ]
  },
  "meta": {
    "page": 1,
    "limit": 25,
    "total": 3,
    "total_pages": 1,
    "has_more": false
  },
  "request_id": "req_abc123xyz",
  "timestamp": "2024-01-15T10:30:00.000Z"
}

Campaign Types

TypeDescription
no_show_recoveryContact patients who missed appointments
reactivationRe-engage inactive patients
appointment_reminderSend appointment reminders
follow_upPost-appointment follow-up
recallPeriodic health check reminders
customCustom campaign types

Use Cases

List All Active Campaigns

async function getActiveCampaigns(apiKey) {
  const response = await fetch(
    'https://api.getdoppel.ai/api/v1/campaigns?status=active',
    {
      headers: { 'Authorization': `Bearer ${apiKey}` }
    }
  );
  const { data } = await response.json();
  return data.campaigns;
}

Get Campaigns by Type

import requests

def get_campaigns_by_type(api_key, campaign_type):
    response = requests.get(
        'https://api.getdoppel.ai/api/v1/campaigns',
        headers={'Authorization': f'Bearer {api_key}'}
    )
    campaigns = response.json()['data']['campaigns']
    return [c for c in campaigns if c['type'] == campaign_type]

# Get all no-show recovery campaigns
no_show_campaigns = get_campaigns_by_type(
    'dpl_live_YOUR_API_KEY',
    'no_show_recovery'
)