PostHog Conversations API

The conversations API from PostHog — 14 operation(s) for conversations.

Business capability
Customer Inquiry Management BC-430.10

Operations 13

GET /api/environments/{project_id}/conversations/views/ Conversations views list #
POST /api/environments/{project_id}/conversations/views/ Conversations views create #
GET /api/environments/{project_id}/conversations/views/{short_id}/ Conversations views retrieve #
DELETE /api/environments/{project_id}/conversations/views/{short_id}/ Conversations views destroy #
GET /api/projects/{project_id}/conversations/tickets/ Conversations tickets list #
POST /api/projects/{project_id}/conversations/tickets/ Conversations tickets create #
GET /api/projects/{project_id}/conversations/tickets/{id}/ Conversations tickets retrieve #
PUT /api/projects/{project_id}/conversations/tickets/{id}/ Conversations tickets update #
PATCH /api/projects/{project_id}/conversations/tickets/{id}/ Conversations tickets partial update #
DELETE /api/projects/{project_id}/conversations/tickets/{id}/ Conversations tickets destroy #
POST /api/projects/{project_id}/conversations/tickets/{id}/suggest_reply/ Conversations tickets suggest reply create #
POST /api/projects/{project_id}/conversations/tickets/bulk_update_tags/ Conversations tickets bulk update tags create #
GET /api/projects/{project_id}/conversations/tickets/unread_count/ Conversations tickets unread count retrieve #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/posthog-conversations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

posthog-conversations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: PostHog Conversations API
  version: 1.0.0
  description: ''
