Callingly API Documentation

Generating an API Key

The API requires generating a Bearer Token to be used with every request.


To generate a new token:

  1. Head to the API Keys page under Settings -> API Keys.
  2. Click the blue "Add API Key" button in the top right.
  3. Give the API Key a name. This name is just for your own purposes.
  4. Copy the API key and save it for use later. You cannot view the API key again so make sure you save it somewhere safe.

Authentication Headers

With every API request, please send in the following two headers:

Authorization: Bearer {{YOUR_BEARER_TOKEN_HERE}}


Accept: application/json

Account ID for Clients

If you are an Agency partner and are using the API to make requests for your clients, along with your Bearer Token you can pass in an account_id parameter with the ID number of your client's account.

You can find your client's account ID number either in the Clients endpoint or by clicking Edit on the Client's account in the Clients panel and looking for the ID in the top right corner.


Calls

Get Call

Endpoint

GET https://api.callingly.com/v1/calls/{{call_id}}

Sample Response

{
    "id": 1234,
    "started_at": "2020-11-11 12:08:13",
    "direction": "outbound",
    "status": "completed",
    "status_formatted": "Completed",
    "lead_status": "contacted",
    "lead_status_formatted": "Contacted",
    "ring_status": "completed",
    "seconds": 5,
    "duration": "5s",
    "retry": 0,
    "lead_retry": 0,
    "time_formatted": "11/11/20 12:08pm",
    "from_formatted": "(123) 456-7890",
    "source": "App",
    "recording_url": "https://cdn.callingly.com/recordings/example.mp3",
    "waveform_url": "https://cdn.callingly.com/waveforms/example.png",
    "error_message": null,
    "phone_number_formatted": "(123) 456-7890",
    "human_result": "contacted",
    "user": {
        "id": 1,
        "name": "Michael Scott",
        "fname": "Michael",
        "lname": "Scott",
        "email": "michael@dundermifflin.com",
        "phone_number": "+11234567890",
    },
    "lead": {
        "id": 1234567,
        "name": "Example Lead",
        "label": "Example Lead",
        "fname": "Example",
        "lname": "Lead",
        "email": "example@lead.com",
        "phone_number": "+11234567890",
        "phone_number_formatted": "(123) 456-7890",
        "source": null,
        "crm": null,
        "source_id": null,
        "deleted_at": null
    },
    "number": null,
    "tag": null,
    "notes": [],
    "profile": {
        "id": 12345,
        "name": "Example Team"
    },
    "is_voicemail": 0,
    "is_queue": 0,
    "is_team_offline": 0,
    "scheduled_call_type": null,
    "old_lead_owner_id": null,
    "transcript": "Speaker A: Hello this is a call...",
    "sales_advice": null,
    "is_error": 0,
    "error_code": ""
}

List Calls

Endpoint

GET https://api.callingly.com/v1/calls?start=2020-01-01&end=2020-02-01&team_id=123&limit=10&page=1

Sample Response

{
    data: [
        {
            id: 12343,
            started_at: "2020-11-30 10:54:01",
            direction: "outbound",
            status: "completed",
            lead_status: null,
            seconds: 37,
            duration: "37s",
            retry: 0,
            lead_retry: 0,
            time_formatted: "11/30/20 10:54am",
            source: "Dashboard",
            member: [],
            lead: [],
            profile: [],
            recording_url:
                 "https://cdn.callingly.com/recordings/da3c0bf.mp3",
        }
    ]
}

Create Call

Endpoint

POST https://api.callingly.com/v1/calls

Sample Request

{
    "account_id": 1,
    "team_id": 123,    
    "first_name": "John",
    "last_name": "Doe",
    "phone_number": "555-555-5555",
    "email": "john@doe.com",
    "company": "John's Pools",
    "category": "Pools",
    "source": "HubSpot",
    "crm_id": 123,
    "scheduled_at": 2026-03-06 14:26:35 // optional
}

Clients

List Clients

Endpoint

GET https://api.callingly.com/v1/clients

Sample Response

