Call campaigns
Outbound calling campaigns at scale
Upload a list, set the objective, and let AI agents call, qualify and report back — hundreds of calls in parallel.
Scale instantly
Hundreds of simultaneous calls with no team to hire or train.
AI-driven objective
Surveys, reminders, lead qualification, follow-ups: you set the goal, the agent adapts.
Structured results
Every call returns a summary and actionable data, pushed to your CRM.
How it works
1
Import your contacts
Upload a list or sync your CRM.
2
Set the objective
Describe what the agent should achieve on each call.
3
Launch and track
The campaign runs; follow results in real time.
# A campaign is one AI call per contact — loop in your stack.
curl -X POST https://api.phonevoice.ai/api/v1/calls/initiate \
-H "Authorization: Bearer $PHONEVOICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"recipient_phone_number": "+33612345678",
"agent_id": 1533,
"objective": "Confirm the appointment"
}'
const contacts = ["+33611111111", "+33622222222", "+33633333333"];
for (const recipient_phone_number of contacts) {
await fetch("https://api.phonevoice.ai/api/v1/calls/initiate", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.PHONEVOICE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ recipient_phone_number, agent_id: 1533, objective: "Confirm the appointment" }),
});
}
import os, requests
contacts = ["+33611111111", "+33622222222", "+33633333333"]
for number in contacts:
requests.post(
"https://api.phonevoice.ai/api/v1/calls/initiate",
headers={"Authorization": f"Bearer {os.environ['PHONEVOICE_API_KEY']}"},
json={"recipient_phone_number": number, "agent_id": 1533, "objective": "Confirm the appointment"},
)
require "net/http"
require "json"
contacts = ["+33611111111", "+33622222222", "+33633333333"]
uri = URI("https://api.phonevoice.ai/api/v1/calls/initiate")
contacts.each do |number|
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer #{ENV['PHONEVOICE_API_KEY']}"
req["Content-Type"] = "application/json"
req.body = { recipient_phone_number: number, agent_id: 1533, objective: "Confirm the appointment" }.to_json
Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
end
Explore next
Ready to give your apps a voice?
Create your developer account and place your first call in minutes.