---
title: "List a recipient inbox"
method: GET
path: "/products/notify/inbox"
tags: ["notify"]
---

# List a recipient inbox

`GET /products/notify/inbox`

The sender-side view of one recipient notification list. Filtering happens after the page is read, so a short page with a live cursor means keep paging, not end of list.

## Query parameters

- `recipient_id` string, required
- `state` 'all' | 'unseen' | 'unread' | 'archived'
- `limit` integer
- `cursor` string

## Response `200`

A page of notifications.

- object
  - `data` object, required
    - `notifications` NotifyInboxRow[], required
      - `notification_id` string, required
      - `send_id` string, required
      - `created_at` integer, required — Unix seconds; the row sort key.
      - `title` string, nullable
      - `category` string, nullable
      - `type` string, nullable
      - `seen_at` integer, nullable
      - `read_at` integer, nullable
      - `archived_at` integer, nullable
      - `sparklink_code` string, nullable — Pointer to the sealed content. Null on a plaintext send.
      - `locked` boolean, required — True when the content sits behind a SparkLink reveal rather than inline.
      - `body` string — Inline content. Present on plaintext sends only.
      - `thread_id` string — Present on conversation sends.
    - `cursor` string, nullable, required — Opaque continuation token. Null when the listing is exhausted.
  - `meta` ResponseMeta — Envelope metadata present on every successful response.
    - `api_version` string
    - `request_id` string
    - `response_ms` integer
    - `timestamp` integer — Unix seconds.
    - `pools` object — Storage and bandwidth capacity snapshot for the account.
    - `billing` object
      - `past_due` boolean
    - `quota` object — This minute of the account request budget. Present on authenticated success responses that passed the throttle; absent otherwise.
      - `limit` integer
      - `used` integer
      - `remaining` integer
      - `resets_at` integer — Unix seconds.

## Other responses

- `400` — VALIDATION_ERROR — the message names the offending field.
- `401` — AUTHENTICATION_ERROR — missing or invalid credentials.
- `403` — FORBIDDEN — the caller may not act on this account.
- `404` — NOT_FOUND — the account record is missing.
- `429` — RATE_LIMIT_EXCEEDED — the account exceeded 300 requests this minute. `Retry-After` carries the seconds to wait, and `details` carries limit/resets_at, plus `used` whenever the request was counted. A request refused because the limiter itself was unavailable reports no `used`.

---

[API](https://skmtc.dev/sparkvault/apis/sparkvault-api.md) · [All operations](https://skmtc.dev/sparkvault/apis/sparkvault-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sparkvault/sparkvault-api/revisions/aaf3fd4981d9/schema)
