API Reference
REST API
Integrate OutboundCalls.ai into your stack. Manage agents, contacts, campaigns, and calls programmatically.
Base URL:https://api.outboundcalls.ai/v1
Authentication
All API requests require a Bearer token in the Authorization header. Generate API keys from your dashboard under Settings > API Keys.
Authorization: Bearer YOUR_API_KEY
Never expose your API keys in client-side code. Use environment variables and server-side requests.
Endpoints
Agents
POST
/v1/agentsGET
/v1/agentsGET
/v1/agents/:idPATCH
/v1/agents/:idDELETE
/v1/agents/:idContacts
POST
/v1/contactsPOST
/v1/contacts/importGET
/v1/contactsPATCH
/v1/contacts/:idDELETE
/v1/contacts/:idCampaigns
POST
/v1/campaignsGET
/v1/campaignsGET
/v1/campaigns/:idPOST
/v1/campaigns/:id/startPOST
/v1/campaigns/:id/pausePOST
/v1/campaigns/:id/resumeCalls
GET
/v1/callsGET
/v1/calls/:idGET
/v1/calls/:id/recordingGET
/v1/calls/:id/transcriptCredits
GET
/v1/credits/balanceGET
/v1/credits/usagePOST
/v1/credits/purchaseCode Examples
cURL
curl -X POST https://api.outboundcalls.ai/v1/campaigns \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Q1 Sales Outreach",
"agent_id": "agent_abc123",
"contact_list_id": "list_xyz789",
"schedule": {
"start_date": "2026-03-25",
"calling_hours": {"start": "09:00", "end": "18:00"},
"timezone": "Europe/London"
},
"retry_rules": {
"max_attempts": 3,
"delay_minutes": 60
},
"concurrent_calls": 20
}'JavaScript / Node.js
const response = await fetch('https://api.outboundcalls.ai/v1/campaigns', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Q1 Sales Outreach',
agent_id: 'agent_abc123',
contact_list_id: 'list_xyz789',
schedule: {
start_date: '2026-03-25',
calling_hours: { start: '09:00', end: '18:00' },
timezone: 'Europe/London',
},
retry_rules: {
max_attempts: 3,
delay_minutes: 60,
},
concurrent_calls: 20,
}),
});
const campaign = await response.json();
console.log(campaign.id); // "camp_def456"Webhooks
Receive real-time notifications for call events. Configure webhook URLs in your dashboard under Settings > Webhooks. All payloads are signed with HMAC-SHA256 for verification.
call.startedFired when a call connects to the recipientcall.completedFired when a call ends, includes transcript and outcomecall.failedFired when a call fails to connectcampaign.completedFired when all contacts in a campaign have been calledcontact.updatedFired when a contact status changes after a callcredits.lowFired when credit balance drops below thresholdRate Limits
TierRequestsConcurrentBurst
Standard100 req/min10 concurrent20 req/sec
Professional500 req/min50 concurrent50 req/sec
EnterpriseUnlimitedCustomCustom
Rate limit headers are included in every response: X-RateLimit-Remaining, X-RateLimit-Reset.