3CX Webhook documentation

We recommend using a free service (https://webhook.site/) to display the received webhook events. Specify the received URL in the TCXWebAPI.ini file. Restart the WebAPI service and track events.
POST Scheme (recommended)

Specify in the TCXWebAPI.ini file:

  • WEBHOOK_URL = for POST requests (default)
  • WEBHOOK_URL_2 = for POST requests (due to Users.csv)

  • RECORDING_FULL_INFO = 1 (1 for enable URL record final request)
  • WEBHOOK_POST_URL = POST request (URL record) (default)
  • WEBHOOK_POST_URL_2 = POST requests (due to Users.csv)

  • POST = 1 for POST scheme, 0 for GET scheme
  • WEBHOOK_URL_MONITOR = for a mirror (shadow) POST request
  • WEBHOOK_POST_URL_MONITOR = for a mirror (shadow) POST request (URL record)

3CX WebAPI will start generating POST webhooks according to the same time as the events
Examples for incoming successful call (default events and fields)
Ringing call in IVR 809
{
    "event": "ringing",
    "callerid": "381629759787",
    "user": "809",
    "usertype": "other",
    "did": "Landline 0213220030",
    "id": "250303102017_9-0",
    "chid": "bdc7048c2c0c0000_9",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Lastname, Firstname"
}
Ringing call in Queue 801
{
    "event": "ringing",
    "callerid": "381629759787",
    "user": "801",
    "usertype": "queue",
    "did": "Landline 0213220030",
    "id": "250303115131_10-0",
    "chid": "5a4b588c2c0c0000_10",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Lastname, Firstname"
}
Ringing call to Extension 102
{
    "event": "ringing",
    "callerid": "381629759787",
    "user": "102",
    "usertype": "ext",
    "did": "Landline 0213220030",
    "id": "250303115131_10-0",
    "chid": "5a4b588c2c0c0000_10",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Lastname, Firstname"
}
Picking up the phone on extension 100
{
    "callerid": "381629759787",
    "event": "pickupincoming",
    "user": "100",
    "did": "Landline 0213220030",
    "trtype": "NotDef",
    "id": "250303115131_10-1",
    "chid": "5a4b588c2c0c0000_10",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Lastname, Firstname"
}
Successful incoming call with a link to the conversation recording
MP3 compression is activated
{
    "FILES": [
        "https://api1.3cx.eu:5001/webapi/recording/381629759787-100_250303122729_13-1-1.mp3"
    ],
    "event": "incoming",
    "callerid": "381629759787",
    "user": "100",
    "finishtype": "Ok",
    "transfer": "False",
    "breakside": "External",
    "did": "Landline 0213220030",
    "title": "Answered call from 381629759787 (0:19)",
    "id": "250303122729_13-1",
    "chid": "523a798c2c0c0000_13",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Lastname, Firstname"
}
Transcription of a incoming call
{
    "event": "ai",
    "id": "250303122729_13-1",
    "summary": "An agreement on the next meeting",
    "transcription": "Hello, how are you, colleagues? Okay, I will send you a short brief of our meeting. Okay, let's meet tomorrow again. See you later, colleagues. Bye."
}
Examples for incoming missed call (default events and fields)
Missed call in IVR 809
{
    "event": "incoming",
    "callerid": "381629759787",
    "user": "809",
    "finishtype": "Missed",
    "transfer": "False",
    "breakside": "Undef",
    "did": "Landline 0213220030",
    "title": "Missed call  by IVR 809 from 381629759787",
    "id": "250303102017_9-0",
    "chid": "bdc7048c2c0c0000_9",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Lastname, Firstname"
}
Missed call in Queue 801
{
    "event": "incoming",
    "callerid": "381629759787",
    "user": "801",
    "finishtype": "Missed",
    "transfer": "False",
    "breakside": "Undef",
    "did": "Landline 0213220030",
    "title": "Missed call  by queue 801 from 381629759787",
    "id": "250303122130_11-0",
    "chid": "63c2738c2c0c0000_11",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Lastname, Firstname"
}
Missed call by extension 100
{
    "event": "incoming",
    "callerid": "381629759787",
    "user": "100",
    "finishtype": "Missed",
    "transfer": "False",
    "breakside": "Undef",
    "did": "Landline 0213220030",
    "title": "Missed call  from 381629759787",
    "id": "250303123348_15-0",
    "chid": "f8027f8c2c0c0000_15",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Lastname, Firstname"
}
Examples for outgoing successful call (default events and fields)
Outgoing call attempt
{
    "event": "dialing",
    "callerid": "381629759787",
    "user": "100",
    "id": "250303125227_19-0",
    "chid": "6617908c2c0c0000_19",
    "phonebook": ""
}
Picking up the handset on an outgoing call
{
    "callerid": "381629759787",
    "event": "pickupoutgoing",
    "user": "100",
    "did": "",
    "trtype": "NotDef",
    "id": "250303125227_19-1",
    "chid": "6617908c2c0c0000_19",
    "inbound_did": "",
    "sip_displayname": "",
    "phonebook": ""
}
Successful outgoing call with a link to the conversation recording
In case of WAV URL links
{
    "FILES": [
        "https://api1.3cx.eu:5001/webapi/wav/security_key/100@_100-381629759787_20250303115231(19).wav"
    ],
    "event": "outgoing",
    "callerid": "381629759787",
    "user": "100",
    "finishtype": "Ok",
    "transfer": "False",
    "breakside": "External",
    "did": "",
    "title": "Successful call to 381629759787 (1:16)",
    "id": "250303125227_19-1",
    "chid": "6617908c2c0c0000_19",
    "inbound_did": "",
    "sip_displayname": "",
    "phonebook": ""
}
Examples for outgoing unsuccessful call (default events and fields)
Outgoing call attempt
{
    "event": "dialing",
    "callerid": "381629759787",
    "user": "100",
    "id": "250303124159_18-0",
    "chid": "8681868c2c0c0000_18",
    "phonebook": ""
}
Unanswered outgoing call
{
    "event": "outgoing",
    "callerid": "381629759787",
    "user": "100",
    "finishtype": "Missed",
    "transfer": "False",
    "breakside": "Undef",
    "did": "",
    "title": "Unanswered call to 381629759787",
    "id": "250303124159_18-0",
    "chid": "8681868c2c0c0000_18",
    "inbound_did": "",
    "sip_displayname": "",
    "phonebook": ""
}
GET Scheme

Specify in the TCXWebAPI.ini file:

  • WEBHOOK_URL = for GET requests (default)
  • WEBHOOK_URL_2 = for GET requests (due to Users.csv)

  • RECORDING_FULL_INFO = 1 (1 for enable URL record final request)
  • WEBHOOK_POST_URL = POST request (URL record) (default)
  • WEBHOOK_POST_URL_2 = POST requests (due to Users.csv)

  • POST = 0 for GET scheme, 1 for POST scheme
  • WEBHOOK_URL_MONITOR = for a mirror (shadow) GET request
  • WEBHOOK_POST_URL_MONITOR = for a mirror (shadow) GET request (URL record)

3CX WebAPI will start generating GET webhooks according to the same time as the events
Incoming successful call (default events and fields)
Incoming missed call (default events and fields)
Outgoing successful call (default events and fields)
Outgoing unsuccessful call (default events and fields)

Screenshots