[
	{
		"id": 123,
		"name": "Client Name",
		"email": "client@email.com",
		"billed_users": 12,
		"billed_numbers": 2
	}
]

Create Client

Endpoint

POST https://api.callingly.com/v1/clients

Sample Request

{
	"fname": "John",
	"lname": "Smith",
	"company": "Smith Pools",
	"email": "client@email.com",
	"phone_number": "555-555-5555",
	"password": "password123"
}

Delete Client

Endpoint

DELETE https://api.callingly.com/v1/clients/{{id}}

Activate/Deactivate

Endpoint

POST https://api.callingly.com/v1/clients/{{id}}/active

Sample Request

{
	"is_active": 0
}

Leads

List Leads

Endpoint

GET https://api.callingly.com/v1/leads?start=2020-01-01&end=2020-02-01&phone_number=+14801234567

Sample Response

[
  {
    "id": 1,
    "account_id": 1,
    "lead_owner_id": 4,
    "fname": "Test",
    "lname": "Lead",
    "email": "test@lead.com",
    "phone_number": "+14801234567",
    "source": "Webhook",
    "source_id": null,
    "created_at": "2024-05-21 23:37:54",
    "company": "Callingly",
    "category": null,
    "status": "missed",
    "result": null,
    "team": {
      "id": 1,
      "name": "Team 1"
    },
    "tags": [],
    "stage": null,
    "calls": [
      {
        "id": 1,
        "source": null,
        "seconds": 0,
        "direction": "outbound",
        "status": null,
        "result": null,
        "agent_retry": 0,
        "lead_retry": 0,
        "started_at": "2024-06-03 23:57:04",
        "recording_url": null
      }
    ],
    "scheduled_call_at": "06/13/24 3:48pm MST",
    "lead_owner": {
      "name": "Bartholome Wilkinson",
      "phone_number": "+14801239876",
      "custom_id": null
    }
  }
]

Get Lead

Endpoint

GET https://api.callingly.com/v1/leads/{{id}}

Sample Response

{
  "id": 1,
  "account_id": 1,
  "lead_owner_id": 4,
  "fname": "Test",
  "lname": "Lead",
  "email": "test@lead.com",
  "phone_number": "+14801234567",
  "source": "Webhook",
  "source_id": null,
  "created_at": "2024-05-21 23:37:54",
  "company": "Callingly",
  "category": null,
  "status": "missed",
  "result": null,
  "team": {
    "id": 1,
    "name": "Team 1"
  },
  "tags": [],
  "stage": null,
  "scheduled_call_at": "06/13/24 3:48pm MST",
  "is_stopped": 0,
  "is_blocked": 0,
}

Update Lead

Endpoint

PUT https://api.callingly.com/v1/leads/{{id}}

Sample request

{
  "id": 1,
  "fname": "Test",
  "lname": "Lead",
  "email": "test@lead.com",
  "phone_number": "+14801234567",
  "source": "Webhook",
  "company": "Callingly",
  "status": "missed",
  "result": null,
  "stage": null,
  "is_stopped": 0,
  "is_blocked": 0,
}

Delete Lead

Endpoint

DELETE https://api.callingly.com/v1/leads/{{id}}

Sample Response

{
  "success": true
}

SMS

Create SMS

Endpoint

POST https://api.callingly.com/v1/sms

Fields

Field Type Required Example
phone_number

string

Yes
  • +11234567890
  • (123) 456-7890
  • 1234567890
sms_number

string

Yes
  • +11234567890
  • (123) 456-7890
  • 1234567890
message

string

Yes Hey {{lead.first_name | default: 'there'}}! {{from.company}} here. We received your inquiry and we'll be calling your shortly. There's a real person on the other end of this text, so if you have any questions, feel free to reply. Reply STOP to opt out of messages. Msg & data rates may apply.

Sample Body

{
    "phone_number": "(123) 456-7890", 
    "sms_number": "(123) 987-6543", 
    "message": "Hey {{lead.first_name | default: 'there'}}! {{from.company}} here. We received your inquiry and we'll be calling your shortly. There's a real person on the other end of this text, so if you have any questions, feel free to reply. Reply STOP to opt out of messages. Msg & data rates may apply."
}