tags:
- name: Conversations
paths:
  /api/environments/{project_id}/conversations/views/:
    get:
      operationId: conversations_views_list
      parameters:
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      security:
      - PersonalAPIKeyAuth:
        - conversation:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedTicketViewList'
          description: ''
      x-explicit-tags:
      - conversations
      summary: Conversations views list
      x-summary-source: derived
    post:
      operationId: conversations_views_create
      parameters:
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TicketView'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TicketView'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TicketView'
        required: true
      security:
      - PersonalAPIKeyAuth:
        - conversation:write
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TicketView'
          description: ''
      x-explicit-tags:
      - conversations
      summary: Conversations views create
      x-summary-source: derived
  /api/environments/{project_id}/conversations/views/{short_id}/:
    get:
      operationId: conversations_views_retrieve
      parameters:
      - $ref: '#/components/parameters/ProjectIdPath'
      - in: path
        name: short_id
        schema:
          type: string
        required: true
      tags:
      - Conversations
      security:
      - PersonalAPIKeyAuth:
        - conversation:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TicketView'
          description: ''
      x-explicit-tags:
      - conversations
      summary: Conversations views retrieve
      x-summary-source: derived
    delete:
      operationId: conversations_views_destroy
      parameters:
      - $ref: '#/components/parameters/ProjectIdPath'
      - in: path
        name: short_id
        schema:
          type: string
        required: true
      tags:
      - Conversations
      security:
      - PersonalAPIKeyAuth:
        - conversation:write
      responses:
        '204':
          description: No response body
      x-explicit-tags:
      - conversations
      summary: Conversations views destroy
      x-summary-source: derived
  /api/projects/{project_id}/conversations/tickets/:
    get:
      operationId: conversations_tickets_list
      description: List tickets with person data attached.
      parameters:
      - in: query
        name: assignee
        schema:
          type: string
        description: Filter by assignee. Use `unassigned` for tickets with no assignee, `user:<user_id>` for a specific user, or `role:<role_uuid>` for a role.
      - in: query
        name: channel_detail
        schema:
          type: string
          enum:
          - slack_bot_mention
          - slack_channel_message
          - slack_emoji_reaction
          - teams_bot_mention
          - teams_channel_message
          - widget_api
          - widget_embedded
        description: Filter by the channel sub-type (e.g. `widget_embedded`, `slack_bot_mention`).
      - in: query
        name: channel_source
        schema:
          type: string
          enum:
          - email
          - slack
          - teams
          - widget
        description: Filter by the channel the ticket originated from.
      - in: query
        name: date_from
        schema:
          type: string
        description: 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.
      - in: query
        name: date_to
        schema:
          type: string
        description: Only include tickets updated on or before this date. Same format as `date_from`.
      - in: query
        name: distinct_ids
        schema:
          type: string
        description: Comma-separated list of person `distinct_id`s to filter by (max 100).
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - in: query
        name: order_by
        schema:
          type: string
          enum:
          - -created_at
          - -sla_due_at
          - -ticket_number
          - -updated_at
          - created_at
          - sla_due_at
          - ticket_number
          - updated_at
        description: Sort order. Prefix with `-` for descending. Defaults to `-updated_at`.
      - in: query
        name: priority
        schema:
          type: string
        description: 'Filter by priority. Accepts a single value or a comma-separated list (e.g. `medium,high`). Valid values: `low`, `medium`, `high`.'
      - $ref: '#/components/parameters/ProjectIdPath'
      - in: query
        name: search
        schema:
          type: string
        description: Free-text search. A numeric value matches a ticket number exactly; otherwise matches against the customer's name or email (case-insensitive, partial match).
      - in: query
        name: sla
        schema:
          type: string
          enum:
          - at-risk
          - breached
          - on-track
        description: Filter by SLA state. `breached` = past `sla_due_at`, `at-risk` = due within the next hour, `on-track` = more than an hour remaining.
      - in: query
        name: status
        schema:
          type: string
        description: '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`.'
      - in: query
        name: tags
        schema:
          type: string
        description: JSON-encoded array of tag names to filter by, e.g. `["billing","urgent"]`.
      tags:
      - Conversations
      security:
      - PersonalAPIKeyAuth:
        - ticket:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedTicketList'
          description: ''
      x-explicit-tags:
      - conversations
      summary: Conversations tickets list
      x-summary-source: derived
    post:
      operationId: conversations_tickets_create
      parameters:
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ticket'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Ticket'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Ticket'
      security:
      - PersonalAPIKeyAuth:
        - ticket:write
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
          description: ''
      x-explicit-tags:
      - conversations
      summary: Conversations tickets create
      x-summary-source: derived
  /api/projects/{project_id}/conversations/tickets/{id}/:
    get:
      operationId: conversations_tickets_retrieve
      description: Get single ticket and mark as read by team.
      parameters:
      - in: path
        name: id
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this ticket.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      security:
      - PersonalAPIKeyAuth:
        - ticket:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
          description: ''
      x-explicit-tags: []
      summary: Conversations tickets retrieve
      x-summary-source: derived
    put:
      operationId: conversations_tickets_update
      description: Handle ticket updates including assignee changes.
      parameters:
      - in: path
        name: id
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this ticket.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ticket'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Ticket'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Ticket'
      security:
      - PersonalAPIKeyAuth:
        - ticket:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
          description: ''
      x-explicit-tags: []
      summary: Conversations tickets update
      x-summary-source: derived
    patch:
      operationId: conversations_tickets_partial_update
      parameters:
      - in: path
        name: id
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this ticket.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedTicket'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedTicket'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedTicket'
      security:
      - PersonalAPIKeyAuth:
        - ticket:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
          description: ''
      x-explicit-tags: []
      summary: Conversations tickets partial update
      x-summary-source: derived
    delete:
      operationId: conversations_tickets_destroy
      parameters:
      - in: path
        name: id
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this ticket.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      security:
      - PersonalAPIKeyAuth:
        - ticket:write
      responses:
        '204':
          description: No response body
      x-explicit-tags: []
      summary: Conversations tickets destroy
      x-summary-source: derived
  /api/projects/{project_id}/conversations/tickets/{id}/suggest_reply/:
    post:
      operationId: conversations_tickets_suggest_reply_create
      parameters:
      - in: path
        name: id
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this ticket.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestReplyResponse'
          description: ''
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestReplyError'
          description: ''
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestReplyError'
          description: ''
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestReplyError'
          description: ''
      x-explicit-tags: []
      summary: Conversations tickets suggest reply create
      x-summary-source: derived
  /api/projects/{project_id}/conversations/tickets/bulk_update_tags/:
    post:
      operationId: conversations_tickets_bulk_update_tags_create
      description: 'Bulk update tags on multiple objects.


        Accepts:

        - {"ids": [...], "action": "add"|"remove"|"set", "tags": ["tag1", "tag2"]}


        Actions:

        - "add": Add tags to existing tags on each object

        - "remove": Remove specific tags from each object

        - "set": Replace all tags on each object with the provided list'
      parameters:
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkUpdateTagsRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BulkUpdateTagsRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BulkUpdateTagsRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUpdateTagsResponse'
          description: ''
      x-explicit-tags:
      - conversations
      summary: Conversations tickets bulk update tags create
      x-summary-source: derived
  /api/projects/{project_id}/conversations/tickets/unread_count/:
    get:
      operationId: conversations_tickets_unread_count_retrieve
      description: 'Get total unread ticket count for the team.


        Returns the sum of unread_team_count for all non-resolved tickets.

        Cached in Redis for 30 seconds, invalidated on changes.'
      parameters:
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - Conversations
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticket'
          description: ''
      x-explicit-tags:
      - conversations
      summary: Conversations tickets unread count retrieve
      x-summary-source: derived
