Skip to main content

Creating Your First Campaign

This guide walks you through creating a batch campaign that places outbound calls according to a schedule. We’ll focus on a clean, reliable API workflow. (The dashboard workflow is covered separately in the UI.)

Who this is for

  • Teams launching outbound campaigns for the first time.
  • Developers who want a safe, repeatable “draft → schedule → monitor” process.

What you need before you start

  • An agent (with a voice and system prompt)
  • At least one assigned outbound number for that agent
  • Contacts ready in a folder (recommended) or a small inline list
If you need to prepare contacts first:

Step 1: Create a campaign draft

Create a batch call in draft status, with your contact source attached. Example: scheduled campaign using a contact folder:
curl -X POST "https://api.truedy.ai/api/public/v1/batch-calls" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: 77777777-8888-9999-aaaa-bbbbbbbbbbbb" \
  -d '{
    "name": "First Campaign - Demo",
    "agent_id": "1f4baf16-1540-4d91-9696-7f34b2f2cb77",
    "contact_source": "folder",
    "contact_folder_id": "6f4af8be-0a96-49b0-ac2a-a359f46cc966",
    "schedule_type": "scheduled",
    "scheduled_at": "2026-03-20T14:30:00Z",
    "timezone": "America/New_York",
    "start_time": "10:00",
    "end_time": "17:00",
    "working_days": [1,2,3,4,5],
    "max_concurrent_calls": 10,
    "max_calls_per_day": 200
  }'
Response gives you at least:
  • id (campaign ID)
  • status
  • total_contacts (or similar meta)

Step 2: Schedule (if needed)

If you created as draft or your workflow requires an explicit schedule action:
curl -X POST "https://api.truedy.ai/api/public/v1/batch-calls/CAMPAIGN_ID/schedule" \
  -H "Authorization: Bearer YOUR_API_KEY"
Docs:

Step 3: Monitor progress

Use:

Example: check analytics

curl "https://api.truedy.ai/api/public/v1/batch-calls/CAMPAIGN_ID/analytics" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example: see what’s still scheduled

curl "https://api.truedy.ai/api/public/v1/batch-calls/CAMPAIGN_ID/contacts?status=scheduled&limit=50&offset=0" \
  -H "Authorization: Bearer YOUR_API_KEY"

Step 4: Operational controls (pause/resume)

When you need to stop future scheduled calls:
  • Pause: /batch-calls/{id}/pause
  • Resume: /batch-calls/{id}/resume
Docs: See operational semantics:

Next steps