Skip to main content
GET
/
v1
/
api
/
conversations
/
{id}
/
messages
List conversation messages
curl --request GET \
  --url https://api.hq.zone/v1/api/conversations/{id}/messages \
  --header 'Authorization: Bearer <token>'
[
  {
    "created_at": "2023-11-07T05:31:56Z",
    "direction": "<string>",
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "kind": "<string>",
    "payload": "<unknown>",
    "seq": 123,
    "author": {
      "avatar_url": "<string>",
      "name": "<string>"
    },
    "turn_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  }
]

Authorizations

Authorization
string
header
required

Personal Access Token. Send as Authorization: Bearer hq_pat_....

Path Parameters

id
string<uuid>
required

Conversation id

Query Parameters

since_seq
integer<int64> | null
turn_id
string<uuid> | null
direction
string | null
view
string | null

?view=admin opts a tenant admin into reading a journal they don't participate in; non-admins are silently downgraded. Same shape as conversation_meta. Honored as read-only - there's no admin-elevation on POST.

Response

The conversation transcript: journal rows, seq-ordered (the cold-load companion to the live SSE stream)

created_at
string<date-time>
required
direction
string
required
id
string<uuid>
required
kind
string
required
payload
any
required
seq
integer<int64>
required
author
object

Resolved author for multi-party threads (Slack/Teams): name + public avatar URL, looked up from workspace_users by the message's identity.sub. None for web/extension owners + unknown users -> the frontend falls back to its own current-user rendering.

turn_id
string<uuid> | null