Session Events API
This documentation describes how to interact with the Apizee API to retrieve events that occur during video sessions ("video-assistance").
Introduction
Apizee sessions can include interactions such as OCR scans, chat messages, media captures, or survey completions. Until now, this data was not accessible externally.
With the new Session Events API, all meaningful in-session actions are exposed via:
a REST API attached to each ticket
a webhook that triggers on each new event
These capabilities enable IT systems to:
Monitor what happens during video sessions
Automate processes based on session content
Archive or analyze interaction data
Authentication and Permissions
Access to these endpoints requires:
A valid Bearer token
Proper role permissions to access ticket data
See Authentication for a step by step documentation.
Rate limiting applies to all event endpoints. See Rate Limits for more details.
Event Model
Each event in the ticket timeline follows a common structure plus event-specific attributes.
Event-specific payload attributes
Depending on the event type triggered, the webhook payload will contain specific attributes:
consent.accepted
ticket.sessionStarted
geo.ansAllowed
"geoloc":{
"lat": 48.650032799999998,
"lng": -3.3655395000000001
}
geo.ansDisallowed
ticket.approved
"agent": {
"email": "[email protected]",
"phone": "+3316565454",
"firstname": "John",
"lastname": "Doe"
},
ticket.new
"agent": {
"email": "[email protected]",
"phone": "+3316565454",
"firstname": "John",
"lastname": "Doe"
},
ticket.assigned
"agent": {
"email": "[email protected]",
"phone": "+3316565454",
"firstname": "John",
"lastname": "Doe"
},
ticket.completed
"agent": {
"email": "[email protected]",
"phone": "+3316565454",
"firstname": "John",
"lastname": "Doe"
},
ticket.cancelled
"agent": {
"email": "[email protected]",
"phone": "+3316565454",
"firstname": "John",
"lastname": "Doe"
},
ticket.closed
"agent": {
"email": "[email protected]",
"phone": "+3316565454",
"firstname": "John",
"lastname": "Doe"
},
mediaDevice.allowed
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
mediaDevice.disallowed
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
mediaDevice.cameraAllowed
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
mediaDevice.cameraDisallowed
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
mediaDevice.micAllowed
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
mediaDevice.micDisallowed
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
session.established
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
ticket.priorityChanged
"agent": {
"email": "[email protected]",
"phone": "",
"firstname": "François",
"lastname": "Le Goff"
},
"oldPriority": 1,
"newPriority": 0
ticket.invitationSent
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
ticket.invitationResent
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
ticket.invitationAccepted
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
ticket.invitationDeclined
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
ticket.invitationExpired
ticket.invitationClicked
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
ticket.invitationNotclicked
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
session.agentContacted
"agent": {
"email": "[email protected]",
"phone": "+3316565454",
"firstname": "John",
"lastname": "Doe"
},
media.pictureTaken
“mediaId”: 342432
media.pictureSent
“mediaId”: 342432
survey.answered
"requestor": {
"email": "[email protected]",
"phone": "",
"firstname": "",
"lastname": "contact Flegoff"
},
"surveyAnswer": {
"questions" : [
{"id":12, //SurveyQuestionAnswer id
"label": {"fr":"Première question ?","en":"Question one?"},
"answer": "Not satisfied" //Not satisfied, Satisfied, Very satisfied
},
{"id":14,
"label": {"fr":"Deuxième question ?","en":"Question two?"},
"answer": "Satisfied" //Not satisfied, Satisfied, Very satisfied
}
],
"feedback": "Ceci est un feedback"
}
session.agentLeft
"agent": {
"email": "[email protected]",
"phone": "+3316565454",
"firstname": "John",
"lastname": "Doe"
},
session.userLeft
"requestor": {
"email": "[email protected]",
"phone": "0605040302",
"firstname": "Jane",
"lastname": "Doe"
},
media.OCRDone
"text": "Lorem\nipsum"
HTTP REST API to access to ticket's events
ID of the wanted ticket
GET /api/v3/tickets/{ticketId}/events HTTP/1.1
Host:
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"id": 56473,
"eventType": "ticket.invitationAccepted",
"timestamp": 1741621530,
"conversationId": 1345324,
"data": {
"requestor": {
"email": "[email protected]",
"phone": "+3316565454",
"firstname": "Jane",
"lastname": "Doe"
},
"oldPriority": 1,
"newPriority": 0
}
},
{
"id": 56474,
"eventType": "ticket.priorityChanged",
"timestamp": 1741621543,
"conversationId": 1345324,
"data": {
"agent": {
"email": "[email protected]",
"phone": "",
"firstname": "John",
"lastname": "Doe"
},
"oldPriority": 1,
"newPriority": 0
}
},
{
"id": 56475,
"eventType": "media.pictureTaken",
"timestamp": 1741621550,
"conversationId": 1345324,
"data": {
"mediaId": 342432
}
}
]
Listen to webhook callbacks
The conversationevent.create
webhook notifies your system in real time whenever a new event occurs during a video session linked to a support ticket. It enables your backend to react immediately to user interactions such as media capture, OCR scans, or survey responses.
How It Works
Once configured, the webhook is triggered for each new event in a ticket's timeline. Your endpoint receives a POST
request with a JSON payload describing the event.
Example Payload
{
"event": "create",
"time": 1749581447,
"object": "conversationevent",
"objectId": 1266,
"props": {
"eventType": "media.OCRDone", // <-- common payload attribute
"eventCode": 41, // <-- common payload attribute
"conversationId": 548, // <-- common payload attribute
"ticketId": 361, // <-- common payload attribute
"text": "text captured by OCR" // <-- event-specific attribute
}
}
Payload Fields
Last updated