Skip to main content
GET
/
v1
/
api
/
inbox
List inbox messages
curl --request GET \
  --url https://api.hq.zone/v1/api/inbox \
  --header 'Authorization: Bearer <token>'
{
  "messages": [
    {
      "body_markdown": "<string>",
      "delivered_at": "2023-11-07T05:31:56Z",
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "source_kind": "<string>",
      "title": "<string>",
      "ui_strings": "<unknown>",
      "read_at": "2023-11-07T05:31:56Z",
      "schedule_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "schedule_name": "<string>"
    }
  ],
  "page": 123,
  "page_size": 123,
  "total": 123,
  "unread_count": 123
}

Authorizations

Authorization
string
header
required

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

Query Parameters

unread
boolean | null

true filters to read_at IS NULL.

q
string | null

Free-text filter: case-insensitive substring over the message title, body, and (for schedule digests) the schedule name.

page
integer<int64> | null

1-based page index. Clamped to >= 1.

page_size
integer<int64> | null

Rows per page. Clamped to 1..=100; defaults to 25.

sort
string | null

recent (default, newest delivery first) or oldest.

limit
integer<int64> | null

Back-compat: an old SPA build calls ?limit=. Used as the page_size fallback so the pre-pagination client still works.

Response

200 - application/json

The caller's inbox page

messages
object[]
required
page
integer<int64>
required
page_size
integer<int64>
required
total
integer<int64>
required

Total rows matching the unread + search filter, before paging.

unread_count
integer<int64>
required

Unread across the whole inbox (drives the nav badge) - independent of the current page / search / sort.