Sample response

{
    "lead_id": 1,
    "is_error": 0,
    "error_code": "",
    "conversation_id": 1,
    "sms_id": 1,
    "from": "+11239876543",
    "to": "+11234567890",
    "body": "Hey John! Callingly here. We received your inquiry and we'll be calling your shortly. There's a real person on the other end of this text, so if you have any questions, feel free to reply. Reply STOP to opt out of messages. Msg & data rates may apply.",
    "sent_at": "2025-09-15T23:22:05.000000Z",
    "direction": "outbound"
}

Schedule SMS

Queues a text to an existing lead to be sent at a future time. The lead and sending-number rules are the same as Create SMS. Personalization fields in the message are filled in when the text is sent, not when it is scheduled.

Endpoint

POST https://api.callingly.com/v1/sms/scheduled

Fields

Field Type Required Example
phone_number string Yes +11234567890
sms_number string Yes +11239876543
message string Yes Hi {{lead.first_name}}, just checking in!
send_at

string

  • Date and time in your account's timezone. A time in the past is sent right away.
Yes 2025-09-16 09:00

Sample Body

{
    "phone_number": "(123) 456-7890",
    "sms_number": "(123) 987-6543",
    "message": "Hi {{lead.first_name}}, just checking in!",
    "send_at": "2025-09-16 09:00"
}

Sample response

{
    "scheduled_sms_id": 1,
    "lead_id": 1,
    "from": "+11239876543",
    "to": "+11234567890",
    "body": "Hi {{lead.first_name}}, just checking in!",
    "send_at": "2025-09-16T13:00:00+00:00"
}

List SMS

Returns every SMS in your account created within a date range, newest first. Use this to export message history.

Endpoint

GET https://api.callingly.com/v1/sms?start=2025-09-01&end=2025-09-30&limit=100&page=1

Query parameters

Field Type Required Notes
start date (YYYY-MM-DD) No Date in your account's timezone. Defaults to 29 days ago.
end date (YYYY-MM-DD) No Date in your account's timezone, inclusive. Defaults to today.
lead_id integer No Only messages with this lead.
conversation_id integer No Only messages in this conversation.
direction string No inbound or outbound
limit integer No Results per page. Default 10, max 100.
page integer No Page number. Default 1.

Sample response

{
    "data": [
        {
            "id": 5678,
            "account_id": 1,
            "lead_id": 1,
            "conversation_id": 42,
            "from": "+11234567890",
            "to": "+11239876543",
            "body": "Yes, tomorrow at 2pm works.",
            "media_url": null,
            "media_content_type": null,
            "sent_at": "2025-09-15T23:25:41.000000Z",
            "sent_at_formatted": "9/15/2025 7:25 PM",
            "direction": "inbound",
            "is_error": 0,
            "error_code": null,
            "actor": null,
            "user": null
        }
    ],
    "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
    "meta": { "current_page": 1, "last_page": 3, "per_page": 100, "total": 245 }
}

Conversations

A conversation is the SMS thread between one lead and one of your phone numbers. Agency partners can add account_id to any conversation or List SMS request to read a client account.

List Conversations

Returns conversations, most recently active first. Includes threads that only contain automated messages.

Endpoint

GET https://api.callingly.com/v1/conversations?lead_id=1&limit=10&page=1

Query parameters

Field Type Required Notes
lead_id integer No Only conversations with this lead.
number_id integer No Only conversations on this phone number.
limit integer No Results per page. Default 10, max 100.
page integer No Page number. Default 1.

Sample response

