Skip to the content
Menu: Inbox

Inbox

Website leads, bookings and hand-offs.

GET/v1/inbox/items/{id}

Get an inbox item

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

One lead, booking request or hand-off with the visitor's contact details. The visitor's own words (need, budget, timeline, the summary, a hand-off's reason, a lead's answers) come only to a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation.

Path parameters

  • idstringrequired

    Inbox item id (inb_…); the id without its prefix is accepted too.

Returns

200 The item. data is InboxItem.

Fields of data
  • idstringrequired

    inb_…: the visitor's conversation (webhooks' inboxItemId).

    pattern `^inb_.*`

  • sessionIdstringrequired

    Session id (sess_…).

    pattern `^sess_.*`

  • portalIdstring | nullrequired

    The portal the visitor came through, when known.

  • subjectIdstring | nullrequired
  • subjectstring | nullrequired

    The subject's name when the request came in.

  • referencestring | nullrequired

    The reference the visitor was given.

  • receivedAtstring (date-time)required

    When the conversation's first request came in.

  • kinds("lead" | "booking" | "handoff")[]required
  • primary"lead" | "booking" | "handoff"required

    What the item is mainly about: a booking, else a lead, else a hand-off.

  • status"new" | "contacted" | "confirmed" | "closed"required
  • statusAtstring (date-time) | nullrequired
  • statusByobject | nullrequired

    Who moved it last: a member, or an API key (yours included, so a sync can ignore its own changes).

    • type"user" | "api_key"required
    • idstringrequired

      usr_… or key_….

  • notestring | nullrequired

    The team's note with the latest status.

  • overduebooleanrequired
  • dueAtstring (date-time) | nullrequired

    When the visitor was promised an answer by.

  • promisestring | nullrequired

    What the visitor was told about when they would hear back.

  • contactobject | nullrequired

    The details the visitor gave, with their consent, for this request; payment and identity numbers are masked. Never an under-18's.

    • namestring | nullrequired
    • emailstring | nullrequired
    • phonestring | nullrequired
    • companystring | nullrequired
    • rolestring | nullrequired
    • locationstring | nullrequired
    • preferredTimestring | nullrequired
    • referencestring | nullrequired
  • teamstring | nullrequired

    The team it went to.

  • leadobject | nullrequired
    • bandstring | nullrequired
    • pointsnumber | nullrequired
  • bookingobject | nullrequired

    A booking request: nothing is in a calendar until someone confirms it with the visitor.

    • servicestring | nullrequired
    • whenstring | nullrequired
  • consentobject | nullrequired

    What the visitor agreed to: to be contacted about this request, never marketing.

    • purposestring | nullrequired
    • marketingfalserequired
    • versioninteger | nullrequired
    • atstring (date-time) | nullrequired
    • givenboolean | nullrequired
  • verifiedboolean | nullrequired

    false: some of the request was read only from the visitor's page (it could be made up); null: recorded before Zentiq checked.

  • removedFieldsstring[]required

    Details the visitor had removed; delete them from your records too.

  • updatedAtstring (date-time)required

    ISO 8601 UTC timestamp.

  • needstring | null

    What they need, in their words. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • budgetstring | null

    Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • timelinestring | null

    Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • summarystring | null

    The conversation's summary. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • reasonstring | null

    Why they asked for a person. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • answersmap of string | null

    A lead's answers to the qualification questions. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

Errors

invalid_requestunauthorizedforbiddenupgrade_requirednot_foundrate_limitedserver_error

Request

curl "https://app.zentiqai.com/v1/inbox/items/inb_123" \
  -H "Authorization: Bearer $ZENTIQ_API_KEY"
