Skip to main content
POST
/
batch-calls
curl --request POST \
  --url https://api.truedy.ai/api/public/v1/batch-calls \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Quick Follow-up",
  "agent_id": "agt_f9447372",
  "schedule_type": "immediate",
  "contacts": [
    {
      "phone_number": "+15551234567",
      "first_name": "John",
      "last_name": "Doe"
    }
  ]
}
'
{
  "data": {
    "id": "batch_c3d4e5f6",
    "name": "Q2 Outreach Campaign",
    "status": "draft",
    "agent_id": "agt_f9447372",
    "from_number": "+18005559876",
    "schedule_type": "immediate",
    "scheduled_at": null,
    "timezone": "America/New_York",
    "concurrency": 5,
    "retry_attempts": 2,
    "total_contacts": 500,
    "called": 0,
    "completed": 0,
    "failed": 0,
    "pending": 500,
    "created_at": "2026-04-01T09:00:00Z",
    "updated_at": "2026-04-05T10:22:00Z"
  },
  "meta": {
    "request_id": "req_32e7531c",
    "ts": "2026-04-05T10:22:00Z"
  }
}

Authorizations

Authorization
string
header
required

API key authentication. Include your API key in the Authorization header: Bearer <your_api_key>

Body

application/json
name
string
required

Campaign name

Required string length: 1 - 255
Example:

"March follow-up campaign"

agent_id
string
required

Agent ID to use

Example:

"agt_f9447372"

phone_number_ids
string[] | null

Phone number IDs to use (auto-selected from agent if empty)

Example:
["num_11111111-1111-1111-1111-111111111111"]
phone_rotation_strategy
enum<string>

How to rotate phone numbers

Available options:
random,
sequential,
round_robin
Example:

"random"

contact_source
enum<string>

Where contacts come from

Available options:
csv,
folder,
manual
Example:

"csv"

contact_folder_id
string | null

Folder ID if source is folder

Example:

"folder_abc123"

contact_ids
string[] | null

Existing contact IDs to add

Example:
["ctc_aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"]
contacts
object[] | null

Inline contacts array

Example:
[
{
"phone_number": "+15551234567",
"first_name": "John",
"last_name": "Doe"
}
]
schedule_type
enum<string>

When to start

Available options:
immediate,
scheduled
Example:

"scheduled"

scheduled_at
string<date-time> | null

When to start (required if schedule_type=scheduled)

Example:

"2026-03-20T09:00:00Z"

max_calls_per_day
integer | null

Maximum calls per day

Required range: x >= 1
Example:

500

timezone
string

IANA timezone for scheduling

Example:

"America/New_York"

start_time
string | null

Daily start time (HH:MM)

Pattern: ^\d{2}:\d{2}$
Example:

"09:00"

end_time
string | null

Daily end time (HH:MM)

Pattern: ^\d{2}:\d{2}$
Example:

"17:30"

working_days
integer[]

Working days (1=Mon, 7=Sun)

Required range: 1 <= x <= 7
Example:
[1, 2, 3, 4, 5]

Response

Batch call created successfully

data
object
required
meta
object
required