---
title: "A contact’s topic preferences"
method: GET
path: "/subscription-topics/contacts/{contactId}/subscriptions"
tags: ["Subscription topics"]
---

# A contact’s topic preferences

`GET /subscription-topics/contacts/{contactId}/subscriptions`

## Request

- Base URL: `https://api.poststack.dev`
- URL: `https://api.poststack.dev/subscription-topics/contacts/{contactId}/subscriptions`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://poststack.dev/oauth/authorize`
    - Token URL: `https://poststack.dev/oauth/token`
- TypeScript: <https://skmtc.dev/poststack/apis/poststack-api/docs/subscription-topics/contacts/:contactId/subscriptions/get.ts> (a function with typed inputs; its response is checked against the schema)

An unknown contact returns an empty list, not 404.

## Path parameters

- `contactId` string, required

## Response `200`

Subscriptions with their topic.

- object
  - `subscriptions` ContactSubscription[], required
    - `id` integer, required
    - `contactId` integer, required
    - `topicId` integer, required
    - `subscribed` boolean, required: `false` records an explicit opt-out.
    - `updatedAt` string, date-time
    - `topic` SubscriptionTopic
      - `id` integer, required
      - `publicId` string, required: `top_…` id.
      - `name` string, required
      - `description` string, nullable
      - `subscriberCount` integer: List only.
      - `createdAt` string, date-time
      - `updatedAt` string, date-time

## Other responses

- `400`: Validation failed — `error` names each offending field (`field: message`).
- `401`: Missing, malformed or unknown credentials (`WWW-Authenticate: Bearer …` is set).
- `403`: The credential lacks the `contacts:read` scope (body `{ error: "insufficient_scope", required, missing }`), or the team is suspended.

## Changes

- **2026-09-30** `4dc1e20989c8`: 9 warning
  - added the new `daily_limit_exceeded` enum value to the `anyOf[#/components/schemas/Error]/code` response property for the response status `403`
  - added the new `daily_limit_exceeded` enum value to the `code` response property for the response status `400`
  - added the new `daily_limit_exceeded` enum value to the `code` response property for the response status `401`
  - added the new `monthly_limit_exceeded` enum value to the `anyOf[#/components/schemas/Error]/code` response property for the response status `403`
  - …5 more
- **2026-09-29** `ef5b22b98333`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/poststack/apis/poststack-api/changes/subscription-topics/contacts/:contactId/subscriptions/get.md)

---

[API](https://skmtc.dev/poststack/apis/poststack-api.md) - [All operations](https://skmtc.dev/poststack/apis/poststack-api/llms.txt) - [OpenAPI document](https://skmtc.dev/poststack/apis/poststack-api/revisions/0d3971e3a670?raw)