Example answer
Response
{
  "data": {
    "id": "inb_cmfq2b7x10000abcd1234",
    "sessionId": "sess_cmfq2b7x10000abcd1234",
    "portalId": "portal_cmfq2b7x10000abcd1234",
    "subjectId": "sub_cmfq2b7x10000abcd1234",
    "subject": "…",
    "reference": "…"
  },
  "error": null,
  "requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}
PATCH/v1/inbox/items/{id}

Move an inbox item on

updateInboxIteminbox:writewrite: 120/min per keySince 2026-10-01

Sets its status (new, contacted, confirmed, closed; any to any) with an optional note. With expectedStatus, nothing changes when someone moved it meanwhile (409). Records lead.updated (or booking.updated for a booking) with by = this key, so your sync can ignore its own changes. The same status again without a note changes nothing. The visitor's contact details, booking and consent come back only to a key that also holds inbox:read (else null).

Path parameters

  • idstringrequired

    Inbox item id (inb_…); the id without its prefix is accepted too.

Body

  • status"new" | "contacted" | "confirmed" | "closed"required
  • notestring

    The team's note with the new status (at most 500 characters).

    at most 500 characters

  • expectedStatus"new" | "contacted" | "confirmed" | "closed"

    The status you last saw: when it has changed since, nothing changes (409 conflict, details.currentStatus).

Returns

200 The item as it is now. data is InboxItem.

Fields of data
  • idstringrequired

    inb_…: the visitor's conversation (webhooks' inboxItemId).

    pattern `^inb_.*`

  • sessionIdstringrequired

    Session id (sess_…).

    pattern `^sess_.*`

  • portalIdstring | nullrequired

    The portal the visitor came through, when known.

  • subjectIdstring | nullrequired
  • subjectstring | nullrequired

    The subject's name when the request came in.

  • referencestring | nullrequired

    The reference the visitor was given.

  • receivedAtstring (date-time)required

    When the conversation's first request came in.

  • kinds("lead" | "booking" | "handoff")[]required
  • primary"lead" | "booking" | "handoff"required

    What the item is mainly about: a booking, else a lead, else a hand-off.

  • status"new" | "contacted" | "confirmed" | "closed"required
  • statusAtstring (date-time) | nullrequired
  • statusByobject | nullrequired

    Who moved it last: a member, or an API key (yours included, so a sync can ignore its own changes).

    • type"user" | "api_key"required
    • idstringrequired

      usr_… or key_….

  • notestring | nullrequired

    The team's note with the latest status.

  • overduebooleanrequired
  • dueAtstring (date-time) | nullrequired

    When the visitor was promised an answer by.

  • promisestring | nullrequired

    What the visitor was told about when they would hear back.

  • contactobject | nullrequired

    The details the visitor gave, with their consent, for this request; payment and identity numbers are masked. Never an under-18's.

    • namestring | nullrequired
    • emailstring | nullrequired
    • phonestring | nullrequired
    • companystring | nullrequired
    • rolestring | nullrequired
    • locationstring | nullrequired
    • preferredTimestring | nullrequired
    • referencestring | nullrequired
  • teamstring | nullrequired

    The team it went to.

  • leadobject | nullrequired
    • bandstring | nullrequired
    • pointsnumber | nullrequired
  • bookingobject | nullrequired

    A booking request: nothing is in a calendar until someone confirms it with the visitor.

    • servicestring | nullrequired
    • whenstring | nullrequired
  • consentobject | nullrequired

    What the visitor agreed to: to be contacted about this request, never marketing.

    • purposestring | nullrequired
    • marketingfalserequired
    • versioninteger | nullrequired
    • atstring (date-time) | nullrequired
    • givenboolean | nullrequired
  • verifiedboolean | nullrequired

    false: some of the request was read only from the visitor's page (it could be made up); null: recorded before Zentiq checked.

  • removedFieldsstring[]required

    Details the visitor had removed; delete them from your records too.

  • updatedAtstring (date-time)required

    ISO 8601 UTC timestamp.

  • needstring | null

    What they need, in their words. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • budgetstring | null

    Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • timelinestring | null

    Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • summarystring | null

    The conversation's summary. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • reasonstring | null

    Why they asked for a person. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • answersmap of string | null

    A lead's answers to the qualification questions. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

Errors

invalid_requestunauthorizedforbiddenupgrade_requirednot_foundconflictrate_limitedserver_error

Events

lead.updatedbooking.updated

Request

curl -X PATCH "https://app.zentiqai.com/v1/inbox/items/inb_123" \
  -H "Authorization: Bearer $ZENTIQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "new"
}'
Example answer
Response
{
  "data": {
    "id": "inb_cmfq2b7x10000abcd1234",
    "sessionId": "sess_cmfq2b7x10000abcd1234",
    "portalId": "portal_cmfq2b7x10000abcd1234",
    "subjectId": "sub_cmfq2b7x10000abcd1234",
    "subject": "…",
    "reference": "…"
  },
  "error": null,
  "requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}
GET/v1/inbox/items

List the inbox

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

Website visitors' leads, booking requests and hand-offs, one item per conversation, newest first (or order=asc), placed by the conversation's first request. For syncing a CRM: updatedAfter with order=asc, then follow nextCursor. A filtered page may hold fewer than limit items and still have a nextCursor. The visitor's own words (need, budget, timeline, the summary, a hand-off's reason, a lead's answers) come only to a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation.

Query parameters

  • limitinteger

    Page size, 1-200 (default 50).

  • cursorstring

    The nextCursor of the previous page.

  • portalIdstring

    Only the requests behind this portal's subjects.

  • subjectIdstring

    Subject id (sub_…).

  • personaIdstring

    Only the requests behind this persona's portals (its website widget's).

  • statusstring

    new, contacted, confirmed or closed (comma-separated).

  • kindstring

    lead, booking or handoff (comma-separated): items with any of them.

  • overdue"true" | "false"

    true: still new past what the visitor was promised (or 24 hours).

  • createdAfterstring

    Items whose first request came in at or after this moment.

  • createdBeforestring

    ISO 8601 date and time.

  • updatedAfterstring

    Items with anything new since (a request, a status change, a detail removed): for syncing, with order=asc.

  • order"asc" | "desc"

    desc (newest first, the default) or asc, by when the item's first request came in.

