API reference

REST API

Manage agents, calls, phone numbers, SMS, contacts, campaigns, automations, knowledge bases, and more programmatically over HTTPS.

Base URL & authentication

All endpoints are relative to https://jagcall.com/v1/ and require an Authorization: Bearer jc_live_… header (an API key, or a jca_… OAuth access token). New to the API? Start with the Getting started guide.

This reference is generated from the OpenAPI spec (v1.0.0). Download the full machine-readable spec to import into Postman, Insomnia, or an SDK generator: openapi.json.

List endpoints are paginated with limit and offset query parameters and return a { items, total, limit, offset } envelope. See each endpoint's parameters for its limit range. Errors use a consistent shape — see Getting started.

Agents

GET/v1/agents

List all agents for this organization.

Parameters

agent_typestringoptional
limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "name": "Example",      "status": "active",      "llm_provider": "string",      "llm_model": "string",      "llm_temperature": 0,      "system_prompt": "string",      "tts_provider": "string",      "tts_voice_id": "tts_voice_123",      "tts_model": "string",      "voice_speed": 0,      "stt_provider": "string",      "stt_model": "string",      "stt_language": "string",      "greeting_message": "string",      "end_call_silence_seconds": 0,      "max_call_duration_seconds": 142,      "allow_interruptions": false,      "interruption_min_words": 0,      "vad_confidence": 0,      "vad_start_secs": 0,      "vad_min_volume": 0,      "webhook_url": "https://example.com",      "created_at": "2025-11-01T14:30:00Z",      "updated_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/agents \  -H "Authorization: Bearer jc_live_..."
POST/v1/agents

Create a new AI agent.

Request body

json
{  "name": "Example",  "system_prompt": "string",  "llm_provider": "openai",  "llm_model": "gpt-4o-mini",  "llm_temperature": 0.7,  "tts_provider": "cartesia",  "tts_voice_id": "tts_voice_123",  "tts_model": "sonic-2",  "stt_provider": "deepgram",  "stt_model": "nova-3",  "stt_language": "en",  "greeting_message": "string",  "end_call_silence_seconds": 600,  "max_call_duration_seconds": 1800,  "allow_interruptions": true,  "interruption_min_words": 2,  "vad_confidence": 0.7,  "vad_start_secs": 0.4,  "vad_min_volume": 0.6,  "webhook_url": "https://example.com",  "webhook_secret": "string",  "voice_speed": 1}

Response

json
{  "id": "id_123",  "name": "Example",  "status": "active",  "llm_provider": "string",  "llm_model": "string",  "llm_temperature": 0,  "system_prompt": "string",  "tts_provider": "string",  "tts_voice_id": "tts_voice_123",  "tts_model": "string",  "voice_speed": 0,  "stt_provider": "string",  "stt_model": "string",  "stt_language": "string",  "greeting_message": "string",  "end_call_silence_seconds": 0,  "max_call_duration_seconds": 142,  "allow_interruptions": false,  "interruption_min_words": 0,  "vad_confidence": 0,  "vad_start_secs": 0,  "vad_min_volume": 0,  "webhook_url": "https://example.com",  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/agents \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"name":"Example","system_prompt":"string","llm_provider":"openai","llm_model":"gpt-4o-mini","llm_temperature":0.7,"tts_provider":"cartesia","tts_voice_id":"tts_voice_123","tts_model":"sonic-2","stt_provider":"deepgram","stt_model":"nova-3","stt_language":"en","greeting_message":"string","end_call_silence_seconds":600,"max_call_duration_seconds":1800,"allow_interruptions":true,"interruption_min_words":2,"vad_confidence":0.7,"vad_start_secs":0.4,"vad_min_volume":0.6,"webhook_url":"https://example.com","webhook_secret":"string","voice_speed":1}'
GET/v1/agents/{agent_id}

Get details of a specific agent.

Parameters

agent_idstringrequired

Response

