Skip to main content
Paid routes return HTTP 402 with a dual challenge so a single request works with either supported protocol. Use any x402- or MPP-aware client.

The 402 handshake

  1. A plain request to a paid route returns 402 with two headers:
    • WWW-Authenticate: Payment ... — the MPP challenge
    • PAYMENT-REQUIRED — the x402 v2 challenge
  2. Retry the same request through a payment-aware client, or manually with:
    • Authorization: Payment <credential> for MPP, or
    • a PAYMENT-SIGNATURE header for x402 v2.
  3. On success (200), the response includes synthesizedSummary and paymentInfo.
Treat a 402 as a “pay and retry” signal, not a failure. If a plain HTTP request returns 402, retry it through the payment-aware client rather than surfacing an error.

Pricing: advisory vs authoritative

The OpenAPI discovery document exposes x-payment-info.offers[] on paid routes. These offers are advisory — they may list Base USDC (x402), Tempo, and Stripe charges, or catalog floor prices. The runtime 402 challenge is authoritative. Per-post pricing comes from the live challenge, and the price may scale with content — for example, stock-picks are priced by the number of distinct attributed source articles in the response. Always trust the live 402 over discovery offers.

Status codes

StatusMeaningAction
200SuccessRead synthesizedSummary and paymentInfo
402Payment requiredRetry the same request through a payment-aware client
403Insufficient purchased credits (API keys)Top up purchased balance
404Content not foundDo not pay; verify the publication / post slugs
429Rate limitedBack off and retry
503Summary not ready (summary_not_ready)Retry later; no payment challenge is issued
A 404 and a 503 never carry a payment challenge — do not pay on either. 503 means the summary is still being generated; retry shortly.

Discovery

Prefer GET /openapi.json (OpenAPI 3.1) for route shapes, JSON schemas, and paid-route x-payment-info.offers[] metadata. If OpenAPI is unavailable, use GET /.well-known/x402 for the paid resource list in METHOD /path form. The root x-discovery.ownershipProofs field is a Drip vendor extension, not part of core MPP discovery.