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 (legacy)
  • 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": "DID Serbia 021 3220 030",
    "id": "250910183903_6-0",
    "chid": "00000000-01dc-2271-6ab7-1e2e00000006",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Smith, John",
    "call_id1": "804abf4a-0907-123f-b7b6-005056be101b;to-tag=e75c4562;from-tag=tSvmm0DjBt0Sg",
    "call_id2": ""
}
Ringing call in Queue 812
{
    "event": "ringing",
    "callerid": "381629759787",
    "user": "812",
    "usertype": "other",
    "did": "DID Serbia 021 3220 030",
    "id": "250910183903_6-0",
    "chid": "00000000-01dc-2271-6ab7-1e2e00000006",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Smith, John",
    "call_id1": "804abf4a-0907-123f-b7b6-005056be101b;to-tag=e75c4562;from-tag=tSvmm0DjBt0Sg",
    "call_id2": "YTHrJHZLJTcW88bVJ_-Deg..;from-tag=3109c954;to-tag=3d275534"
}
Ringing call to Extension 104
{
    "event": "ringing",
    "callerid": "381629759787",
    "user": "104",
    "usertype": "ext",
    "did": "DID Serbia 021 3220 030",
    "id": "250910183903_6-0",
    "chid": "00000000-01dc-2271-6ab7-1e2e00000006",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Smith, John",
    "call_id1": "804abf4a-0907-123f-b7b6-005056be101b;to-tag=e75c4562;from-tag=tSvmm0DjBt0Sg",
    "call_id2": "YTHrJHZLJTcW88bVJ_-Deg..;from-tag=3109c954;to-tag=3d275534"
}
Picking up the phone on extension 104
{
    "callerid": "381629759787",
    "event": "pickupincoming",
    "user": "104",
    "did": "DID Serbia 021 3220 030",
    "trtype": "NotDef",
    "id": "250910183903_6-1",
    "chid": "00000000-01dc-2271-6ab7-1e2e00000006",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Smith, John",
    "call_id1": "804abf4a-0907-123f-b7b6-005056be101b;to-tag=e75c4562;from-tag=tSvmm0DjBt0Sg",
    "call_id2": "EosFgS-6no_UhSZ-XrRovg..;from-tag=c820107b;to-tag=oJUZnqzFlg3LcKLD0W2aVtbx7xC33eh6"
}
Successful incoming call with a link to the conversation recording
MP3 compression is activated
{
    "FILES": [
        "https://{3CXFQDN}/webapi/recording/250910183903_6-1-1.mp3"
    ],
    "event": "incoming",
    "callerid": "381629759787",
    "user": "104",
    "finishtype": "Ok",
    "transfer": "False",
    "breakside": "Internal",
    "did": "DID Serbia 021 3220 030",
    "title": "DID Serbia 021 3220 030:Answered call from 381629759787 (0:18)",
    "id": "250910183903_6-1",
    "chid": "00000000-01dc-2271-6ab7-1e2e00000006",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Smith, John",
    "call_id1": "804abf4a-0907-123f-b7b6-005056be101b;to-tag=e75c4562;from-tag=tSvmm0DjBt0Sg",
    "call_id2": "YTHrJHZLJTcW88bVJ_-Deg..;from-tag=3109c954;to-tag=3d275534",
    "termination_reason_details": "completed_elsewhere",
    "source_presentation": "Smith, John:DID Serbia 021 3220 030:Group1"
}
Transcription of a incoming call
{
    "event": "ai",
    "id": "250910183903_6-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": "DID Serbia 021 3220 030",
    "title": "DID Serbia 021 3220 030:Missed call  by IVR 809 from 381629759787",
    "id": "250910191525_7-0",
    "chid": "00000000-01dc-2276-7f8f-bc6100000007",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Smith, John",
    "call_id1": "9520c5c1-090c-123f-b7b6-005056be101b;to-tag=b2467f1d;from-tag=m0B6HaU0KmtrF",
    "call_id2": "xoz4awpui8Uxvgzxr3uJ6w..;from-tag=8a64207c;to-tag=3c39467d",
    "termination_reason_details": "by_did",
    "source_presentation": "Smith, John:DID Serbia 021 3220 030"
}
Missed call in Queue 801
{
    "event": "incoming",
    "callerid": "381629759787",
    "user": "812",
    "finishtype": "Missed",
    "transfer": "False",
    "breakside": "Undef",
    "did": "DID Serbia 021 3220 030",
    "title": "DID Serbia 021 3220 030:Missed call  from 381629759787",
    "id": "250910191612_8-0",
    "chid": "00000000-01dc-2276-9b59-681a00000008",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Smith, John",
    "call_id1": "b0e9d68e-090c-123f-b7b6-005056be101b;to-tag=ca671732;from-tag=jF2D7NmaXZp9a",
    "call_id2": "r80GE7A6HhqLoLHocKJAQQ..;from-tag=7f3b3267;to-tag=08704141",
    "termination_reason_details": "terminated_by_originator",
    "source_presentation": "Smith, John:DID Serbia 021 3220 030:Group1"
}
Missed call by extension 104 in case of busy
{
    "event": "incoming",
    "callerid": "381629759787",
    "user": "104",
    "finishtype": "Missed",
    "transfer": "False",
    "breakside": "Undef",
    "did": "DID Serbia 021 3220 030",
    "title": "DID Serbia 021 3220 030:Missed call  from 381629759787",
    "id": "250910191717_9-1",
    "chid": "00000000-01dc-2276-c224-038300000009",
    "inbound_did": "381213220030",
    "sip_displayname": "381629759787",
    "phonebook": "Smith, John",
    "call_id1": "d7b4d704-090c-123f-b7b6-005056be101b;to-tag=a17b6403;from-tag=39rcy3DQFmtXj",
    "call_id2": "FzVDAWtVxMzJ2VvTN5fW0A..;from-tag=6a484030;to-tag=3f623e63",
    "termination_reason_details": "busy",
    "source_presentation": "Smith, John:DID Serbia 021 3220 030"
}
Examples for outgoing successful call (default events and fields)
Outgoing call attempt
{
    "event": "dialing",
    "callerid": "381629759787",
    "user": "104",
    "id": "250910182505_3-0",
    "chid": "00000000-01dc-226f-773a-c3b300000003",
    "phonebook": "",
    "call_id1": "mu581CPivhhyi5R1nbsEfRZx6HiVY-4x;to-tag=5158a914;from-tag=ISuH9b0KHZdb0nFmc1Xq-TC-Py4NjqvE",
    "call_id2": ""
}
Picking up the handset on an outgoing call
{
    "callerid": "381629759787",
    "event": "pickupoutgoing",
    "user": "104",
    "did": "",
    "trtype": "NotDef",
    "id": "250910182505_3-1",
    "chid": "00000000-01dc-226f-773a-c3b300000003",
    "inbound_did": "",
    "sip_displayname": "",
    "phonebook": "",
    "call_id1": "mu581CPivhhyi5R1nbsEfRZx6HiVY-4x;to-tag=5158a914;from-tag=ISuH9b0KHZdb0nFmc1Xq-TC-Py4NjqvE",
    "call_id2": "M5hA4x1n5WnZt7obHxRohg..;from-tag=ac35583e;to-tag=as22301e9d"
}
Successful outgoing call with a link to the conversation recording
In case of MP3 URL links
{
    "FILES": [
        "https://{3CXFQDN}/webapi/recording/250910182505_3-1-1.mp3"
    ],
    "event": "outgoing",
    "callerid": "381629759787",
    "user": "104",
    "finishtype": "Ok",
    "transfer": "False",
    "breakside": "Internal",
    "did": "",
    "title": "Successful call to 381629759787 (1:53)",
    "id": "250910182505_3-1",
    "chid": "00000000-01dc-226f-773a-c3b300000003",
    "inbound_did": "381629759787",
    "sip_displayname": "",
    "phonebook": "",
    "call_id1": "mu581CPivhhyi5R1nbsEfRZx6HiVY-4x;to-tag=5158a914;from-tag=ISuH9b0KHZdb0nFmc1Xq-TC-Py4NjqvE",
    "call_id2": "M5hA4x1n5WnZt7obHxRohg..;from-tag=ac35583e;to-tag=as22301e9d",
    "termination_reason_details": "polling",
    "source_presentation": "381213220030"
}
Successful outgoing call with transcribed conversation text
In case of MP3 URL links
{
    "event": "ai",
    "id": "250910182505_3-1",
    "summary": "The customer reported a lost debit card and requested immediate blocking, which the agent confirmed was done right away. A replacement card was ordered to be delivered within 3–5 business days, with mobile app access available in the meantime. The call concluded positively, with the customer expressing gratitude and the agent offering well-wishes.",
    "transcription": "Hello, I just realized I lost my debit card, and I need to block it right away. Oh, I’m sorry to hear that. Don’t worry, we’ll take care of it right now. Could you please confirm your full name and date of birth for security? Sure. My name is John Peterson, and my date of birth is March 12, 1990. Thank you, Mr. Peterson. I’ve verified your details. I’ll go ahead and block your current card so it can’t be used anymore. This will take effect instantly. Perfect, thank you so much. That’s a relief. You’re welcome. Now, would you like me to order a replacement card for you? We can deliver it to your registered address within three to five business days. Yes, please. That would be great. Done. I’ve placed the order. You’ll also receive a text message with tracking information once it’s dispatched. In the meantime, you can continue using our mobile app for transfers and payments. That’s very convenient. Thanks for helping me so quickly. My pleasure, Mr. Peterson. Is there anything else I can do for you today? No, that’s everything. I really appreciate your support. Anytime. Thank you for calling, and we wish you a great rest of your day. You too. Goodbye.",
    "sentiment_score": "5"
}
Examples for outgoing unsuccessful call (default events and fields)
Outgoing call attempt
{
    "event": "dialing",
    "callerid": "381629759787",
    "user": "104",
    "id": "250910180942_2-0",
    "chid": "00000000-01dc-226d-5102-741100000002",
    "phonebook": "",
    "call_id1": "9QkKqbI9DI0SpjQZXNSZdv.ua1JW-k.y;to-tag=f40b0d76;from-tag=DIHYo1dRIJC0HVTa9-6nYd4EuXwHcxuY",
    "call_id2": ""
}
Unanswered outgoing call
{
    "event": "outgoing",
    "callerid": "381629759787",
    "user": "800",
    "finishtype": "Missed",
    "transfer": "False",
    "breakside": "Undef",
    "did": "",
    "title": "Unanswered call to 381629759787",
    "id": "250910180621_1-0",
    "chid": "00000000-01dc-226c-d961-c78c00000001",
    "inbound_did": "",
    "sip_displayname": "",
    "phonebook": "",
    "call_id1": "wOT6uo3_pW5puFEMBSqMmw..;to-tag=5d14ed24;from-tag=0c2fb431",
    "call_id2": "oTbiMZoH2j7v-RGIQomkPw..;from-tag=a2260f2b;to-tag=8b30d901",
    "termination_reason_details": "declined",
    "source_presentation": "381213220030"
}
GET Scheme (legacy)

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