{
    "data": [
        {
            "id": 42,
            "account_id": 1,
            "unread_count": 1,
            "last_sms_at": "2025-09-15T23:25:41.000000Z",
            "last_sms_at_formatted": "9/15/2025 7:25 PM",
            "last_sms": { ... },
            "lead": {
                "id": 1,
                "label": "John Smith",
                "country_code": "1",
                "fname": "John",
                "lname": "Smith",
                "phone_number": "+11234567890",
                "phone_number_formatted": "(123) 456-7890",
                "deleted_at": null,
                "is_ai_sms_paused": false
            },
            "number": {
                "id": 7,
                "name": "Main Line",
                "phone_number": "+11239876543",
                "phone_number_formatted": "(123) 987-6543",
                "has_ai_sms_agent": false
            }
        }
    ],
    "links": { ... },
    "meta": { ... }
}

Get Conversation

Endpoint

GET https://api.callingly.com/v1/conversations/{{conversation_id}}

Returns a single conversation in the same shape as above.

List Conversation Messages

Returns the messages in one conversation, newest first.

Endpoint

GET https://api.callingly.com/v1/conversations/{{conversation_id}}/sms?limit=30&page=1

limit defaults to 30, max 100.

Sample response

{
    "data": [
        {
            "id": 5678,
            "account_id": 1,
            "lead_id": 1,
            "conversation_id": 42,
            "from": "+11234567890",
            "to": "+11239876543",
            "body": "Yes, tomorrow at 2pm works.",
            "media_url": null,
            "media_content_type": null,
            "sent_at": "2025-09-15T23:25:41.000000Z",
            "sent_at_formatted": "9/15/2025 7:25 PM",
            "direction": "inbound",
            "is_error": 0,
            "error_code": null,
            "actor": null,
            "user": null
        }
    ],
    "links": { ... },
    "meta": { ... }
}

Teams

List Teams

Endpoint

GET https://api.callingly.com/v1/teams

Sample Response

[
	{
		"id": 123,
		"account_id": 1,
		"name": "Main Team"
	}
]

Get Team

Endpoint

GET https://api.callingly.com/v1/teams/{{id}}

Sample Response

{
    "id": 123,
    "account_id": 1,
    "name": "Main Team",
    "is_record": 1,
    "call_mode": "simultaneous",
    "whispertext": "Please press 1 to connect to {first_name} {last_name} from {company} {category}",
    "post_whispertext": "Your call has been completed. Press 1 if you were able to reach the lead. Press 2 if you left a voicemail. Press 3 otherwise to reschedule the call.",
    "language": "en",
    "delay": 0,
    "is_retry": 1,
    "retries": 3,
    "retry_schedule": [
        15,
        60,
        120
    ],
    "is_reschedule": 1,
    "is_retry_lead": 1,
    "lead_retries": 3,
    "lead_retry_schedule": [
        15,
        60,
        120
    ],
    "is_sms": 0,
    "sms_body": "",
    "whispertext_voice": "Polly.Matthew",
    "is_users_available_for_call": true
}

Create Team

Endpoint

POST https://api.callingly.com/v1/teams

Sample Request

{
    "account_id": 1,
    "name": "New Team",
    "sequence_id": 12,
    "is_record": 1,
    "call_mode": "simultaneous",
    "whispertext": "Please press 1 to connect to {first_name} {last_name} from {company} {category}",
    "language": "en",
    "delay": 0,
    "is_retry": 1,
    "retries": 3,
    "retry_schedule": [
        15,
        60,
        120
    ],
    "is_reschedule": 1,
    "is_retry_lead": 1,
    "lead_retries": 3,
    "lead_retry_schedule": [
        15,
        60,
        120
    ]
}

Update Team

Endpoint

PUT https://api.callingly.com/v1/teams/{{id}}

List Team Users

Endpoint

GET https://api.callingly.com/v1/teams/{{id}}/agents

Sample Request

{
    "agents": [
        {
            "id": 1,
            "name": "John Smith",
            "priority": 1,
            "cap": null
        },
        {
            "id": 2,
            "name": "Test Test",
            "priority": 1,
            "cap": 1000
        },
        {
            "id": 3,
            "name": "Jane Smith",
            "priority": 2,
            "cap": null
        }
    ]
}

Update Users

Endpoint

PUT https://api.callingly.com/v1/teams/{{id}}/agents

Sample Request

{
    "agents": ["1","3","5"]
}

