Events
The event log.
/v1/events/{id}Get an event
One event as a webhook with this key's rights receives it. Each kind of event also needs the scope that reads its records (see GET /events); otherwise it is 404. ?includeConversation=true needs transcripts:read.
Path parameters
idstringrequiredEvent id (
evt_…); the id without its prefix is accepted too.
Query parameters
includeConversation"true" | "false"Include conversation fields where Zentiq's privacy rules allow them, as a webhook with includeConversation would get them. Needs
transcripts:read.
Returns
200 The event. data is Event.
Fields of data
idstringrequiredevt_…: the webhook envelope'sid, the same on every delivery.pattern `^evt_.*`
typestringrequiredapiVersion"2026-07-08" | "2026-10-01"From 2026-10-01: the contract
datais written in.organizationIdstringFrom 2026-10-01.
pattern `^org_.*`
createdAtstring (date-time)requiredISO 8601 UTC timestamp.
datamap of anyrequiredExactly what a webhook with this key's rights receives (the event type's data schema; see GET /v1/event-types).
aiGeneratedtruePresent, and true, when
datacarries words an avatar wrote: a summary, a report or an avatar's turn (EU AI Act Article 50(2)). Every contract.
Errors
invalid_requestunauthorizedforbiddenupgrade_requirednot_foundrate_limitedserver_error
Request
curl "https://app.zentiqai.com/v1/events/evt_123" \
-H "Authorization: Bearer $ZENTIQ_API_KEY"import { Zentiq } from "@zentiq/node";
const zentiq = new Zentiq({ apiKey: process.env.ZENTIQ_API_KEY });
const result = await zentiq.getEvent("evt_123");import os
from zentiq import Zentiq
zentiq = Zentiq(api_key=os.environ["ZENTIQ_API_KEY"])
result = zentiq.get_event("evt_123")Example answer
{
"data": {
"id": "evt_cmfq2b7x10000abcd1234",
"type": "…",
"apiVersion": "2026-07-08",
"organizationId": "org_cmfq2b7x10000abcd1234",
"createdAt": "2026-09-25T12:00:00.000Z",
"data": "…"
},
"error": null,
"requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}/v1/event-typesThe event catalogue
Every event type a webhook can receive: what it says, its fields by class and its data's JSON Schema. Safety flags are never sent.
Returns
200 The catalogue. data is a list of EventType.
Fields of data
typestringrequireddescriptionstringrequiredsince"2026-07-08" | "2026-10-01"requiredThe contract it appeared in.
explicitOnlybooleanrequiredNever part of "*": a webhook receives it only by naming it.
requiresConversationbooleanrequiredOnly for a webhook with includeConversation.
fieldsobjectrequireddata's fields by class (a.b,[]a list's items): contact only on leads, bookings and hand-offs; result only for released results; conversation only with includeConversation, where allowed.structurestring[]requiredcontactstring[]requiredresultstring[]requiredconversationstring[]required
dataSchemamap of anyrequireddata's JSON Schema in the current contract.
Errors
invalid_requestunauthorizedforbiddenupgrade_requiredrate_limitedserver_error
Request
curl "https://app.zentiqai.com/v1/event-types" \
-H "Authorization: Bearer $ZENTIQ_API_KEY"import { Zentiq } from "@zentiq/node";
const zentiq = new Zentiq({ apiKey: process.env.ZENTIQ_API_KEY });
const result = await zentiq.listEventTypes();import os
from zentiq import Zentiq
zentiq = Zentiq(api_key=os.environ["ZENTIQ_API_KEY"])
result = zentiq.list_event_types()Example answer
{
"data": [
{
"type": "…",
"description": "…",
"since": "2026-07-08",
"explicitOnly": true,
"requiresConversation": true,
"fields": {
"structure": [
"…"
],
"contact": [
"…"
],
"result": [
"…"
],
"conversation": [
"…"
]
}
}
],
"error": null,
"requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}/v1/eventsThe event log
Every event offered to webhooks, as a webhook with this key's rights receives it (the same id and data): for reconciling after an outage and for syncing (after and order=asc). Each kind of event is listed only for a key that also holds the scope reading its records: sessions, practice, sign-ins and ratings sessions:read; transcript.final and session.transcript_ready transcripts:read; reports, scores, reviews, certificates and completions results:read; assigned work assignments:read; candidate.* candidates:read; leads, bookings, hand-offs, forgotten details and knowledge gaps inbox:read (with the visitor's contact details); members, units and consent people:read; portals, subjects and jobs portals:read; the widget widgets:read; switches settings:read; knowledge documents knowledge:read; voices voices:read; usage usage:read; webhook tests webhooks:manage; connected systems connections:write. Conversation fields only with ?includeConversation=true, which needs transcripts:read, and only where the rules allow them. An event this key's webhooks would never receive is left out, so a page can hold fewer than limit and still have a nextCursor.
Query parameters
limitintegerPage size, 1-200 (default 50).
cursorstringThe
nextCursorof the previous page.typestringOne or more event types, comma-separated.
afterstringOnly events after this one (for syncing: use with order=asc).
fromstringEvents at or after this moment.
tostringEvents before this moment.
sessionIdstringSession id (
sess_…).subjectIdstringSubject id (
sub_…).order"asc" | "desc"desc (newest first, the default) or asc (for syncing).
includeConversation"true" | "false"Include conversation fields where Zentiq's privacy rules allow them, as a webhook with includeConversation would get them. Needs
transcripts:read.
Returns
200 A page of events. A page: data is a list of Event, and nextCursor fetches the next page.
Fields of data
idstringrequiredevt_…: the webhook envelope'sid, the same on every delivery.pattern `^evt_.*`
typestringrequiredapiVersion"2026-07-08" | "2026-10-01"From 2026-10-01: the contract
datais written in.organizationIdstringFrom 2026-10-01.
pattern `^org_.*`
createdAtstring (date-time)requiredISO 8601 UTC timestamp.
datamap of anyrequiredExactly what a webhook with this key's rights receives (the event type's data schema; see GET /v1/event-types).
aiGeneratedtruePresent, and true, when
datacarries words an avatar wrote: a summary, a report or an avatar's turn (EU AI Act Article 50(2)). Every contract.
Errors
invalid_requestunauthorizedforbiddenupgrade_requiredrate_limitedserver_error
Request
curl "https://app.zentiqai.com/v1/events?limit=20" \
-H "Authorization: Bearer $ZENTIQ_API_KEY"import { Zentiq } from "@zentiq/node";
const zentiq = new Zentiq({ apiKey: process.env.ZENTIQ_API_KEY });
const page = await zentiq.listEvents({
limit: 20,
});import os
from zentiq import Zentiq
zentiq = Zentiq(api_key=os.environ["ZENTIQ_API_KEY"])
page = zentiq.list_events(limit=20)Example answer
{
"data": [
{
"id": "evt_cmfq2b7x10000abcd1234",
"type": "…",
"apiVersion": "2026-07-08",
"organizationId": "org_cmfq2b7x10000abcd1234",
"createdAt": "2026-09-25T12:00:00.000Z",
"data": "…"
}
],
"error": null,
"requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d",
"nextCursor": null
}