
The Phone API
Introduction
The Phone API provides allows your extensions to listen in to the event generated by the phone when the user places and receives calls.
The Phone API will include functions to control the phone in a future API version.
Connecting to the Phone API
The extension API is available at:
window.voxtopAPI.phone
Phone API - Functions
At the moment the phone API does not provide any functions for controlling the phone.
Phone API - Events
Subscribing
As with all of the voxtopAPI events you subscribe using the onEvent function and pass a callback function to process messages.
const unsubscribePhoneEvents = window.voxtopAPI.phone.onEvent(callback)
Unsubscribing
To unsubscribe from receiving events, simply run the function return from the onEvent function call.
unsubscribePhoneEvents();
Example Usage
const processMessages = (event) => {
console.log('Received phone event:', event)
}
const unsubscribePhoneEvents = window.voxtopAPI.phone.onEvent(processMessages)
Phone Event Messages
The following events describe phone connection, registration, and call lifecycle activity.
createdAt is formatted as an ISO 8601 UTC timestamp.
Required is based on the provided examples. Fields marked Conditional appear only for some call directions or event scenarios.
The following eventType values are emitted from the phone.
| Event Type | Purpose |
|---|---|
| phone.state.connected | Emitted when the phone connects to the i164 network |
| phone.state.registered | Emitted when the phone registers with the i164 network |
| phone.call.created | Emitted when the phone makes or receives a new call |
| phone.call.progress | Emitted when a call is ringing and awaiting answer. |
| phone.call.accepted | Emitted when a call is answered. |
| phone.call.confirmed | Emitted when a call is answered and ready. |
| phone.call.hanging-up | Emitted when a call is in the process of being hung-up. |
| phone.call.ended | Emitted when a call has ended |
| phone.call.hold | Emitted when a call is put on hold |
| phone.call.unhold | Emitted when a call is taken off hold |
| phone.call.muted | Emitted when a call is muted |
| phone.call.unmuted | Emitted when a call is unmuted |
| phone.call.blindTransfer.started | Emitted when a blind transfer has been started for an active call |
| phone.call.blindTransfer.succeeded | Emitted when a blind transfer has completed successfully. |
phone.state.connected
Emitted when the phone connection is established.
{
"eventId": "719fc228-b7fc-45f4-ae63-6188b6dc6f6a",
"createdAt": "2026-07-03T14:30:54.446Z",
"eventType": "phone.state.connected",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea"
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.state.connected. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
phone.state.registered
Emitted when the phone device has successfully registered.
{
"eventId": "835fb0ac-7deb-4fe2-9c4c-5431db052dc3",
"createdAt": "2026-07-03T14:30:54.525Z",
"eventType": "phone.state.registered",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea"
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.state.registered. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
phone.call.created
Emitted when a new phone call is created.
{
"eventId": "80f1f421-16ef-457d-b650-da9f0725e482",
"createdAt": "2026-07-03T14:34:47.525Z",
"eventType": "phone.call.created",
"direction": "incoming",
"callRef": "5c0481f8-538e-4ab8-9025-4b28dccba607",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"phoneServiceUUID": "3e560df5-3792-4206-960d-f53792020693",
"voxletInstanceUUID": "c5e8e1f6-50c5-48c0-a8e1-f650c5a8c08f",
"state": "new",
"onHold": false,
"stt": {
"local": false,
"remote": false
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "07XXXXXXXX",
"remoteDisplayName": "Max"
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.created. |
direction |
string | Yes | Direction of the call. Observed values are incoming and outgoing. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Conditional | Unique identifier for the phone service. Present in the provided incoming call examples. |
voxletInstanceUUID |
string | Conditional | Unique identifier for the Voxlet instance. Present in the provided incoming call examples. |
state |
string | Yes | Current call state. Observed values for this event are new and dialled. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
phone.call.progress
Emitted when a call is progressing, such as when the remote side is ringing.
{
"eventId": "c7158bc6-f91a-4839-9e46-5386c592f581",
"createdAt": "2026-07-03T14:31:23.726Z",
"eventType": "phone.call.progress",
"direction": "outgoing",
"callRef": "4378a4ff-2ff9-49a0-a8ad-e9b64a0394d9",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"state": "progress",
"onHold": false,
"stt": {
"local": false,
"remote": false
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "123",
"remoteDisplayName": null,
"data": {
"originator": "remote",
"statusCode": 180,
"reasonPhrase": "Ringing"
}
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.progress. |
direction |
string | Yes | Direction of the call. Observed values are incoming and outgoing. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Conditional | Unique identifier for the phone service. Present in the provided incoming call examples. |
voxletInstanceUUID |
string | Conditional | Unique identifier for the Voxlet instance. Present in the provided incoming call examples. |
state |
string | Yes | Current call state. For this event, the observed value is progress. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
data |
object | Conditional | Additional progress information, such as SIP-style status details. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
data object
| Property | Type | Required | Description |
|---|---|---|---|
data.originator |
string | Yes | Party that originated the progress update. Observed value is remote. |
data.statusCode |
number | Yes | Status code associated with the progress update. Example value is 180. |
data.reasonPhrase |
string | Yes | Human-readable reason phrase associated with the progress update. Example value is Ringing. |
phone.call.accepted
Emitted when a call has been accepted.
{
"eventId": "35873b1a-38b5-44df-ad5b-3438ad43c261",
"createdAt": "2026-07-03T14:34:50.954Z",
"eventType": "phone.call.accepted",
"direction": "incoming",
"callRef": "5c0481f8-538e-4ab8-9025-4b28dccba607",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"phoneServiceUUID": "3e560df5-3792-4206-960d-f53792020693",
"voxletInstanceUUID": "c5e8e1f6-50c5-48c0-a8e1-f650c5a8c08f",
"state": "accepted",
"onHold": false,
"stt": {
"local": false,
"remote": false
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "07XXXXXXXX",
"remoteDisplayName": "Max"
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.accepted. |
direction |
string | Yes | Direction of the call. Observed values are incoming and outgoing. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Conditional | Unique identifier for the phone service. Present in the provided incoming call examples. |
voxletInstanceUUID |
string | Conditional | Unique identifier for the Voxlet instance. Present in the provided incoming call examples. |
state |
string | Yes | Current call state. For this event, the observed value is accepted. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
phone.call.confirmed
Emitted when a call has been confirmed and is active.
{
"eventId": "eb675ff3-e330-4731-af09-150614a21d7f",
"createdAt": "2026-07-03T14:34:50.988Z",
"eventType": "phone.call.confirmed",
"direction": "incoming",
"callRef": "5c0481f8-538e-4ab8-9025-4b28dccba607",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"phoneServiceUUID": "3e560df5-3792-4206-960d-f53792020693",
"voxletInstanceUUID": "c5e8e1f6-50c5-48c0-a8e1-f650c5a8c08f",
"state": "confirmed",
"onHold": false,
"stt": {
"local": false,
"remote": false
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "07XXXXXXXX",
"remoteDisplayName": "Max"
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.confirmed. |
direction |
string | Yes | Direction of the call. Observed values are incoming and outgoing. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Conditional | Unique identifier for the phone service. Present in the provided incoming call examples. |
voxletInstanceUUID |
string | Conditional | Unique identifier for the Voxlet instance. Present in the provided incoming call examples. |
state |
string | Yes | Current call state. For this event, the observed value is confirmed. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
phone.call.hanging-up
Emitted when a call is in the process of being hung up.
{
"eventId": "14ef0d68-1181-46a3-a116-9a7967dfbae5",
"createdAt": "2026-07-03T14:34:56.164Z",
"eventType": "phone.call.hanging-up",
"direction": "incoming",
"callRef": "5c0481f8-538e-4ab8-9025-4b28dccba607",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"phoneServiceUUID": "3e560df5-3792-4206-960d-f53792020693",
"voxletInstanceUUID": "c5e8e1f6-50c5-48c0-a8e1-f650c5a8c08f",
"state": "confirmed",
"onHold": false,
"stt": {
"local": true,
"remote": true
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "07XXXXXXXX",
"remoteDisplayName": "Max"
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.hanging-up. |
direction |
string | Yes | Direction of the call. Observed value is incoming. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Yes | Unique identifier for the phone service. |
voxletInstanceUUID |
string | Yes | Unique identifier for the Voxlet instance. |
state |
string | Yes | Current call state at the time the hang-up is initiated. Observed value is confirmed. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
phone.call.ended
Emitted when a call has ended.
{
"eventId": "4fd1bb90-9028-4a68-9eab-dfcb79a906d9",
"createdAt": "2026-07-03T14:34:56.171Z",
"eventType": "phone.call.ended",
"direction": "incoming",
"callRef": "5c0481f8-538e-4ab8-9025-4b28dccba607",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"phoneServiceUUID": "3e560df5-3792-4206-960d-f53792020693",
"voxletInstanceUUID": "c5e8e1f6-50c5-48c0-a8e1-f650c5a8c08f",
"state": "ended",
"onHold": false,
"stt": {
"local": true,
"remote": true
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "07XXXXXXXX",
"remoteDisplayName": "Max",
"data": {
"originator": "local",
"cause": "Terminated",
"statusCode": null,
"reasonPhrase": null
}
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.ended. |
direction |
string | Yes | Direction of the call. Observed values are incoming and outgoing. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Conditional | Unique identifier for the phone service. Present in the provided incoming call examples. |
voxletInstanceUUID |
string | Conditional | Unique identifier for the Voxlet instance. Present in the provided incoming call examples. |
state |
string | Yes | Current call state. For this event, the observed value is ended. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
data |
object | Yes | Additional information about why the call ended. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
data object
| Property | Type | Required | Description |
|---|---|---|---|
data.originator |
string | Yes | Party that originated the call termination. Observed values are local and remote. |
data.cause |
string | Yes | Cause of the call termination. Example value is Terminated. |
data.statusCode |
number/null | Conditional | Status code associated with the call termination, or null when unavailable. |
data.reasonPhrase |
string/null | Conditional | Human-readable reason phrase associated with the call termination, or null when unavailable. |
phone.call.hold
Emitted when a call is placed on hold.
{
"eventId": "e98700cb-ffe1-4ed1-a617-389c11307497",
"createdAt": "2026-07-03T14:42:35.746Z",
"eventType": "phone.call.hold",
"direction": "incoming",
"callRef": "e06ce829-ce09-4ec1-850f-95081216078c",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"phoneServiceUUID": "3e560df5-3792-4206-960d-f53792020693",
"voxletInstanceUUID": "c5e8e1f6-50c5-48c0-a8e1-f650c5a8c08f",
"state": "confirmed",
"onHold": true,
"stt": {
"local": true,
"remote": true
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "07XXXXXXXX",
"remoteDisplayName": "Max"
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.hold. |
direction |
string | Yes | Direction of the call. Observed value is incoming. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Yes | Unique identifier for the phone service. |
voxletInstanceUUID |
string | Yes | Unique identifier for the Voxlet instance. |
state |
string | Yes | Current call state. For this event, the observed value is confirmed. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. For this event, the value is true. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
phone.call.unhold
Emitted when a call is taken off hold.
{
"eventId": "891fb14f-1cb2-4856-b568-0b50f5d41a9c",
"createdAt": "2026-07-03T14:42:40.213Z",
"eventType": "phone.call.unhold",
"direction": "incoming",
"callRef": "e06ce829-ce09-4ec1-850f-95081216078c",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"phoneServiceUUID": "3e560df5-3792-4206-960d-f53792020693",
"voxletInstanceUUID": "c5e8e1f6-50c5-48c0-a8e1-f650c5a8c08f",
"state": "confirmed",
"onHold": false,
"stt": {
"local": true,
"remote": true
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "07XXXXXXXX",
"remoteDisplayName": "Max"
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.unhold. |
direction |
string | Yes | Direction of the call. Observed value is incoming. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Yes | Unique identifier for the phone service. |
voxletInstanceUUID |
string | Yes | Unique identifier for the Voxlet instance. |
state |
string | Yes | Current call state. For this event, the observed value is confirmed. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. For this event, the value is false. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
phone.call.muted
Emitted when the local call audio is muted.
{
"eventId": "db308856-3dd9-4840-a738-2ccca828c8ea",
"createdAt": "2026-07-03T14:51:21.344Z",
"eventType": "phone.call.muted",
"direction": "outgoing",
"callRef": "aa3382b8-db67-413f-bfbe-bbf03959347c",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"state": "confirmed",
"onHold": false,
"stt": {
"local": true,
"remote": true
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "123",
"remoteDisplayName": null
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.muted. |
direction |
string | Yes | Direction of the call. Observed value is outgoing. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
state |
string | Yes | Current call state. For this event, the observed value is confirmed. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
phone.call.unmuted
Emitted when the local call audio is unmuted.
{
"eventId": "db308856-3dd9-4840-a738-2ccca828c8ea",
"createdAt": "2026-07-03T14:51:21.344Z",
"eventType": "phone.call.unmuted",
"direction": "outgoing",
"callRef": "aa3382b8-db67-413f-bfbe-bbf03959347c",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"state": "confirmed",
"onHold": false,
"stt": {
"local": true,
"remote": true
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "123",
"remoteDisplayName": null
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.unmuted. |
direction |
string | Yes | Direction of the call. Observed value is outgoing. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
state |
string | Yes | Current call state. For this event, the observed value is confirmed. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
phone.call.blindTransfer.started
Emitted when a blind transfer has been started for an active call.
{
"eventId": "8bb8cce7-e3de-4b44-af91-3c7259c1f885",
"createdAt": "2026-07-03T15:21:55.150Z",
"eventType": "phone.call.blindTransfer.started",
"direction": "incoming",
"callRef": "e257a740-a93f-44f7-b727-e89e8e6f71bb",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"phoneServiceUUID": "3e560df5-3792-4206-960d-f53792020693",
"voxletInstanceUUID": "c5e8e1f6-50c5-48c0-a8e1-f650c5a8c08f",
"state": "confirmed",
"onHold": true,
"stt": {
"local": true,
"remote": true
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "0203XXXXXXX",
"remoteDisplayName": "Max",
"data": {
"targetNumber": "07XXXXXXXX"
}
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.blindTransfer.started. |
direction |
string | Yes | Direction of the call. Observed value is incoming. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Yes | Unique identifier for the phone service. |
voxletInstanceUUID |
string | Yes | Unique identifier for the Voxlet instance. |
state |
string | Yes | Current call state at the time the blind transfer is started. Observed value is confirmed. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. For this event, the value is true. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
data |
object | Yes | Additional blind transfer information. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
data object
| Property | Type | Required | Description |
|---|---|---|---|
data.targetNumber |
string | Yes | Number that the call is being transferred to. |
phone.call.blindTransfer.succeeded
Emitted when a blind transfer has completed successfully.
{
"eventId": "c84db670-f5de-4ccc-9625-916af60d0820",
"createdAt": "2026-07-03T15:21:55.211Z",
"eventType": "phone.call.blindTransfer.succeeded",
"direction": "incoming",
"callRef": "e257a740-a93f-44f7-b727-e89e8e6f71bb",
"connectionId": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"deviceRegistrationUUID": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"virtualDeviceRegistrationUUID": "e4971753-daca-4c9f-9717-53daca1c9f51",
"phoneServiceUUID": "3e560df5-3792-4206-960d-f53792020693",
"voxletInstanceUUID": "c5e8e1f6-50c5-48c0-a8e1-f650c5a8c08f",
"state": "confirmed",
"onHold": true,
"stt": {
"local": true,
"remote": true
},
"localNumber": "8f1fa31a-2389-4412-9fa3-1a23892412ea",
"localDisplayName": "Voxtop Desktop",
"remoteNumber": "0203XXXXXXX",
"remoteDisplayName": "Max",
"data": {
"targetNumber": "07XXXXXXXX",
"statusCode": 202
}
}
Properties
| Property | Type | Required | Description |
|---|---|---|---|
eventId |
string | Yes | Unique identifier for this event message. |
createdAt |
string | Yes | Time the event occurred, formatted as an ISO 8601 UTC timestamp. |
eventType |
string | Yes | Name of the event. For this message, the value is phone.call.blindTransfer.succeeded. |
direction |
string | Yes | Direction of the call. Observed value is incoming. |
callRef |
string | Yes | Unique reference for the call. This value can be used to correlate events for the same call. |
connectionId |
string | Yes | Unique identifier for the phone connection. |
deviceRegistrationUUID |
string | Yes | Unique identifier for the registered phone device. |
virtualDeviceRegistrationUUID |
string | Yes | Unique identifier for the virtual device registration associated with the call. |
phoneServiceUUID |
string | Yes | Unique identifier for the phone service. |
voxletInstanceUUID |
string | Yes | Unique identifier for the Voxlet instance. |
state |
string | Yes | Current call state at the time the blind transfer succeeds. Observed value is confirmed. |
onHold |
boolean | Yes | Indicates whether the call is currently on hold. For this event, the value is true. |
stt |
object | Yes | Speech-to-text status for the local and remote parties. |
localNumber |
string | Yes | Number or identifier for the local party. |
localDisplayName |
string | Yes | Display name for the local party. |
remoteNumber |
string | Yes | Number or identifier for the remote party. |
remoteDisplayName |
string/null | Yes | Display name for the remote party, or null when unavailable. |
data |
object | Yes | Additional blind transfer result information. |
stt object
| Property | Type | Required | Description |
|---|---|---|---|
stt.local |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the local party. |
stt.remote |
boolean | Yes | Indicates whether speech-to-text is enabled or active for the remote party. |
data object
| Property | Type | Required | Description |
|---|---|---|---|
data.targetNumber |
string | Yes | Number that the call was transferred to. |
data.statusCode |
number | Yes | Status code returned for the blind transfer request. Example value is 202. |
phone.call.blindTransfer.failed
Emitted when a blind transfer has failed.