Skip to the content
Menu: Events

Events

The event log.

GET/v1/events/{id}

Get an event

getEventevents:readread: 600/min per keySince 2026-10-01

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

  • idstringrequired

    Event 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
  • idstringrequired

    evt_…: the webhook envelope's id, the same on every delivery.

    pattern `^evt_.*`

  • typestringrequired
  • apiVersion"2026-07-08" | "2026-10-01"

    From 2026-10-01: the contract data is written in.

  • organizationIdstring

    From 2026-10-01.

    pattern `^org_.*`

  • createdAtstring (date-time)required

    ISO 8601 UTC timestamp.

  • datamap of anyrequired

    Exactly what a webhook with this key's rights receives (the event type's data schema; see GET /v1/event-types).

  • aiGeneratedtrue

    Present, and true, when data carries 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"
Example answer
Response
{
  "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"
}
GET/v1/event-types

The event catalogue

listEventTypesAny keyread: 600/min per keySince 2026-10-01

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
  • typestringrequired
  • descriptionstringrequired
  • since"2026-07-08" | "2026-10-01"required

    The contract it appeared in.

  • explicitOnlybooleanrequired

    Never part of "*": a webhook receives it only by naming it.

  • requiresConversationbooleanrequired

    Only for a webhook with includeConversation.

  • fieldsobjectrequired

    data'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[]required
    • contactstring[]required
    • resultstring[]required
    • conversationstring[]required
  • dataSchemamap of anyrequired

    data'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"
Example answer
Response
{
  "data": [
    {
      "type": "…",
      "description": "…",
      "since": "2026-07-08",
      "explicitOnly": true,
      "requiresConversation": true,
      "fields": {
        "structure": [
          "…"
        ],
        "contact": [
          "…"
        ],
        "result": [
          "…"
        ],
        "conversation": [
          "…"
        ]
      }
    }
  ],
  "error": null,
  "requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}
GET/v1/events

The event log

listEventsevents:readsearch: 120/min per keySince 2026-10-01

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

  • limitinteger

    Page size, 1-200 (default 50).

  • cursorstring

    The nextCursor of the previous page.

  • typestring

    One or more event types, comma-separated.

  • afterstring

    Only events after this one (for syncing: use with order=asc).

  • fromstring

    Events at or after this moment.

  • tostring

    Events before this moment.

  • sessionIdstring

    Session id (sess_…).

  • subjectIdstring

    Subject 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
  • idstringrequired

    evt_…: the webhook envelope's id, the same on every delivery.

    pattern `^evt_.*`

  • typestringrequired
  • apiVersion"2026-07-08" | "2026-10-01"

    From 2026-10-01: the contract data is written in.

  • organizationIdstring

    From 2026-10-01.

    pattern `^org_.*`

  • createdAtstring (date-time)required

    ISO 8601 UTC timestamp.

  • datamap of anyrequired

    Exactly what a webhook with this key's rights receives (the event type's data schema; see GET /v1/event-types).

  • aiGeneratedtrue

    Present, and true, when data carries 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"
Example answer
Response
{
  "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
}