> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dripstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Unlocks

> Posts this account already paid to unlock. Metadata only — re-read the summary on the paid post route.

`GET /api/v1/me/unlocks` lists **lifetime unlocks** for the current API key
or MCP OAuth token. Use it to answer "what have I already bought?"

Requires `Authorization: Bearer pk_drip_…` or an MCP OAuth access token with
`mcp:unlock`. Session JWTs are rejected (`401`).

MCP: `list_unlocked_posts`.

This route does **not** return `synthesizedSummary`. Re-read with
`GET /api/v1/publications/{publicationSlug}/{postSlug}` (or MCP
`unlock_post`) — free after the first unlock for this Drip user. See
[Payment Flow](/concepts/payment-flow).

## List

```bash theme={null}
curl -H "Authorization: Bearer pk_drip_…" \
  "https://dripstack.com/api/v1/me/unlocks?limit=20"
```

Cursor-paginated, newest first. Optional `limit` (1-50, default 20) and
`cursor` (pass the previous `nextCursor`). `nextCursor` is `null` when
exhausted. A bad `limit` returns `400` with field `issues`; an unknown
`cursor` returns `{ "error": "..." }`.

```json theme={null}
{
  "items": [
    {
      "id": "punl_01",
      "publicationSlug": "stratechery",
      "publicationName": "Stratechery",
      "postSlug": "the-ai-infrastructure-boom",
      "title": "The AI Infrastructure Boom",
      "subtitle": "Why hyperscalers are spending billions on GPU clusters",
      "author": "Ben Thompson",
      "url": "https://stratechery.com/p/the-ai-infrastructure-boom",
      "publishedAt": "2026-06-14T12:00:00.000Z",
      "unlockedAt": "2026-06-15T10:30:00.000Z",
      "isPodcast": false,
      "amountUsd": 0.5
    }
  ],
  "nextCursor": null
}
```

`amountUsd` is the credits charged on first unlock, or `null` when no spend
row exists. `isPodcast` is true for episodes.

To unlock a **new** post, confirm `$X.XX` from discovery `priceCents`, then
call the paid publication-post route (HTTP) or `unlock_post` with
`confirmSpend: true` (MCP).