Remove Agent

Endpoint

DELETE https://api.callingly.com/v1/teams/{{id}}/agents/{{agent_id}}

Update Agent Settings

Endpoint

PUT https://api.callingly.com/v1/teams/{{id}}/agents/{{agent_id}}

Sample Request

{
    "priority": 1,
    "cap": 100
}

Integration Routing

Routing decides which team a lead from a connected integration goes to. Rules are checked in order; the first match wins, and a lead that matches none goes to the default team. Managing routing requires an owner or admin API key.

List Integrations

Endpoint

GET https://api.callingly.com/v1/integrations

Get Routing

Endpoint

GET https://api.callingly.com/v1/integrations/{{id}}/routing

Sample Response

{
    "default_team_id": 10,
    "rules": [
        {
            "field": "source",
            "operator": "equals",
            "value": "Realtor.com",
            "conditions": [
                {
                    "field": "tags",
                    "operator": "is_any_of",
                    "value": "08810, 08816"
                }
            ],
            "action": "redirect",
            "team_id": 11
        }
    ]
}

Update Routing

Send rules to replace the whole list, in order. Leave out rules or team_id to keep the current value. Operators: equals, contains, starts_with, ends_with, is_any_of, greater_than, greater_than_or_equal_to, less_than, less_than_or_equal_to, between (with value2). action is redirect (send to team_id) or ignore (don't call).

Endpoint

PUT https://api.callingly.com/v1/integrations/{{id}}/routing

Sample Request

{
    "team_id": 10,
    "rules": [
        {
            "field": "source",
            "operator": "equals",
            "value": "Realtor.com",
            "action": "redirect",
            "team_id": 11
        }
    ]
}

Sequences

A sequence is the list of follow-up steps a team runs for each lead. Managing sequences requires an owner, admin or manager API key.

List Sequences

Endpoint

GET https://api.callingly.com/v1/sequences

Get Sequence

Endpoint

GET https://api.callingly.com/v1/sequences/{{id}}

Update Sequence

during_steps (while the team is available) and outside_steps (after hours) each replace the whole list. Step types: wait (unit: immediately, minutes, hours, days or same_day, with value and time), ai-call, call (a rep is called first) and sms (with body). Leave out a field to keep its current value.

Endpoint

PUT https://api.callingly.com/v1/sequences/{{id}}

Sample Request

{
    "during_steps": [
        { "type": "ai-call" },
        { "type": "wait", "unit": "hours", "value": 2 },
        { "type": "ai-call" },
        { "type": "wait", "unit": "days", "value": 1, "time": "08:00" },
        { "type": "ai-call" }
    ]
}

Users

List Users

Endpoint

GET https://api.callingly.com/v1/agents?account_id=1

Sample response

[
    {
        "id": 123,
        "account_id": 1,
        "fname": "John",
        "lname": "Smith",
        "phone_number": "+16024819661",
        "ext": "",
        "donotdisturb": 0,
        "priority": 1,
        "timezone": "America/Phoenix",
        "is_available": true
    }
]

Get Agent Schedule

Endpoint

GET https://api.callingly.com/v1/agents/{{id}}/schedule

Sample response

[
    {
        "label": "Sunday",
        "day": 0,
        "is_available": false,
        "times": [
            {
                "start": "allday",
                "end": "20:00:00"
            }
        ]
    },
    {
        "label": "Monday",
        "day": 1,
        "is_available": true,
        "times": [
            {
                "start": "06:00:00",
                "end": "20:00:00"
            }
        ]
    },
    {
        "label": "Tuesday",
        "day": 2,
        "is_available": true,
        "times": [
            {
                "start": "06:00:00",
                "end": "12:00:00"
            },
            {
                "start": "12:00:00",
                "end": "23:45:00"
            }
        ]
    },
    {
        "label": "Wednesday",
        "day": 3,
        "is_available": true,
        "times": [
            {
                "start": "06:00:00",
                "end": "20:00:00"
            }
        ]
    },
    {
        "label": "Thursday",
        "day": 4,
        "is_available": true,
        "times": [
            {
                "start": "06:00:00",
                "end": "22:00:00"
            }
        ]
    },
    {
        "label": "Friday",
        "day": 5,
        "is_available": true,
        "times": [
            {
                "start": "allday",
                "end": "20:00:00"
            }
        ]
    },
    {
        "label": "Saturday",
        "day": 6,
        "is_available": true,
        "times": [
            {
                "start": "allday",
                "end": "20:00:00"
            }
        ]
    }
]

Create Agent

Endpoint

POST https://api.callingly.com/v1/agents

Sample response

{
	"account_id": 1,
	"fname": "John",
        "lname": "Smith",
	"phone_number": "555-555-5555",
	"ext": "100",
	"timezone: "America/Phoenix"
}

Update Agent

Endpoint

PUT https://api.callingly.com/v1/agents/{{id}}

Sample request

{
	"account_id": 1,
	"fname": "John",
        "lname": "Smith",
	"phone_number": "555-555-5555",
	"ext": "100",
	"timezone: "America/Phoenix",
	"donotdisturb": 1,
        "donotdisturb_until" "2021-01-25 22:00:00"
}

Delete Agent

Endpoint

DELETE https://api.callingly.com/v1/agents/{{id}}

Update Schedule

Endpoint

PUT https://api.callingly.com/v1/agents/{{id}}/schedule

Sample Request

[
    {
        "label": "Sunday",
        "day": 0,
        "is_available": false,
        "times": [
            {
                "start": "allday",
                "end": "20:00:00"
            }
        ]
    },
    {
        "label": "Monday",
        "day": 1,
        "is_available": true,
        "times": [
            {
                "start": "06:00:00",
                "end": "20:00:00"
            }
        ]
    },
    {
        "label": "Tuesday",
        "day": 2,
        "is_available": true,
        "times": [
            {
                "start": "06:00:00",
                "end": "12:00:00"
            },
            {
                "start": "12:00:00",
                "end": "23:45:00"
            }
        ]
    },
    {
        "label": "Wednesday",
        "day": 3,
        "is_available": true,
        "times": [
            {
                "start": "06:00:00",
                "end": "20:00:00"
            }
        ]
    },
    {
        "label": "Thursday",
        "day": 4,
        "is_available": true,
        "times": [
            {
                "start": "06:00:00",
                "end": "22:00:00"
            }
        ]
    },
    {
        "label": "Friday",
        "day": 5,
        "is_available": true,
        "times": [
            {
                "start": "allday",
                "end": "20:00:00"
            }
        ]
    },
    {
        "label": "Saturday",
        "day": 6,
        "is_available": true,
        "times": [
            {
                "start": "allday",
                "end": "20:00:00"
            }
        ]
    }
]

Webhooks

tips_and_updates
Auto-disable protection: Callingly automatically disables a webhook after 100 consecutive failed deliveries. This protects your queue from repeatedly attempting to deliver to an unreachable URL. You can re-enable a disabled webhook at any time — either from the Settings → Webhooks dashboard or via the API — which also resets the failure counter so the webhook gets a fresh start.

List All Webhooks

Endpoint

GET https://api.callingly.com/v1/webhooks

Sample Response

[
    {
        "id": 1122,
        "account_id": 1,
        "name": "My Webhook 1",
        "event": "lead_updated",
        "target_url": "http://example.com/",
        "call_status": null,
        "call_lead_status": null,
        "team_id": 1,
        "number_id": 1,
        "field": null,
        "filter": null,
        "is_active": true,
        "consecutive_failures": 0,
        "last_failed_at": null,
        "is_auto_disabled": false
    },
    {
        "id": 1123,
        "account_id": 1,
        "name": "My Webhook 2",
        "event": "call_completed",
        "target_url": "http://example.com/",
        "call_status": null,
        "call_lead_status": null,
        "team_id": 1,
        "number_id": 1,
        "field": null,
        "filter": null,
        "is_active": false,
        "consecutive_failures": 100,
        "last_failed_at": "2026-05-10T14:32:00.000000Z",
        "is_auto_disabled": true
    },
]

Get a Webhook

Endpoint

GET https://api.callingly.com/v1/webhooks/{{id}}

Sample Response

{
    "id": 1123,
    "name": "My Webhook",
    "account_id": 1,
    "event": "call_completed",
    "target_url": "http://example.com/",
    "call_status": null,
    "call_lead_status": null,
    "team_id": 1,
    "number_id": 1,
    "field": null,
    "filter": null,
    "is_active": true,
    "consecutive_failures": 0,
    "last_failed_at": null,
    "is_auto_disabled": false
}

Create a Webhook

Endpoint

POST https://api.callingly.com/v1/webhooks

Fields

Field Type Required Example
name

string


Yes My Webhook
event

string

  • call_completed
  • lead_created
  • lead_updated

Yes call_completed
target_url string (url) Yes http://www.example.com/

call_direction


call_completed event only

string | null

  • outbound
  • inbound
No null

call_status


call_completed event only

string | null

  • completed
  • missed
  • offline
No completed

call_lead_status


call_completed event only

string | null

  • contacted
  • missed
  • removed
  • voicemail
No contacted

team_id


call_direction outbound only

call_completed event only

int | null No 123

number_id


call_direction inbound only

call_completed event only

int | null No 456

field - only trigger the webhook when the selected lead field has changed .


lead_updated, lead_created events only

string | null

  • lead_owner
  • result
  • stage
  • status
  • tags
No stage

filter - only leads with the matching value in the field will trigger the webhook


lead_updated, lead_created events only

string | null No called

Sample Body

{
    "name": "My Webhook",
    "event": "call_completed",
    "target_url": "http://example.com/",
    "team_id": 1
}

Sample Response

{
    "id": 1124,
    "name": "My Webhook",
    "account_id": 1,
    "event": "call_completed",
    "target_url": "http://example.com/",
    "call_status": null,
    "call_lead_status": null,
    "team_id": 1,
    "number_id": 1,
    "field": null,
    "filter": null,
    "is_active": true,
    "consecutive_failures": 0,
    "last_failed_at": null,
    "is_auto_disabled": false
}

Update a Webhook

This endpoint supports partial updates.

Endpoint

PUT https://api.callingly.com/v1/webhooks/{{id}}

Fields

Field Type Required Example
name

string


Yes My Webhook
event

string

  • call_completed
  • lead_created
  • lead_updated

Yes call_completed
target_url string (url) Yes http://www.example.com/

call_direction


call_completed event only

string | null

  • outbound
  • inbound
No null

call_status


call_completed event only

string | null

  • completed
  • missed
  • offline
No completed

call_lead_status


call_completed event only

string | null

  • contacted
  • missed
  • removed
  • voicemail
No contacted

team_id


call_direction outbound only

call_completed event only

int | null No 123

number_id


call_direction inbound only

call_completed event only

int | null No 456

field - only trigger the webhook when the selected lead field has changed .


lead_updated, lead_created events only

string | null

  • lead_owner
  • result
  • stage
  • status
  • tags
No stage

filter - only leads with the matching value in the field will trigger the webhook


lead_updated, lead_created events only

string | null No called

is_active - enable or disable the webhook. Setting to true re-enables a disabled or auto-disabled webhook and resets the consecutive failure counter.

boolean No true

Sample Body

{
    "target_url": "http://example.com/new_url",
    "number_id": 1
}

Sample Response

{
    "id": 1124,
    "name": "My Webhook",
    "account_id": 1,
    "event": "call_completed",
    "target_url": "http://example.com/new_url",
    "call_status": null,
    "call_lead_status": null,
    "team_id": 1,
    "number_id": 1,
    "field": null,
    "filter": null,
    "is_active": true,
    "consecutive_failures": 0,
    "last_failed_at": null,
    "is_auto_disabled": false
}

Delete a Webhook

Endpoint

DELETE https://api.callingly.com/v1/webhooks/{{id}}

Sample Response

{
    "message": "Webhook deleted."
}
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us