curl --request POST \
--url https://api.dialtu.com/api/v2/public/calls/schedule \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agent_id": 123,
"max_duration": 300,
"phone_number": "+15551234567"
}
'import requests
url = "https://api.dialtu.com/api/v2/public/calls/schedule"
payload = {
"agent_id": 123,
"max_duration": 300,
"phone_number": "+15551234567"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({agent_id: 123, max_duration: 300, phone_number: '+15551234567'})
};
fetch('https://api.dialtu.com/api/v2/public/calls/schedule', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": "success",
"call_id": 123,
"message": "<string>",
"queue_status": "queued",
"scheduled_at": "<string>"
}Schedule a call
Queue an outbound AI call to a phone number, either right away or at start_time.
The call is placed by the voice agent identified by agent_id; the engine
(Aurora or Solara) is detected from the agent, so the same request works for
both. The response confirms the queued call — the call itself runs
asynchronously.
Pass client_id to attach the call to an existing contact, or use
request_data / dynamic_data to inject values the agent’s prompt refers to.
Retries on no-answer are configured with the max_retries / retry_* fields.
curl --request POST \
--url https://api.dialtu.com/api/v2/public/calls/schedule \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agent_id": 123,
"max_duration": 300,
"phone_number": "+15551234567"
}
'import requests
url = "https://api.dialtu.com/api/v2/public/calls/schedule"
payload = {
"agent_id": 123,
"max_duration": 300,
"phone_number": "+15551234567"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({agent_id: 123, max_duration: 300, phone_number: '+15551234567'})
};
fetch('https://api.dialtu.com/api/v2/public/calls/schedule', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": "success",
"call_id": 123,
"message": "<string>",
"queue_status": "queued",
"scheduled_at": "<string>"
}Authorizations
API key created in the dashboard under Settings → API Keys. Send it as Authorization: Bearer pk_....
Body
Request schema for sending a call (v2 with multi-provider support).
Shared by the dashboard's send-call endpoint and the public API, so the descriptions below are what integrators read on docs.dialtu.com.
Destination phone number in E.164 format (for example +15551234567). A number without a leading + is combined with country_code.
ID of the voice agent that places the call, as shown in the dashboard.
Maximum call length in seconds; the call is ended when it is reached.
Caller ID to dial from, as one of the account's phone numbers. Defaults to the agent's configured number.
Overrides the agent's opening line for this call.
Wait for the recipient to speak before the agent says its first sentence.
Arbitrary key/value pairs made available to the agent's prompt as variables (for example {{appointment_date}}).
Values the agent may update during the call; returned with the call record.
When to place the call, ISO 8601. Omit to queue it immediately. Interpreted in timezone when no offset is given.
Message the agent leaves when the call reaches voicemail.
What to do on voicemail: hangup, leave_message (uses voicemail_message), or ignore (continue as if answered).
hangup, leave_message, ignore Record the call. Defaults to the agent's setting.
JSON Schema of fields to extract from the transcript after the call; results are stored on the call record.
Detect whether a human or a machine answered before the agent starts talking.
IANA timezone (for example America/Mexico_City) used to interpret start_time and retry time slots.
Country calling code prepended when phone_number has no + prefix.
Disposition tags the agent may apply to this call. Tags that do not exist yet are created.
Show child attributes
Show child attributes
ID of an existing client to attach the call to (see Create a client).
How many times to retry the call. 0 disables retries.
Days to wait before a retry: 0 retries the same day, 1–30 on a later day.
Time of day for retries: morning, midday, afternoon, evening, or custom (then set retry_specific_time).
Clock time (HH:MM) for retries when retry_time_slot is custom.
Retry when the call is not answered or reaches voicemail.
Retry when the agent applies a disposition tag of type retry.
Response
OK
Public API response schema for scheduled calls.
Response status
"success"Unique identifier for the scheduled call
Human-readable success message
Current status of the call in the queue
queued, processing When the call is scheduled to execute (ISO 8601 format)