json
{  "id": "id_123",  "name": "Example",  "status": "active",  "llm_provider": "string",  "llm_model": "string",  "llm_temperature": 0,  "system_prompt": "string",  "tts_provider": "string",  "tts_voice_id": "tts_voice_123",  "tts_model": "string",  "voice_speed": 0,  "stt_provider": "string",  "stt_model": "string",  "stt_language": "string",  "greeting_message": "string",  "end_call_silence_seconds": 0,  "max_call_duration_seconds": 142,  "allow_interruptions": false,  "interruption_min_words": 0,  "vad_confidence": 0,  "vad_start_secs": 0,  "vad_min_volume": 0,  "webhook_url": "https://example.com",  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl https://jagcall.com/v1/agents/agent_123 \  -H "Authorization: Bearer jc_live_..."
PUT/v1/agents/{agent_id}

Update an existing agent. Only provided fields are changed. Auto-publishes the draft so changes take effect immediately.

Parameters

agent_idstringrequired

Request body

json
{  "name": "Example",  "status": "active",  "system_prompt": "string",  "llm_provider": "string",  "llm_model": "string",  "llm_temperature": 0,  "tts_provider": "string",  "tts_voice_id": "tts_voice_123",  "tts_model": "string",  "stt_provider": "string",  "stt_model": "string",  "stt_language": "string",  "timezone": "string",  "greeting_message": "string",  "end_call_silence_seconds": 0,  "max_call_duration_seconds": 142,  "allow_interruptions": false,  "interruption_min_words": 0,  "vad_confidence": 0,  "vad_start_secs": 0,  "vad_min_volume": 0,  "webhook_url": "https://example.com",  "webhook_secret": "string",  "voice_speed": 0}

Response

json
{  "id": "id_123",  "name": "Example",  "status": "active",  "llm_provider": "string",  "llm_model": "string",  "llm_temperature": 0,  "system_prompt": "string",  "tts_provider": "string",  "tts_voice_id": "tts_voice_123",  "tts_model": "string",  "voice_speed": 0,  "stt_provider": "string",  "stt_model": "string",  "stt_language": "string",  "greeting_message": "string",  "end_call_silence_seconds": 0,  "max_call_duration_seconds": 142,  "allow_interruptions": false,  "interruption_min_words": 0,  "vad_confidence": 0,  "vad_start_secs": 0,  "vad_min_volume": 0,  "webhook_url": "https://example.com",  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X PUT https://jagcall.com/v1/agents/agent_123 \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"name":"Example","status":"active","system_prompt":"string","llm_provider":"string","llm_model":"string","llm_temperature":0,"tts_provider":"string","tts_voice_id":"tts_voice_123","tts_model":"string","stt_provider":"string","stt_model":"string","stt_language":"string","timezone":"string","greeting_message":"string","end_call_silence_seconds":0,"max_call_duration_seconds":142,"allow_interruptions":false,"interruption_min_words":0,"vad_confidence":0,"vad_start_secs":0,"vad_min_volume":0,"webhook_url":"https://example.com","webhook_secret":"string","voice_speed":0}'
DELETE/v1/agents/{agent_id}

Delete an agent. This cannot be undone.

Parameters

agent_idstringrequired

Example

curl
curl -X DELETE https://jagcall.com/v1/agents/agent_123 \  -H "Authorization: Bearer jc_live_..."

Calls

GET/v1/calls

List all calls for this organization. Supports filtering and pagination.

Parameters

agent_idstringoptional
directionstringoptional
statusstringoptional
limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "agent_id": "agent_123",      "direction": "outbound",      "status": "active",      "from_number": "+14155551234",      "to_number": "+14155551234",      "duration_seconds": 142,      "cost_total": 0.0231,      "recording_url": "https://example.com",      "call_summary": "string",      "call_successful": false,      "user_sentiment": "string",      "extracted_data": {},      "error_message": "string",      "started_at": "2025-11-01T14:30:00Z",      "ended_at": "2025-11-01T14:30:00Z",      "created_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/calls \  -H "Authorization: Bearer jc_live_..."
POST/v1/calls

Initiate an outbound call via an AI agent.

Request body

json
{  "agent_id": "agent_123",  "to_number": "+14155551234",  "from_number_id": "from_number_123",  "metadata": {}}

Response

json
{  "id": "id_123",  "agent_id": "agent_123",  "direction": "outbound",  "status": "active",  "from_number": "+14155551234",  "to_number": "+14155551234",  "duration_seconds": 142,  "cost_total": 0.0231,  "recording_url": "https://example.com",  "call_summary": "string",  "call_successful": false,  "user_sentiment": "string",  "extracted_data": {},  "error_message": "string",  "started_at": "2025-11-01T14:30:00Z",  "ended_at": "2025-11-01T14:30:00Z",  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/calls \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"agent_id":"agent_123","to_number":"+14155551234","from_number_id":"from_number_123","metadata":{}}'
GET/v1/calls/{call_id}

Get details of a specific call.

Parameters

call_idstringrequired

Response

json
{  "id": "id_123",  "agent_id": "agent_123",  "direction": "outbound",  "status": "active",  "from_number": "+14155551234",  "to_number": "+14155551234",  "duration_seconds": 142,  "cost_total": 0.0231,  "recording_url": "https://example.com",  "call_summary": "string",  "call_successful": false,  "user_sentiment": "string",  "extracted_data": {},  "error_message": "string",  "started_at": "2025-11-01T14:30:00Z",  "ended_at": "2025-11-01T14:30:00Z",  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl https://jagcall.com/v1/calls/call_123 \  -H "Authorization: Bearer jc_live_..."
GET/v1/calls/{call_id}/recording

Stream the call recording audio, proxying Twilio auth.

Parameters

call_idstringrequired

Example

curl
curl https://jagcall.com/v1/calls/call_123/recording \  -H "Authorization: Bearer jc_live_..."
GET/v1/calls/{call_id}/transcript

Get the transcript of a call.

Parameters

call_idstringrequired

Response

json
[  {    "role": "string",    "content": "string",    "timestamp_ms": 0  }]

Example

curl
curl https://jagcall.com/v1/calls/call_123/transcript \  -H "Authorization: Bearer jc_live_..."

Phone Numbers

GET/v1/phone-numbers

List all active phone numbers for this organization.

Parameters

limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "phone_number": "+14155551234",      "friendly_name": "Example",      "inbound_agent_id": "inbound_agent_123",      "status": "active",      "schedule": {},      "sms_schedule": {},      "forward_number": "+14155551234",      "forward_webhook_url": "https://example.com",      "sms_active": false,      "created_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/phone-numbers \  -H "Authorization: Bearer jc_live_..."
POST/v1/phone-numbers

Purchase and provision a phone number from Twilio.

Request body

json
{  "phone_number": "+14155551234",  "friendly_name": "Example",  "inbound_agent_id": "inbound_agent_123"}

Response

json
{  "id": "id_123",  "phone_number": "+14155551234",  "friendly_name": "Example",  "inbound_agent_id": "inbound_agent_123",  "status": "active",  "schedule": {},  "sms_schedule": {},  "forward_number": "+14155551234",  "forward_webhook_url": "https://example.com",  "sms_active": false,  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/phone-numbers \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"phone_number":"+14155551234","friendly_name":"Example","inbound_agent_id":"inbound_agent_123"}'
PUT/v1/phone-numbers/{number_id}

Update a phone number (friendly name, inbound agent assignment).

Parameters

number_idstringrequired

Request body

json
{  "friendly_name": "Example",  "inbound_agent_id": "inbound_agent_123",  "schedule": {},  "sms_schedule": {},  "forward_number": "+14155551234",  "forward_webhook_url": "https://example.com"}

Response

json
{  "id": "id_123",  "phone_number": "+14155551234",  "friendly_name": "Example",  "inbound_agent_id": "inbound_agent_123",  "status": "active",  "schedule": {},  "sms_schedule": {},  "forward_number": "+14155551234",  "forward_webhook_url": "https://example.com",  "sms_active": false,  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X PUT https://jagcall.com/v1/phone-numbers/number_123 \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"friendly_name":"Example","inbound_agent_id":"inbound_agent_123","schedule":{},"sms_schedule":{},"forward_number":"+14155551234","forward_webhook_url":"https://example.com"}'
DELETE/v1/phone-numbers/{number_id}

Schedule a phone number for release at the end of the billing period.

Parameters

number_idstringrequired

Example

curl
curl -X DELETE https://jagcall.com/v1/phone-numbers/number_123 \  -H "Authorization: Bearer jc_live_..."
POST/v1/phone-numbers/search

Search for available phone numbers to purchase.

Request body

json
{  "country": "US",  "area_code": "string"}

Example

curl
curl -X POST https://jagcall.com/v1/phone-numbers/search \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"country":"US","area_code":"string"}'

SMS

POST/v1/sms

Send an outbound SMS message.

Request body

json
{  "to_number": "+14155551234",  "from_number_id": "from_number_123",  "body": "string"}

Response

json
{  "id": "id_123",  "conversation_id": "conversation_123",  "direction": "outbound",  "from_number": "+14155551234",  "to_number": "+14155551234",  "body": "string",  "status": "active",  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/sms \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"to_number":"+14155551234","from_number_id":"from_number_123","body":"string"}'
GET/v1/sms/conversations

List SMS conversations.

Parameters

limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "phone_number_id": "phone_number_123",      "contact_number": "+14155551234",      "status": "active",      "last_message_at": "2025-11-01T14:30:00Z",      "created_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/sms/conversations \  -H "Authorization: Bearer jc_live_..."
GET/v1/sms/conversations/{conversation_id}/messages

Get messages in an SMS conversation.

Parameters

conversation_idstringrequired
limitintegeroptional

Defaults to 100. Range 1–500.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "conversation_id": "conversation_123",      "direction": "outbound",      "from_number": "+14155551234",      "to_number": "+14155551234",      "body": "string",      "status": "active",      "created_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/sms/conversations/conversation_123/messages \  -H "Authorization: Bearer jc_live_..."

Contacts

GET/v1/contacts

List contacts. Filter by free-text search or exact phone number.

Parameters

searchstringoptional
phonestringoptional
limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "phone_number": "+14155551234",      "name": "Example",      "email": "user@example.com",      "company": "string",      "notes": "string",      "tags": "string",      "address": "string",      "role": "string",      "is_favorite": false,      "created_at": "2025-11-01T14:30:00Z",      "updated_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/contacts \  -H "Authorization: Bearer jc_live_..."
POST/v1/contacts

Create a contact. Returns 409 if the phone number already exists.

Request body

json
{  "phone_number": "+14155551234",  "name": "Example",  "email": "user@example.com",  "company": "string",  "notes": "string",  "tags": "string",  "address": "string",  "role": "string",  "is_favorite": false}

Response

json
{  "id": "id_123",  "phone_number": "+14155551234",  "name": "Example",  "email": "user@example.com",  "company": "string",  "notes": "string",  "tags": "string",  "address": "string",  "role": "string",  "is_favorite": false,  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/contacts \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"phone_number":"+14155551234","name":"Example","email":"user@example.com","company":"string","notes":"string","tags":"string","address":"string","role":"string","is_favorite":false}'
GET/v1/contacts/{contact_id}

Get Contact Public

Parameters

contact_idstringrequired

Response

json
{  "id": "id_123",  "phone_number": "+14155551234",  "name": "Example",  "email": "user@example.com",  "company": "string",  "notes": "string",  "tags": "string",  "address": "string",  "role": "string",  "is_favorite": false,  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl https://jagcall.com/v1/contacts/contact_123 \  -H "Authorization: Bearer jc_live_..."
PATCH/v1/contacts/{contact_id}

Update Contact Public

Parameters

contact_idstringrequired

Request body

json
{  "phone_number": "+14155551234",  "name": "Example",  "email": "user@example.com",  "company": "string",  "notes": "string",  "tags": "string",  "address": "string",  "role": "string",  "is_favorite": false}

Response

json
{  "id": "id_123",  "phone_number": "+14155551234",  "name": "Example",  "email": "user@example.com",  "company": "string",  "notes": "string",  "tags": "string",  "address": "string",  "role": "string",  "is_favorite": false,  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X PATCH https://jagcall.com/v1/contacts/contact_123 \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"phone_number":"+14155551234","name":"Example","email":"user@example.com","company":"string","notes":"string","tags":"string","address":"string","role":"string","is_favorite":false}'
DELETE/v1/contacts/{contact_id}

Delete Contact Public

Parameters

contact_idstringrequired

Example

curl
curl -X DELETE https://jagcall.com/v1/contacts/contact_123 \  -H "Authorization: Bearer jc_live_..."

Campaigns

GET/v1/campaigns

List Campaigns Public

Parameters

limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "name": "Example",      "agent_id": "agent_123",      "phone_number_id": "phone_number_123",      "status": "active",      "scheduled_at": "2025-11-01T14:30:00Z",      "max_concurrent": 0,      "total_contacts": 3,      "called": 0,      "completed": 0,      "failed": 0,      "created_at": "2025-11-01T14:30:00Z",      "updated_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/campaigns \  -H "Authorization: Bearer jc_live_..."
POST/v1/campaigns

Create a draft campaign with its contact list (JSON, not CSV upload).

Request body

json
{  "name": "Example",  "agent_id": "agent_123",  "phone_number_id": "phone_number_123",  "scheduled_at": "2025-11-01T14:30:00Z",  "max_concurrent": 2,  "contacts": [    {      "phone_number": "+14155551234",      "name": "Example"    }  ]}

Response

json
{  "id": "id_123",  "name": "Example",  "agent_id": "agent_123",  "phone_number_id": "phone_number_123",  "status": "active",  "scheduled_at": "2025-11-01T14:30:00Z",  "max_concurrent": 0,  "total_contacts": 3,  "called": 0,  "completed": 0,  "failed": 0,  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/campaigns \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"name":"Example","agent_id":"agent_123","phone_number_id":"phone_number_123","scheduled_at":"2025-11-01T14:30:00Z","max_concurrent":2,"contacts":[{"phone_number":"+14155551234","name":"Example"}]}'
GET/v1/campaigns/{campaign_id}

Get Campaign Public

Parameters

campaign_idstringrequired

Response

json
{  "id": "id_123",  "name": "Example",  "agent_id": "agent_123",  "phone_number_id": "phone_number_123",  "status": "active",  "scheduled_at": "2025-11-01T14:30:00Z",  "max_concurrent": 0,  "total_contacts": 3,  "called": 0,  "completed": 0,  "failed": 0,  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl https://jagcall.com/v1/campaigns/campaign_123 \  -H "Authorization: Bearer jc_live_..."
DELETE/v1/campaigns/{campaign_id}

Delete Campaign Public

Parameters

campaign_idstringrequired

Example

curl
curl -X DELETE https://jagcall.com/v1/campaigns/campaign_123 \  -H "Authorization: Bearer jc_live_..."
POST/v1/campaigns/{campaign_id}/cancel

Cancel Campaign Public

Parameters

campaign_idstringrequired

Response

json
{  "id": "id_123",  "name": "Example",  "agent_id": "agent_123",  "phone_number_id": "phone_number_123",  "status": "active",  "scheduled_at": "2025-11-01T14:30:00Z",  "max_concurrent": 0,  "total_contacts": 3,  "called": 0,  "completed": 0,  "failed": 0,  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/campaigns/campaign_123/cancel \  -H "Authorization: Bearer jc_live_..."
GET/v1/campaigns/{campaign_id}/contacts

List Campaign Contacts Public

Parameters

campaign_idstringrequired
statusstringoptional
limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "campaign_id": "campaign_123",      "phone_number": "+14155551234",      "name": "Example",      "status": "active",      "outcome": "string",      "call_id": "call_123",      "error": "string",      "called_at": "2025-11-01T14:30:00Z",      "created_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/campaigns/campaign_123/contacts \  -H "Authorization: Bearer jc_live_..."
POST/v1/campaigns/{campaign_id}/pause

Pause Campaign Public

Parameters

campaign_idstringrequired

Response

json
{  "id": "id_123",  "name": "Example",  "agent_id": "agent_123",  "phone_number_id": "phone_number_123",  "status": "active",  "scheduled_at": "2025-11-01T14:30:00Z",  "max_concurrent": 0,  "total_contacts": 3,  "called": 0,  "completed": 0,  "failed": 0,  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/campaigns/campaign_123/pause \  -H "Authorization: Bearer jc_live_..."
POST/v1/campaigns/{campaign_id}/resume

Resume Campaign Public

Parameters

campaign_idstringrequired

Response

json
{  "id": "id_123",  "name": "Example",  "agent_id": "agent_123",  "phone_number_id": "phone_number_123",  "status": "active",  "scheduled_at": "2025-11-01T14:30:00Z",  "max_concurrent": 0,  "total_contacts": 3,  "called": 0,  "completed": 0,  "failed": 0,  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/campaigns/campaign_123/resume \  -H "Authorization: Bearer jc_live_..."
POST/v1/campaigns/{campaign_id}/start

Start Campaign Public

Parameters

campaign_idstringrequired

Response

json
{  "id": "id_123",  "name": "Example",  "agent_id": "agent_123",  "phone_number_id": "phone_number_123",  "status": "active",  "scheduled_at": "2025-11-01T14:30:00Z",  "max_concurrent": 0,  "total_contacts": 3,  "called": 0,  "completed": 0,  "failed": 0,  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/campaigns/campaign_123/start \  -H "Authorization: Bearer jc_live_..."

Automations

GET/v1/automations

List Automations Public

Parameters

limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "name": "Example",      "description": "string",      "enabled": true,      "trigger_type": "string",      "trigger_filters": {},      "conditions": [],      "actions": [],      "run_count": 3,      "last_run_at": "2025-11-01T14:30:00Z",      "created_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/automations \  -H "Authorization: Bearer jc_live_..."
POST/v1/automations

Create Automation Public

Request body

json
{  "name": "Example",  "trigger_type": "call.no_answer",  "description": "string",  "trigger_filters": {},  "conditions": [],  "actions": [],  "enabled": true}

Response

json
{  "id": "id_123",  "name": "Example",  "description": "string",  "enabled": true,  "trigger_type": "string",  "trigger_filters": {},  "conditions": [],  "actions": [],  "run_count": 3,  "last_run_at": "2025-11-01T14:30:00Z",  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/automations \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"name":"Example","trigger_type":"call.no_answer","description":"string","trigger_filters":{},"conditions":[],"actions":[],"enabled":true}'
GET/v1/automations/{automation_id}

Get Automation Public

Parameters

automation_idstringrequired

Response

json
{  "id": "id_123",  "name": "Example",  "description": "string",  "enabled": true,  "trigger_type": "string",  "trigger_filters": {},  "conditions": [],  "actions": [],  "run_count": 3,  "last_run_at": "2025-11-01T14:30:00Z",  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl https://jagcall.com/v1/automations/automation_123 \  -H "Authorization: Bearer jc_live_..."
PATCH/v1/automations/{automation_id}

Update Automation Public

Parameters

automation_idstringrequired

Request body

json
{  "name": "Example",  "description": "string",  "trigger_type": "string",  "trigger_filters": {},  "conditions": [],  "actions": [],  "enabled": true}

Response

json
{  "id": "id_123",  "name": "Example",  "description": "string",  "enabled": true,  "trigger_type": "string",  "trigger_filters": {},  "conditions": [],  "actions": [],  "run_count": 3,  "last_run_at": "2025-11-01T14:30:00Z",  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X PATCH https://jagcall.com/v1/automations/automation_123 \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"name":"Example","description":"string","trigger_type":"string","trigger_filters":{},"conditions":[],"actions":[],"enabled":true}'
DELETE/v1/automations/{automation_id}

Delete Automation Public

Parameters

automation_idstringrequired

Example

curl
curl -X DELETE https://jagcall.com/v1/automations/automation_123 \  -H "Authorization: Bearer jc_live_..."
GET/v1/automations/{automation_id}/runs

List Automation Runs Public

Parameters

automation_idstringrequired
limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "automation_id": "automation_123",      "trigger_event": "string",      "status": "active",      "started_at": "2025-11-01T14:30:00Z",      "completed_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/automations/automation_123/runs \  -H "Authorization: Bearer jc_live_..."

Knowledge Bases

GET/v1/documents/{doc_id}

Get Document Public

Parameters

doc_idstringrequired

Response

json
{  "id": "id_123",  "knowledge_base_id": "knowledge_base_123",  "filename": "Example",  "content_type": "string",  "file_size": 0,  "chunk_count": 3,  "status": "active",  "error_message": "string",  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl https://jagcall.com/v1/documents/doc_123 \  -H "Authorization: Bearer jc_live_..."
DELETE/v1/documents/{doc_id}

Delete Document Public

Parameters

doc_idstringrequired

Example

curl
curl -X DELETE https://jagcall.com/v1/documents/doc_123 \  -H "Authorization: Bearer jc_live_..."
GET/v1/knowledge-bases

List Knowledge Bases Public

Parameters

limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "name": "Example",      "description": "string",      "created_at": "2025-11-01T14:30:00Z",      "updated_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/knowledge-bases \  -H "Authorization: Bearer jc_live_..."
POST/v1/knowledge-bases

Create Knowledge Base Public

Request body

json
{  "name": "Example",  "description": "string"}

Response

json
{  "id": "id_123",  "name": "Example",  "description": "string",  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/knowledge-bases \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"name":"Example","description":"string"}'
GET/v1/knowledge-bases/{kb_id}

Get Knowledge Base Public

Parameters

kb_idstringrequired

Response

json
{  "id": "id_123",  "name": "Example",  "description": "string",  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl https://jagcall.com/v1/knowledge-bases/kb_123 \  -H "Authorization: Bearer jc_live_..."
DELETE/v1/knowledge-bases/{kb_id}

Delete Knowledge Base Public

Parameters

kb_idstringrequired

Example

curl
curl -X DELETE https://jagcall.com/v1/knowledge-bases/kb_123 \  -H "Authorization: Bearer jc_live_..."
GET/v1/knowledge-bases/{kb_id}/documents

List Documents Public

Parameters

kb_idstringrequired
limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "knowledge_base_id": "knowledge_base_123",      "filename": "Example",      "content_type": "string",      "file_size": 0,      "chunk_count": 3,      "status": "active",      "error_message": "string",      "created_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/knowledge-bases/kb_123/documents \  -H "Authorization: Bearer jc_live_..."
POST/v1/knowledge-bases/{kb_id}/documents

Add a text document. Chunking + embedding happen synchronously, so the response may take a few seconds for large documents.

Parameters

kb_idstringrequired

Request body

json
{  "filename": "Example",  "content": "string",  "content_type": "text/plain"}

Response

json
{  "id": "id_123",  "knowledge_base_id": "knowledge_base_123",  "filename": "Example",  "content_type": "string",  "file_size": 0,  "chunk_count": 3,  "status": "active",  "error_message": "string",  "created_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/knowledge-bases/kb_123/documents \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"filename":"Example","content":"string","content_type":"text/plain"}'
POST/v1/knowledge-bases/search

Semantic search across the org's knowledge bases. Restricts to the given knowledge_base_ids (validated for ownership) or all org KBs.

Request body

json
{  "query": "string",  "knowledge_base_ids": [    "string"  ],  "top_k": 5}

Example

curl
curl -X POST https://jagcall.com/v1/knowledge-bases/search \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"query":"string","knowledge_base_ids":["string"],"top_k":5}'

Analytics

GET/v1/analytics/calls-over-time

Daily call counts and outcomes over the period.

Parameters

daysintegeroptional

Defaults to 30. Range 1–90.

Example

curl
curl https://jagcall.com/v1/analytics/calls-over-time \  -H "Authorization: Bearer jc_live_..."
GET/v1/analytics/overview

Aggregate call/cost/sentiment metrics for the period.

Parameters

daysintegeroptional

Defaults to 30. Range 1–90.

Example

curl
curl https://jagcall.com/v1/analytics/overview \  -H "Authorization: Bearer jc_live_..."

Usage

GET/v1/usage

Current-month usage totals (minutes, SMS, cost).

Example

curl
curl https://jagcall.com/v1/usage \  -H "Authorization: Bearer jc_live_..."
GET/v1/usage/history

Per-month usage totals for the last N months.

Parameters

monthsintegeroptional

Defaults to 6. Range 1–12.

Example

curl
curl https://jagcall.com/v1/usage/history \  -H "Authorization: Bearer jc_live_..."

Webhooks

POST/v1/webhook-deliveries/{delivery_id}/replay

Replay Delivery Public

Parameters

delivery_idstringrequired

Response

json
{  "id": "id_123",  "endpoint_id": "endpoint_123",  "target_kind": "string",  "event_type": "string",  "status": "active",  "attempts": 0,  "next_attempt_at": "2025-11-01T14:30:00Z",  "last_status_code": 0,  "last_error": "string",  "replayed_from_id": "replayed_from_123",  "payload": {},  "created_at": "2025-11-01T14:30:00Z",  "delivered_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X POST https://jagcall.com/v1/webhook-deliveries/delivery_123/replay \  -H "Authorization: Bearer jc_live_..."
GET/v1/webhook-endpoints

List Endpoints Public

Response

json
[  {    "id": "id_123",    "url": "https://example.com",    "description": "string",    "events": [      "string"    ],    "enabled": true,    "has_secret": false,    "consecutive_failures": 0,    "previous_secret_expires_at": "2025-11-01T14:30:00Z",    "created_at": "2025-11-01T14:30:00Z",    "updated_at": "2025-11-01T14:30:00Z"  }]

Example

curl
curl https://jagcall.com/v1/webhook-endpoints \  -H "Authorization: Bearer jc_live_..."
POST/v1/webhook-endpoints

Create Endpoint Public

Request body

json
{  "url": "https://example.com",  "description": "string",  "events": [    "string"  ]}

Example

curl
curl -X POST https://jagcall.com/v1/webhook-endpoints \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"url":"https://example.com","description":"string","events":["string"]}'
GET/v1/webhook-endpoints/{endpoint_id}

Get Endpoint Public

Parameters

endpoint_idstringrequired

Response

json
{  "id": "id_123",  "url": "https://example.com",  "description": "string",  "events": [    "string"  ],  "enabled": true,  "has_secret": false,  "consecutive_failures": 0,  "previous_secret_expires_at": "2025-11-01T14:30:00Z",  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl https://jagcall.com/v1/webhook-endpoints/endpoint_123 \  -H "Authorization: Bearer jc_live_..."
PATCH/v1/webhook-endpoints/{endpoint_id}

Update Endpoint Public

Parameters

endpoint_idstringrequired

Request body

json
{  "url": "https://example.com",  "description": "string",  "events": [    "string"  ],  "enabled": true}

Response

json
{  "id": "id_123",  "url": "https://example.com",  "description": "string",  "events": [    "string"  ],  "enabled": true,  "has_secret": false,  "consecutive_failures": 0,  "previous_secret_expires_at": "2025-11-01T14:30:00Z",  "created_at": "2025-11-01T14:30:00Z",  "updated_at": "2025-11-01T14:30:00Z"}

Example

curl
curl -X PATCH https://jagcall.com/v1/webhook-endpoints/endpoint_123 \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"url":"https://example.com","description":"string","events":["string"],"enabled":true}'
DELETE/v1/webhook-endpoints/{endpoint_id}

Delete Endpoint Public

Parameters

endpoint_idstringrequired

Example

curl
curl -X DELETE https://jagcall.com/v1/webhook-endpoints/endpoint_123 \  -H "Authorization: Bearer jc_live_..."
GET/v1/webhook-endpoints/{endpoint_id}/deliveries

List Endpoint Deliveries Public

Parameters

endpoint_idstringrequired
statusstringoptional
limitintegeroptional

Defaults to 50. Range 1–100.

offsetintegeroptional

Defaults to 0. Min 0.

Response

json
{  "items": [    {      "id": "id_123",      "endpoint_id": "endpoint_123",      "target_kind": "string",      "event_type": "string",      "status": "active",      "attempts": 0,      "next_attempt_at": "2025-11-01T14:30:00Z",      "last_status_code": 0,      "last_error": "string",      "replayed_from_id": "replayed_from_123",      "payload": {},      "created_at": "2025-11-01T14:30:00Z",      "delivered_at": "2025-11-01T14:30:00Z"    }  ],  "total": 3,  "limit": 50,  "offset": 0}

Example

curl
curl https://jagcall.com/v1/webhook-endpoints/endpoint_123/deliveries \  -H "Authorization: Bearer jc_live_..."
POST/v1/webhook-endpoints/{endpoint_id}/rotate-secret

Rotate Secret Public

Parameters

endpoint_idstringrequired
gracebooleanoptional

Defaults to true.

Example

curl
curl -X POST https://jagcall.com/v1/webhook-endpoints/endpoint_123/rotate-secret \  -H "Authorization: Bearer jc_live_..."
GET/v1/webhook-events

Webhook Events Public

Example

curl
curl https://jagcall.com/v1/webhook-events \  -H "Authorization: Bearer jc_live_..."

Browser Calling

GET/v1/browser-call/phone-numbers

List phone numbers available as caller IDs for browser calling.

Example

curl
curl https://jagcall.com/v1/browser-call/phone-numbers \  -H "Authorization: Bearer jc_live_..."
POST/v1/browser-call/token

Generate a Twilio access token for browser-based WebRTC calling.

Parameters

platformstringoptional

One of: web, ios, android. Defaults to "web".

Example

curl
curl -X POST https://jagcall.com/v1/browser-call/token \  -H "Authorization: Bearer jc_live_..."

Billing

GET/v1/billing/balance

Get current balance for the organization.

Example

curl
curl https://jagcall.com/v1/billing/balance \  -H "Authorization: Bearer jc_live_..."

Integrations

PUT/v1/integrations

Set integration credentials (e.g. Frubix API key, webhook URL) for the org.

Request body

json
{  "frubix_api_key": "string",  "webhook_url": "https://example.com",  "webhook_secret": "string"}

Example

curl
curl -X PUT https://jagcall.com/v1/integrations \  -H "Authorization: Bearer jc_live_..." \  -H "Content-Type: application/json" \  -d '{"frubix_api_key":"string","webhook_url":"https://example.com","webhook_secret":"string"}'

Still need help?

Can't find what you're looking for? Send us a message and our team will get back to you.

Contact support