Returns

200 A page of items. A page: data is a list of InboxItem, and nextCursor fetches the next page.

Fields of data
  • idstringrequired

    inb_…: the visitor's conversation (webhooks' inboxItemId).

    pattern `^inb_.*`

  • sessionIdstringrequired

    Session id (sess_…).

    pattern `^sess_.*`

  • portalIdstring | nullrequired

    The portal the visitor came through, when known.

  • subjectIdstring | nullrequired
  • subjectstring | nullrequired

    The subject's name when the request came in.

  • referencestring | nullrequired

    The reference the visitor was given.

  • receivedAtstring (date-time)required

    When the conversation's first request came in.

  • kinds("lead" | "booking" | "handoff")[]required
  • primary"lead" | "booking" | "handoff"required

    What the item is mainly about: a booking, else a lead, else a hand-off.

  • status"new" | "contacted" | "confirmed" | "closed"required
  • statusAtstring (date-time) | nullrequired
  • statusByobject | nullrequired

    Who moved it last: a member, or an API key (yours included, so a sync can ignore its own changes).

    • type"user" | "api_key"required
    • idstringrequired

      usr_… or key_….

  • notestring | nullrequired

    The team's note with the latest status.

  • overduebooleanrequired
  • dueAtstring (date-time) | nullrequired

    When the visitor was promised an answer by.

  • promisestring | nullrequired

    What the visitor was told about when they would hear back.

  • contactobject | nullrequired

    The details the visitor gave, with their consent, for this request; payment and identity numbers are masked. Never an under-18's.

    • namestring | nullrequired
    • emailstring | nullrequired
    • phonestring | nullrequired
    • companystring | nullrequired
    • rolestring | nullrequired
    • locationstring | nullrequired
    • preferredTimestring | nullrequired
    • referencestring | nullrequired
  • teamstring | nullrequired

    The team it went to.

  • leadobject | nullrequired
    • bandstring | nullrequired
    • pointsnumber | nullrequired
  • bookingobject | nullrequired

    A booking request: nothing is in a calendar until someone confirms it with the visitor.

    • servicestring | nullrequired
    • whenstring | nullrequired
  • consentobject | nullrequired

    What the visitor agreed to: to be contacted about this request, never marketing.

    • purposestring | nullrequired
    • marketingfalserequired
    • versioninteger | nullrequired
    • atstring (date-time) | nullrequired
    • givenboolean | nullrequired
  • verifiedboolean | nullrequired

    false: some of the request was read only from the visitor's page (it could be made up); null: recorded before Zentiq checked.

  • removedFieldsstring[]required

    Details the visitor had removed; delete them from your records too.

  • updatedAtstring (date-time)required

    ISO 8601 UTC timestamp.

  • needstring | null

    What they need, in their words. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • budgetstring | null

    Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • timelinestring | null

    Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • summarystring | null

    The conversation's summary. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • reasonstring | null

    Why they asked for a person. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

  • answersmap of string | null

    A lead's answers to the qualification questions. Only for a key holding transcripts:read, and never from an under-18's, a candidate's or a safety-flagged conversation (absent otherwise).

Errors

invalid_requestunauthorizedforbiddenupgrade_requiredrate_limitedserver_error

Request

curl "https://app.zentiqai.com/v1/inbox/items?limit=20" \
  -H "Authorization: Bearer $ZENTIQ_API_KEY"
Example answer
Response
{
  "data": [
    {
      "id": "inb_cmfq2b7x10000abcd1234",
      "sessionId": "sess_cmfq2b7x10000abcd1234",
      "portalId": "portal_cmfq2b7x10000abcd1234",
      "subjectId": "sub_cmfq2b7x10000abcd1234",
      "subject": "…",
      "reference": "…"
    }
  ],
  "error": null,
  "requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d",
  "nextCursor": null
}