> ## 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.

# Paid Reads (x402 / MPP)

> Pay per request for paid posts, stock picks, ticker pages, and writer profiles — then unlock posts forever.

Paid wallet routes live under `/api/v2/x402/…` and charge per request with
USDC x402 (Base or Solana) or MPP (Tempo). No plan exists on this path —
wallet pay-per-use is the only model.

## The 402 handshake

1. Plain request returns `402` with `PAYMENT-REQUIRED` (x402 v2) and
   `WWW-Authenticate: Payment` (MPP) headers.
2. Retry with payment: `PAYMENT-SIGNATURE` for x402 v2, or
   `Authorization: Payment <credential>` for MPP.
3. `200` returns the content plus `paymentInfo`.

Price truth: the live `402` challenge is authoritative. For stock picks use
the free quote first:

```bash theme={null}
curl "https://dripstack.com/api/v2/x402/stock-picks/quote?date=2026-08-26"
curl "https://dripstack.com/api/v2/x402/stock-picks?date=2026-08-26"  # with payment
```

## Unlock tokens (paid posts)

The first successful pay for a post unlocks it **forever** for that wallet.
Store `unlockToken` (body) or `X-Drip-Unlock` (response header) and send it
back for free re-reads — on both the wallet and account mounts:

```bash theme={null}
curl "https://dripstack.com/api/v2/x402/sources/{sourceSlug}/{postSlug}" \
  -H "X-Drip-Unlock: <token>"
```

Stock picks, ticker pages, and writer profiles are pay-per-request — no
forever unlock.

## Pricing

* Paid posts: per-post USD price from the challenge (`priceCents` in search results).
* Stock picks: flat rate per UTC day served (empty days are skipped) — the
  quote returns the exact bundle `amountUsd` (day rate × charged days).
* Ticker pages and writer profiles: one flat price per call.

## Errors

| Code | Meaning |
| - | - |
| `402` | Payment required — retry with payment credentials |
| `403 wallet_only` | Account credentials sent — use the plain `/api/v2/…` routes instead |
| `404` | Content not found — do not pay |
| `503 summary_not_ready` | Summary not ready — retry later |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.