Conversations-2

For instructions on how to authenticate to use this endpoint, see API overview.

Endpoints

POST
PATCH
POST
GET
POST
PATCH
DELETE
POST
GET
POST
GET
PATCH
DELETE
GET
POST
POST
POST
POST
GET

Create conversations append message

Appends a message to an existing conversation without triggering AI processing. This is used for client-side generated messages that need to be persisted (e.g., support ticket confirmation messages).

Path parameters

  • conversation
    string

Request parameters

  • content
    string

Response


Example request

POST /api/projects/:project_id/conversations/:conversation/append_message
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/conversations/:conversation/append_message/\
-d content="string"

Example response

Status 200
RESPONSE
{
"content": "string"
}

Update conversations cancel

Cancel the conversation's in-progress LangGraph run.

Path parameters

  • conversation
    string

Request parameters


    Example request

    PATCH /api/projects/:project_id/conversations/:conversation/cancel
    export POSTHOG_PERSONAL_API_KEY=[your personal api key]
    curl -X PATCH \
    -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
    <ph_app_host>/api/projects/:project_id/conversations/:conversation/cancel/\
    -d status=undefined

    Example response

    Status 204 Cancellation accepted, or already cancelling.
    Status 422 Failed to cancel the conversation.

    Create conversations open

    Create-or-resume a sandbox conversation — the single sandbox session opener. With content, processes the turn (first message, in-progress follow-up, or terminal resume); without content, warms a sandbox that idles awaiting the first message. Returns the (task, run) handle the frontend opens SSE against. The conversation row is created on first use from the URL id.

    Path parameters

    • conversation
      string

    Request parameters

    • content
      stringnull
    • trace_id
      string
    • attached_context
      Click to open
      array
    • initial_permission_mode
    • task_id
      string

    Response


    Example request

    POST /api/projects/:project_id/conversations/:conversation/open
    export POSTHOG_PERSONAL_API_KEY=[your personal api key]
    curl
    -H 'Content-Type: application/json'\
    -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
    <ph_app_host>/api/projects/:project_id/conversations/:conversation/open/\
    -d content=["string","null"]

    Example response

    Status 200
    RESPONSE
    {
    "task_id": "string",
    "run_id": "string",
    "trace_id": "string",
    "run_status": "string",
    "just_created_run": true
    }
    Status 204 Warm request that provisioned nothing (pool full / released).
    Status 400 Conversation is not on the sandbox runtime.

    Retrieve conversations queue

    Path parameters

    • conversation
      string

    Response


    Example request

    GET /api/projects/:project_id/conversations/:conversation/queue
    export POSTHOG_PERSONAL_API_KEY=[your personal api key]
    curl \
    -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
    <ph_app_host>/api/projects/:project_id/conversations/:conversation/queue/

    Example response

    Status 200
    RESPONSE
    {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "status": "idle",
    "title": "string",
    "topic": "web_analytics",
    "user": {
    "id": 0,
    "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
    "distinct_id": "string",
    "first_name": "string",
    "last_name": "string",
    "email": "user@example.com",
    "is_email_verified": true,
    "hedgehog_config": {},
    "role_at_organization": "engineering"
    },
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "type": "assistant",
    "is_internal": true,
    "slack_thread_key": "string",
    "slack_workspace_domain": "string",
    "messages": [
    {}
    ],
    "has_unsupported_content": true,
    "agent_mode": "string",
    "agent_runtime": "langgraph",
    "is_sandbox": true,
    "pending_approvals": [
    {}
    ],
    "task": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "task_number": 0,
    "slug": "string",
    "title": "string",
    "title_manually_set": true,
    "description": "string",
    "origin_product": "string",
    "repository": "string",
    "github_integration": 0,
    "github_user_integration": "d46b8f4e-2e12-4354-88a4-723bb64114d3",
    "signal_report": "f46cde2b-d4ed-4f8c-8d95-dad529d245b3",
    "json_schema": {},
    "internal": true,
    "archived": true,
    "archived_at": "2019-08-24T14:15:22Z",
    "latest_run": "9c6e887d-05e4-4850-8ede-1a273a702178",
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "created_by": {
    "id": 0,
    "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
    "distinct_id": "string",
    "first_name": "string",
    "last_name": "string",
    "email": "string",
    "is_email_verified": true,
    "hedgehog_config": {},
    "role_at_organization": "string"
    },
    "ci_prompt": "string"
    }
    }

    Create conversations queue

    Path parameters

    • conversation
      string

    Request parameters


      Response


      Example request

      POST /api/projects/:project_id/conversations/:conversation/queue
      export POSTHOG_PERSONAL_API_KEY=[your personal api key]
      curl
      -H 'Content-Type: application/json'\
      -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
      <ph_app_host>/api/projects/:project_id/conversations/:conversation/queue/\
      -d status=undefined

      Example response

      Status 200
      RESPONSE
      {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "status": "idle",
      "title": "string",
      "topic": "web_analytics",
      "user": {
      "id": 0,
      "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
      "distinct_id": "string",
      "first_name": "string",
      "last_name": "string",
      "email": "user@example.com",
      "is_email_verified": true,
      "hedgehog_config": {},
      "role_at_organization": "engineering"
      },
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "type": "assistant",
      "is_internal": true,
      "slack_thread_key": "string",
      "slack_workspace_domain": "string",
      "messages": [
      {}
      ],
      "has_unsupported_content": true,
      "agent_mode": "string",
      "agent_runtime": "langgraph",
      "is_sandbox": true,
      "pending_approvals": [
      {}
      ],
      "task": {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "task_number": 0,
      "slug": "string",
      "title": "string",
      "title_manually_set": true,
      "description": "string",
      "origin_product": "string",
      "repository": "string",
      "github_integration": 0,
      "github_user_integration": "d46b8f4e-2e12-4354-88a4-723bb64114d3",
      "signal_report": "f46cde2b-d4ed-4f8c-8d95-dad529d245b3",
      "json_schema": {},
      "internal": true,
      "archived": true,
      "archived_at": "2019-08-24T14:15:22Z",
      "latest_run": "9c6e887d-05e4-4850-8ede-1a273a702178",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "created_by": {
      "id": 0,
      "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
      "distinct_id": "string",
      "first_name": "string",
      "last_name": "string",
      "email": "string",
      "is_email_verified": true,
      "hedgehog_config": {},
      "role_at_organization": "string"
      },
      "ci_prompt": "string"
      }
      }

      Update conversations queue

      Path parameters

      • conversation
        string
      • queue_id
        string

      Request parameters


        Response


        Example request

        PATCH /api/projects/:project_id/conversations/:conversation/queue/:queue_id
        export POSTHOG_PERSONAL_API_KEY=[your personal api key]
        curl -X PATCH \
        -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
        <ph_app_host>/api/projects/:project_id/conversations/:conversation/queue/:queue_id/\
        -d status=undefined

        Example response

        Status 200
        RESPONSE
        {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "status": "idle",
        "title": "string",
        "topic": "web_analytics",
        "user": {
        "id": 0,
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
        "distinct_id": "string",
        "first_name": "string",
        "last_name": "string",
        "email": "user@example.com",
        "is_email_verified": true,
        "hedgehog_config": {},
        "role_at_organization": "engineering"
        },
        "created_at": "2019-08-24T14:15:22Z",
        "updated_at": "2019-08-24T14:15:22Z",
        "type": "assistant",
        "is_internal": true,
        "slack_thread_key": "string",
        "slack_workspace_domain": "string",
        "messages": [
        {}
        ],
        "has_unsupported_content": true,
        "agent_mode": "string",
        "agent_runtime": "langgraph",
        "is_sandbox": true,
        "pending_approvals": [
        {}
        ],
        "task": {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "task_number": 0,
        "slug": "string",
        "title": "string",
        "title_manually_set": true,
        "description": "string",
        "origin_product": "string",
        "repository": "string",
        "github_integration": 0,
        "github_user_integration": "d46b8f4e-2e12-4354-88a4-723bb64114d3",
        "signal_report": "f46cde2b-d4ed-4f8c-8d95-dad529d245b3",
        "json_schema": {},
        "internal": true,
        "archived": true,
        "archived_at": "2019-08-24T14:15:22Z",
        "latest_run": "9c6e887d-05e4-4850-8ede-1a273a702178",
        "created_at": "2019-08-24T14:15:22Z",
        "updated_at": "2019-08-24T14:15:22Z",
        "created_by": {
        "id": 0,
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
        "distinct_id": "string",
        "first_name": "string",
        "last_name": "string",
        "email": "string",
        "is_email_verified": true,
        "hedgehog_config": {},
        "role_at_organization": "string"
        },
        "ci_prompt": "string"
        }
        }

        Delete conversations queue

        Path parameters

        • conversation
          string
        • queue_id
          string

        Example request

        DELETE /api/projects/:project_id/conversations/:conversation/queue/:queue_id
        export POSTHOG_PERSONAL_API_KEY=[your personal api key]
        curl -X DELETE \
        -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
        <ph_app_host>/api/projects/:project_id/conversations/:conversation/queue/:queue_id/

        Example response

        Status 204 No response body

        Create conversations queue clear

        Path parameters

        • conversation
          string

        Request parameters


          Response


          Example request

          POST /api/projects/:project_id/conversations/:conversation/queue/clear
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl
          -H 'Content-Type: application/json'\
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/:conversation/queue/clear/\
          -d status=undefined

          Example response

          Status 200
          RESPONSE
          {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "status": "idle",
          "title": "string",
          "topic": "web_analytics",
          "user": {
          "id": 0,
          "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
          "distinct_id": "string",
          "first_name": "string",
          "last_name": "string",
          "email": "user@example.com",
          "is_email_verified": true,
          "hedgehog_config": {},
          "role_at_organization": "engineering"
          },
          "created_at": "2019-08-24T14:15:22Z",
          "updated_at": "2019-08-24T14:15:22Z",
          "type": "assistant",
          "is_internal": true,
          "slack_thread_key": "string",
          "slack_workspace_domain": "string",
          "messages": [
          {}
          ],
          "has_unsupported_content": true,
          "agent_mode": "string",
          "agent_runtime": "langgraph",
          "is_sandbox": true,
          "pending_approvals": [
          {}
          ],
          "task": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "task_number": 0,
          "slug": "string",
          "title": "string",
          "title_manually_set": true,
          "description": "string",
          "origin_product": "string",
          "repository": "string",
          "github_integration": 0,
          "github_user_integration": "d46b8f4e-2e12-4354-88a4-723bb64114d3",
          "signal_report": "f46cde2b-d4ed-4f8c-8d95-dad529d245b3",
          "json_schema": {},
          "internal": true,
          "archived": true,
          "archived_at": "2019-08-24T14:15:22Z",
          "latest_run": "9c6e887d-05e4-4850-8ede-1a273a702178",
          "created_at": "2019-08-24T14:15:22Z",
          "updated_at": "2019-08-24T14:15:22Z",
          "created_by": {
          "id": 0,
          "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
          "distinct_id": "string",
          "first_name": "string",
          "last_name": "string",
          "email": "string",
          "is_email_verified": true,
          "hedgehog_config": {},
          "role_at_organization": "string"
          },
          "ci_prompt": "string"
          }
          }

          List all conversations tickets

          Also available via the PostHog MCP server:

          • conversations-tickets-listList support tickets

          List tickets with person data attached.

          Required API key scopes

          ticket:read

          Query parameters

          • assignee
            string
          • channel_detail
            string
            One of: "github_issue""slack_bot_mention""slack_channel_message""slack_emoji_reaction""teams_bot_mention""teams_channel_message""widget_api""widget_embedded"
          • channel_source
            string
            One of: "email""github""slack""teams""widget"
          • date_from
            string
          • date_to
            string
          • distinct_ids
            string
          • limit
            integer
          • offset
            integer
          • order_by
            string
            One of: "-created_at""-sla_due_at""-ticket_number""-updated_at""created_at""sla_due_at""ticket_number""updated_at"
          • priority
            string
          • search
            string
          • sla
            string
            One of: "at-risk""breached""on-track"
          • status
            string
          • tags
            string
          • tags_all
            string
          • tags_exclude
            string

          Response


          Example request

          GET /api/projects/:project_id/conversations/tickets
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl \
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/

          Example response

          Status 200
          RESPONSE
          {
          "count": 123,
          "next": "http://api.example.org/accounts/?offset=400&limit=100",
          "previous": "http://api.example.org/accounts/?offset=200&limit=100",
          "results": [
          {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "ticket_number": 0,
          "channel_source": "widget",
          "channel_detail": "slack_channel_message",
          "distinct_id": "string",
          "status": "new",
          "priority": "low",
          "assignee": {
          "id": "string",
          "type": "string",
          "user": {
          "property1": "string",
          "property2": "string"
          },
          "role": {
          "property1": "string",
          "property2": "string"
          }
          },
          "anonymous_traits": null,
          "ai_resolved": true,
          "escalation_reason": "string",
          "ai_triage": null,
          "created_at": "2019-08-24T14:15:22Z",
          "updated_at": "2019-08-24T14:15:22Z",
          "message_count": 0,
          "last_message_at": "2019-08-24T14:15:22Z",
          "last_message_text": "string",
          "unread_team_count": 0,
          "unread_customer_count": 0,
          "session_id": "string",
          "session_context": null,
          "sla_due_at": "2019-08-24T14:15:22Z",
          "snoozed_until": "2019-08-24T14:15:22Z",
          "slack_channel_id": "string",
          "slack_thread_ts": "string",
          "slack_team_id": "string",
          "email_subject": "string",
          "email_from": "user@example.com",
          "email_to": "string",
          "cc_participants": null,
          "github_repo": "string",
          "github_issue_number": 0,
          "person": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "distinct_ids": [
          "string"
          ],
          "properties": {},
          "created_at": "2019-08-24T14:15:22Z",
          "is_identified": true
          },
          "tags": [
          null
          ]
          }
          ]
          }

          Create conversations tickets

          Required API key scopes

          ticket:write

          Request parameters

          • status
          • priority
          • anonymous_traits
          • ai_resolved
            boolean
          • escalation_reason
            stringnull
          • sla_due_at
            stringnull
          • snoozed_until
            stringnull
          • tags
            array

          Response


          Example request

          POST /api/projects/:project_id/conversations/tickets
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl
          -H 'Content-Type: application/json'\
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/\
          -d ticket_number="integer"

          Example response

          Status 201
          RESPONSE
          {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "ticket_number": 0,
          "channel_source": "widget",
          "channel_detail": "slack_channel_message",
          "distinct_id": "string",
          "status": "new",
          "priority": "low",
          "assignee": {
          "id": "string",
          "type": "string",
          "user": {
          "property1": "string",
          "property2": "string"
          },
          "role": {
          "property1": "string",
          "property2": "string"
          }
          },
          "anonymous_traits": null,
          "ai_resolved": true,
          "escalation_reason": "string",
          "ai_triage": null,
          "created_at": "2019-08-24T14:15:22Z",
          "updated_at": "2019-08-24T14:15:22Z",
          "message_count": 0,
          "last_message_at": "2019-08-24T14:15:22Z",
          "last_message_text": "string",
          "unread_team_count": 0,
          "unread_customer_count": 0,
          "session_id": "string",
          "session_context": null,
          "sla_due_at": "2019-08-24T14:15:22Z",
          "snoozed_until": "2019-08-24T14:15:22Z",
          "slack_channel_id": "string",
          "slack_thread_ts": "string",
          "slack_team_id": "string",
          "email_subject": "string",
          "email_from": "user@example.com",
          "email_to": "string",
          "cc_participants": null,
          "github_repo": "string",
          "github_issue_number": 0,
          "person": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "distinct_ids": [
          "string"
          ],
          "properties": {},
          "created_at": "2019-08-24T14:15:22Z",
          "is_identified": true
          },
          "tags": [
          null
          ]
          }

          Retrieve conversations tickets

          Also available via the PostHog MCP server:

          • conversations-tickets-retrieveGet support ticket

          Get single ticket and mark as read by team.

          Required API key scopes

          ticket:read

          Path parameters

          • id
            string

          Response


          Example request

          GET /api/projects/:project_id/conversations/tickets/:id
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl \
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/:id/

          Example response

          Status 200
          RESPONSE
          {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "ticket_number": 0,
          "channel_source": "widget",
          "channel_detail": "slack_channel_message",
          "distinct_id": "string",
          "status": "new",
          "priority": "low",
          "assignee": {
          "id": "string",
          "type": "string",
          "user": {
          "property1": "string",
          "property2": "string"
          },
          "role": {
          "property1": "string",
          "property2": "string"
          }
          },
          "anonymous_traits": null,
          "ai_resolved": true,
          "escalation_reason": "string",
          "ai_triage": null,
          "created_at": "2019-08-24T14:15:22Z",
          "updated_at": "2019-08-24T14:15:22Z",
          "message_count": 0,
          "last_message_at": "2019-08-24T14:15:22Z",
          "last_message_text": "string",
          "unread_team_count": 0,
          "unread_customer_count": 0,
          "session_id": "string",
          "session_context": null,
          "sla_due_at": "2019-08-24T14:15:22Z",
          "snoozed_until": "2019-08-24T14:15:22Z",
          "slack_channel_id": "string",
          "slack_thread_ts": "string",
          "slack_team_id": "string",
          "email_subject": "string",
          "email_from": "user@example.com",
          "email_to": "string",
          "cc_participants": null,
          "github_repo": "string",
          "github_issue_number": 0,
          "person": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "distinct_ids": [
          "string"
          ],
          "properties": {},
          "created_at": "2019-08-24T14:15:22Z",
          "is_identified": true
          },
          "tags": [
          null
          ]
          }

          Update conversations tickets

          Required API key scopes

          ticket:write

          Path parameters

          • id
            string

          Request parameters

          • status
          • priority
          • anonymous_traits
          • ai_resolved
            boolean
          • escalation_reason
            stringnull
          • sla_due_at
            stringnull
          • snoozed_until
            stringnull
          • tags
            array

          Response


          Example request

          PATCH /api/projects/:project_id/conversations/tickets/:id
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl -X PATCH \
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/:id/\
          -d ticket_number="integer"

          Example response

          Status 200
          RESPONSE
          {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "ticket_number": 0,
          "channel_source": "widget",
          "channel_detail": "slack_channel_message",
          "distinct_id": "string",
          "status": "new",
          "priority": "low",
          "assignee": {
          "id": "string",
          "type": "string",
          "user": {
          "property1": "string",
          "property2": "string"
          },
          "role": {
          "property1": "string",
          "property2": "string"
          }
          },
          "anonymous_traits": null,
          "ai_resolved": true,
          "escalation_reason": "string",
          "ai_triage": null,
          "created_at": "2019-08-24T14:15:22Z",
          "updated_at": "2019-08-24T14:15:22Z",
          "message_count": 0,
          "last_message_at": "2019-08-24T14:15:22Z",
          "last_message_text": "string",
          "unread_team_count": 0,
          "unread_customer_count": 0,
          "session_id": "string",
          "session_context": null,
          "sla_due_at": "2019-08-24T14:15:22Z",
          "snoozed_until": "2019-08-24T14:15:22Z",
          "slack_channel_id": "string",
          "slack_thread_ts": "string",
          "slack_team_id": "string",
          "email_subject": "string",
          "email_from": "user@example.com",
          "email_to": "string",
          "cc_participants": null,
          "github_repo": "string",
          "github_issue_number": 0,
          "person": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "distinct_ids": [
          "string"
          ],
          "properties": {},
          "created_at": "2019-08-24T14:15:22Z",
          "is_identified": true
          },
          "tags": [
          null
          ]
          }

          Delete conversations tickets

          Path parameters

          • id
            string

          Example request

          DELETE /api/projects/:project_id/conversations/tickets/:id
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl -X DELETE \
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/:id/

          Example response

          Status 204 No response body

          List all conversations tickets messages

          Return the message thread for a ticket, ordered chronologically (paginated).

          Required API key scopes

          ticket:read

          Path parameters

          • id
            string

          Query parameters

          • limit
            integer
          • offset
            integer

          Response


          Example request

          GET /api/projects/:project_id/conversations/tickets/:id/messages
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl \
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/:id/messages/

          Example response

          Status 200
          RESPONSE
          {
          "count": 123,
          "next": "http://api.example.org/accounts/?offset=400&limit=100",
          "previous": "http://api.example.org/accounts/?offset=200&limit=100",
          "results": [
          {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "content": "string",
          "rich_content": null,
          "author_type": "string",
          "author_name": "string",
          "is_private": true,
          "created_at": "2019-08-24T14:15:22Z"
          }
          ]
          }

          Create conversations tickets reply

          Post a reply or internal note to a ticket.

          With is_private=false, the reply is delivered to the customer via the ticket's channel (email, Slack, Teams, GitHub). With is_private=true, the message is stored as an internal note only visible to team members.

          Required API key scopes

          ticket:write

          Path parameters

          • id
            string

          Request parameters

          • message
            string
          • is_private
            boolean
            Default: false
          • rich_content

          Response


          Example request

          POST /api/projects/:project_id/conversations/tickets/:id/reply
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl
          -H 'Content-Type: application/json'\
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/:id/reply/\
          -d message="string"

          Example response

          Status 201
          RESPONSE
          {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "content": "string",
          "rich_content": null,
          "author_type": "string",
          "author_name": "string",
          "is_private": true,
          "created_at": "2019-08-24T14:15:22Z"
          }

          Create conversations tickets bulk update status

          Update the status of multiple tickets in a single request.

          Only tickets belonging to the current team are affected; other-team UUIDs are silently ignored. Tickets already in the requested status are skipped.

          Request parameters

          • ids
            array
          • status

          Response


          Example request

          POST /api/projects/:project_id/conversations/tickets/bulk_update_status
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl
          -H 'Content-Type: application/json'\
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/bulk_update_status/\
          -d ids="array",\
          -d status=undefined

          Example response

          Status 200
          RESPONSE
          {
          "updated": 0,
          "ids": [
          "497f6eca-6276-4993-bfeb-53cbbbba6f08"
          ]
          }

          Create conversations tickets bulk update tags

          Bulk update tags on multiple objects.

          PAT access: this action has no required_scopes= on the decorator — inheriting viewsets must add "bulk_update_tags" to their scope_object_write_actions list to accept personal API keys. Without that opt-in, APIScopePermission rejects PAT requests with "This action does not support personal API key access". Done per-viewset so granting <scope>:write for one resource doesn't leak access to sibling resources that share this mixin.

          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

          Request parameters

          • ids
            array
          • action
          • tags
            array

          Response


          Example request

          POST /api/projects/:project_id/conversations/tickets/bulk_update_tags
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl
          -H 'Content-Type: application/json'\
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/bulk_update_tags/\
          -d ids="array",\
          -d action=undefined,\
          -d tags="array"

          Example response

          Status 200
          RESPONSE
          {
          "updated": [
          {
          "id": 0,
          "tags": [
          "string"
          ]
          }
          ],
          "skipped": [
          {
          "id": 0,
          "reason": "string"
          }
          ]
          }

          Create conversations tickets compose

          Create a new outbound ticket and send the first message to the customer.

          Required API key scopes

          ticket:write

          Request parameters

          • recipient_email
            string
          • recipient_distinct_id
            string
          • email_subject
            string
          • email_config_id
            string
          • message
            string
          • rich_content

          Response


          Example request

          POST /api/projects/:project_id/conversations/tickets/compose
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl
          -H 'Content-Type: application/json'\
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/compose/\
          -d recipient_email="string",\
          -d email_config_id="string",\
          -d message="string"

          Example response

          Status 201
          RESPONSE
          {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "ticket_number": 0
          }
          Status 400
          RESPONSE
          {
          "detail": "string",
          "error_type": "string"
          }

          Retrieve conversations tickets unread count

          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.

          Required API key scopes

          ticket:read

          Response


          Example request

          GET /api/projects/:project_id/conversations/tickets/unread_count
          export POSTHOG_PERSONAL_API_KEY=[your personal api key]
          curl \
          -H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
          <ph_app_host>/api/projects/:project_id/conversations/tickets/unread_count/

          Example response

          Status 200
          RESPONSE
          {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "ticket_number": 0,
          "channel_source": "widget",
          "channel_detail": "slack_channel_message",
          "distinct_id": "string",
          "status": "new",
          "priority": "low",
          "assignee": {
          "id": "string",
          "type": "string",
          "user": {
          "property1": "string",
          "property2": "string"
          },
          "role": {
          "property1": "string",
          "property2": "string"
          }
          },
          "anonymous_traits": null,
          "ai_resolved": true,
          "escalation_reason": "string",
          "ai_triage": null,
          "created_at": "2019-08-24T14:15:22Z",
          "updated_at": "2019-08-24T14:15:22Z",
          "message_count": 0,
          "last_message_at": "2019-08-24T14:15:22Z",
          "last_message_text": "string",
          "unread_team_count": 0,
          "unread_customer_count": 0,
          "session_id": "string",
          "session_context": null,
          "sla_due_at": "2019-08-24T14:15:22Z",
          "snoozed_until": "2019-08-24T14:15:22Z",
          "slack_channel_id": "string",
          "slack_thread_ts": "string",
          "slack_team_id": "string",
          "email_subject": "string",
          "email_from": "user@example.com",
          "email_to": "string",
          "cc_participants": null,
          "github_repo": "string",
          "github_issue_number": 0,
          "person": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "name": "string",
          "distinct_ids": [
          "string"
          ],
          "properties": {},
          "created_at": "2019-08-24T14:15:22Z",
          "is_identified": true
          },
          "tags": [
          null
          ]
          }

          Community questions

          Questions about this page? or post a community question.