conversations

List tickets with person data attached.

get/api/projects/{project_id}/conversations/tickets/

Request

  • Base URL: https://us.posthog.com
  • URL: https://us.posthog.com/api/projects/{project_id}/conversations/tickets/
  • Auth: HTTP bearer

Path parameters

project_idstring required

Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.

Query parameters

ai_triage_resultstring

Filter by AI triage outcome. Accepts a single value or a comma-separated list. Valid values: persisted, suggested, escalated_with_findings, escalated_with_best, escalated_no_reply, skipped_unactionable, blocked_unsafe, blocked_unsafe_reply, clarified, suggested_clarification, in_progress.

assigneestring

Filter by assignee. Accepts a single value or a comma-separated list (matches any, max 100 entries). Each entry is unassigned (no assignee), me (the requesting user), user:<user_id>, or role:<role_uuid>, e.g. assignee=unassigned,user:123.

channel_detail'github_issue' | 'slack_bot_mention' | 'slack_channel_message' | 'slack_emoji_reaction' | 'teams_bot_mention' | 'teams_channel_message' | 'widget_api' | 'widget_embedded'

Filter by the channel sub-type (e.g. widget_embedded, slack_bot_mention).

channel_source'email' | 'github' | 'slack' | 'teams' | 'widget'

Filter by the channel the ticket originated from.

date_fromstring

Only include tickets updated on or after this date. Accepts absolute dates (2026-01-01) or relative ones (-7d, -1mStart). Pass all to disable the filter.

date_tostring

Only include tickets updated on or before this date. Same format as date_from.

distinct_idsstring

Comma-separated list of person distinct_ids to filter by (max 100).

emailsstring

Comma-separated list of email addresses to filter by, matched case-insensitively against email_from (max 100). When combined with distinct_ids, tickets matching either the distinct_ids or the emails are returned (OR).

limitinteger

Number of results to return per page.

offsetinteger

The initial index from which to return the results.

order_by'-created_at' | '-sla_due_at' | '-ticket_number' | '-updated_at' | 'created_at' | 'sla_due_at' | 'ticket_number' | 'updated_at'

Sort order. Prefix with - for descending. Defaults to -updated_at.

prioritystring

Filter by priority. Accepts a single value or a comma-separated list (e.g. medium,high). Valid values: low, medium, high, critical.

searchstring

Free-text search. A numeric value (optionally prefixed with #) matches a ticket number exactly; otherwise matches against the customer's name or email, the email subject, or message content (case-insensitive, partial match).

sla'at-risk' | 'breached' | 'on-track'

Filter by SLA state. breached = past sla_due_at, at-risk = due within the next hour, on-track = more than an hour remaining.

snoozedboolean

Filter by snooze state: true returns only snoozed tickets, false only non-snoozed.

statusstring

Filter by status. Accepts a single value or a comma-separated list (e.g. new,open,pending). Valid values: new, open, pending, on_hold, resolved.

tagsstring

JSON-encoded array of tag names; returns tickets with ANY of them (OR), e.g. ["billing","urgent"].

tags_allstring

JSON-encoded array of tag names; returns tickets that have ALL of them (AND), e.g. ["billing","urgent"].

tags_excludestring

JSON-encoded array of tag names; returns tickets that have NONE of them (NOT), e.g. ["escalated"].

viewstring

Apply a saved ticket view's filters by its short_id (list views via the conversations/views endpoint). Any filter param passed explicitly overrides the view's saved value for that dimension. Returns 400 if no view matches.

Response

countinteger required
nextstring uri nullable
previousstring uri nullable

Example response

{
  "count": 123,
  "next": "http://api.example.org/accounts/?offset=400&limit=100",
  "previous": "http://api.example.org/accounts/?offset=200&limit=100"
}

Changes

No recorded changes to this operation across all 1 revision of this API.