Trigger one call
| Field | Required | Notes |
|---|---|---|
agent_id | Yes | Which agent should make the call |
to_number | Yes | Destination (E.164 format) |
prompt | Yes | The CALL PURPOSE - what the agent should say / why it is calling. Outbound calls are rejected without it. |
from_number | No | Which of the agent’s numbers to call from. Sets the caller ID and the voice (per-number voice). Omit to use the agent’s first outbound-enabled number. |
dynamic_vars | No | Key-value pairs injected into the agent’s prompt |
campaign_id | No | Link this call to a batch campaign |
One agent can have many phone numbers. Pass
from_number to call from a specific one (this also sets the voice - see Voices). Omit it and the engine uses the agent’s first outbound-enabled number. Import and enable numbers on the phone numbers endpoint before calling.call_id immediately. The actual call happens asynchronously - Twilio dials, the agent waits for pickup, and then the conversation runs.
What happens on the receiving end
Voicemail detection runs
The engine uses Twilio’s AMD + a speech-pattern matcher in parallel. If the call hits an answering machine, the engine hangs up - no money wasted talking to voicemail.
Human picks up
The agent waits a beat, then speaks. For outbound calls, the agent typically introduces itself before stating the reason.
History-aware outbound
This is one of Nixflex’s biggest differences from Retell and Vapi. When you trigger an outbound call, Nixflex auto-fetches the past call history for theto_number and injects summaries into the agent’s prompt. The agent already knows who it’s calling.
Without history-aware outbound (other platforms):
You upload a CSV withWith history-aware outbound (Nixflex):name,appointment_time, and 12 other variables. You wire each one into your prompt as{name}and{appointment_time}. If any variable is missing, the prompt breaks.
You upload phone numbers and a single prompt: “Remind the caller about their appointment tomorrow.” The agent reads the past call summary for that number and already knows Sarah booked Tuesday at 2pm.You don’t need to wire variables. The agent has memory.
Batch campaigns
For calling many numbers at once, use batch campaigns. One API call creates the campaign and queues all the dials with concurrency control.schedule_type is "now", the campaign launches immediately. Use "schedule" and a scheduled_at ISO timestamp to launch later.
Each recipient becomes one outbound call. The engine respects a global concurrency cap so you don’t melt your Twilio account.
See Batch create for the full schema.
Voicemail behaviour
When voicemail is detected:- The engine hangs up immediately (does not leave a message by default)
- The call is logged with
voicemail_detected: true - You’re not charged for what wasn’t a real conversation
Useful for
- Appointment reminders the day before
- Lead qualification after a form submission
- Renewal nudges
- Customer satisfaction follow-ups
- Debt collection (with proper compliance on your end)
- Re-engagement of cold contacts