components:
  schemas:
    ActionEnum:
      enum:
      - add
      - remove
      - set
      type: string
      description: '* `add` - add

        * `remove` - remove

        * `set` - set'
    BulkUpdateTagsError:
      type: object
      properties:
        id:
          type: integer
        reason:
          type: string
      required:
      - id
      - reason
    Ticket:
      type: object
      description: Serializer mixin that handles tags for objects.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        ticket_number:
          type: integer
          readOnly: true
        channel_source:
          allOf:
          - $ref: '#/components/schemas/ChannelSourceEnum'
          readOnly: true
        channel_detail:
          readOnly: true
          oneOf:
          - $ref: '#/components/schemas/ChannelDetailEnum'
          - $ref: '#/components/schemas/NullEnum'
        distinct_id:
          type: string
          readOnly: true
        status:
          allOf:
          - $ref: '#/components/schemas/TicketStatusEnum'
          description: 'Ticket status: new, open, pending, on_hold, or resolved


            * `new` - New

            * `open` - Open

            * `pending` - Pending

            * `on_hold` - On hold

            * `resolved` - Resolved'
        priority:
          description: 'Ticket priority: low, medium, or high. Null if unset.


            * `low` - Low

            * `medium` - Medium

            * `high` - High'
          oneOf:
          - $ref: '#/components/schemas/PriorityEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        assignee:
          allOf:
          - $ref: '#/components/schemas/TicketAssignment'
          readOnly: true
        anonymous_traits:
          description: Customer-provided traits such as name and email
        ai_resolved:
          type: boolean
        escalation_reason:
          type:
          - string
          - 'null'
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        message_count:
          type: integer
          readOnly: true
        last_message_at:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        last_message_text:
          type:
          - string
          - 'null'
          readOnly: true
        unread_team_count:
          type: integer
          readOnly: true
        unread_customer_count:
          type: integer
          readOnly: true
        session_id:
          type:
          - string
          - 'null'
          readOnly: true
        session_context:
          readOnly: true
        sla_due_at:
          type:
          - string
          - 'null'
          format: date-time
          description: SLA deadline set via workflows. Null means no SLA.
        snoozed_until:
          type:
          - string
          - 'null'
          format: date-time
        slack_channel_id:
          type:
          - string
          - 'null'
          readOnly: true
        slack_thread_ts:
          type:
          - string
          - 'null'
          readOnly: true
        slack_team_id:
          type:
          - string
          - 'null'
          readOnly: true
        email_subject:
          type:
          - string
          - 'null'
          readOnly: true
        email_from:
          type:
          - string
          - 'null'
          format: email
          readOnly: true
        email_to:
          type:
          - string
          - 'null'
          readOnly: true
        cc_participants:
          readOnly: true
        person:
          allOf:
          - $ref: '#/components/schemas/TicketPerson'
          readOnly: true
        tags:
          type: array
          items: {}
      required:
      - assignee
      - cc_participants
      - channel_detail
      - channel_source
      - created_at
      - distinct_id
      - email_from
      - email_subject
      - email_to
      - id
      - last_message_at
      - last_message_text
      - message_count
      - person
      - session_context
      - session_id
      - slack_channel_id
      - slack_team_id
      - slack_thread_ts
      - ticket_number
      - unread_customer_count
      - unread_team_count
      - updated_at
    PaginatedTicketViewList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=400&limit=100
        previous:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/TicketView'
    UserBasic:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        uuid:
          type: string
          format: uuid
          readOnly: true
        distinct_id:
          type:
          - string
          - 'null'
          maxLength: 200
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        is_email_verified:
          type:
          - boolean
          - 'null'
        hedgehog_config:
          type:
          - object
          - 'null'
          additionalProperties: true
          readOnly: true
        role_at_organization:
          oneOf:
          - $ref: '#/components/schemas/RoleAtOrganizationEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
      required:
      - email
      - hedgehog_config
      - id
      - uuid
    TicketStatusEnum:
      enum:
      - new
      - open
      - pending
      - on_hold
      - resolved
      type: string
      description: '* `new` - New

        * `open` - Open

        * `pending` - Pending

        * `on_hold` - On hold

        * `resolved` - Resolved'
    TicketPerson:
      type: object
      description: Minimal person serializer for embedding in ticket responses.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
        distinct_ids:
          type: array
          items:
            type: string
          readOnly: true
        properties:
          type: object
          additionalProperties: true
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        is_identified:
          type: boolean
          readOnly: true
      required:
      - created_at
      - distinct_ids
      - id
      - is_identified
      - name
      - properties
    ChannelDetailEnum:
      enum:
      - slack_channel_message
      - slack_bot_mention
      - slack_emoji_reaction
      - teams_channel_message
      - teams_bot_mention
      - widget_embedded
      - widget_api
      type: string
      description: '* `slack_channel_message` - Channel message

        * `slack_bot_mention` - Bot mention

        * `slack_emoji_reaction` - Emoji reaction

        * `teams_channel_message` - Teams channel message

        * `teams_bot_mention` - Teams bot mention

        * `widget_embedded` - Widget

        * `widget_api` - API'
    TicketAssignment:
      type: object
      description: Serializer for ticket assignment (user or role).
      properties:
        id:
          type:
          - string
          - 'null'
          readOnly: true
        type:
          type: string
          readOnly: true
        user:
          type:
          - object
          - 'null'
          additionalProperties:
            type: string
          readOnly: true
        role:
          type:
          - object
          - 'null'
          additionalProperties:
            type: string
          readOnly: true
      required:
      - id
      - role
      - type
      - user
    SuggestReplyResponse:
      type: object
      properties:
        suggestion:
          type: string
      required:
      - suggestion
    PaginatedTicketList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=400&limit=100
        previous:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/Ticket'
    NullEnum:
      enum:
      - null
    BulkUpdateTagsItem:
      type: object
      properties:
        id:
          type: integer
        tags:
          type: array
          items:
            type: string
      required:
      - id
      - tags
    SuggestReplyError:
      type: object
      properties:
        detail:
          type: string
        error_type:
          type: string
      required:
      - detail
    BulkUpdateTagsRequest:
      type: object
      properties:
        ids:
          type: array
          items:
            type: integer
          description: List of object IDs to update tags on.
          maxItems: 500
        action:
          allOf:
          - $ref: '#/components/schemas/ActionEnum'
          description: '''add'' merges with existing tags, ''remove'' deletes specific tags, ''set'' replaces all tags.


            * `add` - add

            * `remove` - remove

            * `set` - set'
        tags:
          type: array
          items:
            type: string
          description: Tag names to add, remove, or set.
      required:
      - action
      - ids
      - tags
    BlankEnum:
      enum:
      - ''
    BulkUpdateTagsResponse:
      type: object
      properties:
        updated:
          type: array
          items:
            $ref: '#/components/schemas/BulkUpdateTagsItem'
        skipped:
          type: array
          items:
            $ref: '#/components/schemas/BulkUpdateTagsError'
      required:
      - skipped
      - updated
    ChannelSourceEnum:
      enum:
      - widget
      - email
      - slack
      - teams
      type: string
      description: '* `widget` - Widget

        * `email` - Email

        * `slack` - Slack

        * `teams` - Microsoft Teams'
    PriorityEnum:
      enum:
      - low
      - medium
      - high
      type: string
      description: '* `low` - Low

        * `medium` - Medium

        * `high` - High'
    PatchedTicket:
      type: object
      description: Serializer mixin that handles tags for objects.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        ticket_number:
          type: integer
          readOnly: true
        channel_source:
          allOf:
          - $ref: '#/components/schemas/ChannelSourceEnum'
          readOnly: true
        channel_detail:
          readOnly: true
          oneOf:
          - $ref: '#/components/schemas/ChannelDetailEnum'
          - $ref: '#/components/schemas/NullEnum'
        distinct_id:
          type: string
          readOnly: true
        status:
          allOf:
          - $ref: '#/components/schemas/TicketStatusEnum'
          description: 'Ticket status: new, open, pending, on_hold, or resolved


            * `new` - New

            * `open` - Open

            * `pending` - Pending

            * `on_hold` - On hold

            * `resolved` - Resolved'
        priority:
          description: 'Ticket priority: low, medium, or high. Null if unset.


            * `low` - Low

            * `medium` - Medium

            * `high` - High'
          oneOf:
          - $ref: '#/components/schemas/PriorityEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        assignee:
          allOf:
          - $ref: '#/components/schemas/TicketAssignment'
          readOnly: true
        anonymous_traits:
          description: Customer-provided traits such as name and email
        ai_resolved:
          type: boolean
        escalation_reason:
          type:
          - string
          - 'null'
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        message_count:
          type: integer
          readOnly: true
        last_message_at:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        last_message_text:
          type:
          - string
          - 'null'
          readOnly: true
        unread_team_count:
          type: integer
          readOnly: true
        unread_customer_count:
          type: integer
          readOnly: true
        session_id:
          type:
          - string
          - 'null'
          readOnly: true
        session_context:
          readOnly: true
        sla_due_at:
          type:
          - string
          - 'null'
          format: date-time
          description: SLA deadline set via workflows. Null means no SLA.
        snoozed_until:
          type:
          - string
          - 'null'
          format: date-time
        slack_channel_id:
          type:
          - string
          - 'null'
          readOnly: true
        slack_thread_ts:
          type:
          - string
          - 'null'
          readOnly: true
        slack_team_id:
          type:
          - string
          - 'null'
          readOnly: true
        email_subject:
          type:
          - string
          - 'null'
          readOnly: true
        email_from:
          type:
          - string
          - 'null'
          format: email
          readOnly: true
        email_to:
          type:
          - string
          - 'null'
          readOnly: true
        cc_participants:
          readOnly: true
        person:
          allOf:
          - $ref: '#/components/schemas/TicketPerson'
          readOnly: true
        tags:
          type: array
          items: {}
    TicketView:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        short_id:
          type: string
          readOnly: true
        name:
          type: string
          maxLength: 400
        filters:
          type: object
          additionalProperties: true
          description: Saved ticket filter criteria. May contain status, priority, channel, sla, assignee, tags, dateFrom, dateTo, and sorting keys.
        created_at:
          type: string
          format: date-time
          readOnly: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/UserBasic'
          readOnly: true
      required:
      - created_at
      - created_by
      - id
      - name
      - short_id
    RoleAtOrganizationEnum:
      enum:
      - engineering
      - data
      - product
      - founder
      - leadership
      - marketing
      - sales
      - other
      type: string
      description: '* `engineering` - Engineering

        * `data` - Data

        * `product` - Product Management

        * `founder` - Founder

        * `leadership` - Leadership

        * `marketing` - Marketing

        * `sales` - Sales / Success

        * `other` - Other'
  parameters:
    ProjectIdPath:
      in: path
      name: project_id
      required: true
      schema:
        type: string
      description: Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
  securitySchemes:
    PersonalAPIKeyAuth:
      type: http
      scheme: bearer
x-tagGroups:
- name: All endpoints
  tags:
  - LLM Analytics
  - actions
  - activity_log
  - activity_logs
  - advanced_activity_logs
  - alerts
  - annotations
  - approval_policies
  - batch_exports
  - cdp
  - change_requests
  - code
  - code-invites
  - cohorts
  - comments
  - conversations
  - core
  - customer_analytics
  - customer_journeys
  - customer_profile_configs
  - dashboard_templates
  - dashboards
  - data_color_themes
  - data_modeling_jobs
  - data_warehouse
  - dataset_items
  - datasets
  - desktop_recordings
  - domains
  - early_access_feature
  - early_access_features
  - elements
  - endpoints
  - environments
  - error_tracking
  - evaluation_runs
  - evaluations
  - event_definitions
  - event_filter
  - event_schemas
  - events
  - experiment_holdouts
  - experiment_saved_metrics
  - experiments
  - exports
  - external_data_schemas
  - external_data_sources
  - feature_flags
  - file_system
  - file_system_shortcut
  - flag_value
  - groups
  - groups_types
  - health_issues
  - heatmap_screenshots
  - heatmaps
  - hog_flows
  - hog_function_templates
  - hog_functions
  - insight_variables


# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/posthog/refs/heads/main/openapi/posthog-conversations-api-openapi.yml