Supported methods
- Body field
user— recommended (works with OpenAI‑compatible SDKs) - Header
X-Paywall-User— easy to inject via middleware/proxy - URL prefix
/{user}/…— fallback when body/headers cannot be modified
- Base URL:
https://api.paywalls.ai/v1 - Header:
Authorization: Bearer $PAYWALLS_API_KEY
Option 1 — Body user (recommended)
Option 2 — Header X-Paywall-User
Option 3 — URL prefix (fallback)
Use the URL prefix only if you cannot modify body/headers.
Node (OpenAI SDK)
Bodyuser
X-Paywall-User
Python (OpenAI SDK)
Vercel AI SDK (Edge)
Bodyuser
Fetch / cURL
fetch (header)user)
Behavior summary
On each request Paywalls extracts the user id (body > header > URL), checks authorization and balance, and either:- Returns an assistant message with an authorization/top‑up link (no charge), or
- Forwards the request, meters usage, deducts balance, and streams the model response.
Best practices
- Use body
userwhen possible; header is a great middleware fallback. - Keep IDs stable across sessions and retries. Avoid PII.
- Ensure your server/edge passes the user on every billable request.