# DripStack > Agent-first API for discovering publications, importing Substack feeds, and fetching post summaries with wallet-based payment. Start with the OpenAPI document, fetch a publication, read its post summaries, then request a full post when needed. - App: `https://dripstack.com` - OpenAPI: `https://dripstack.com/openapi.json` - Onboarding skill: `https://dripstack.com/SKILL.md` ## What this site does - Lists stored publications - Fetches one publication and its post summaries - Imports a publication from its normalized host - Returns synthesized post summaries (`synthesizedSummary`) from a paid endpoint - Returns extracted stock-picker calls from a paid endpoint ## Payment - Full post access and stock-picker access are wallet-gated and use Tempo-compatible payment handling plus x402 - Default access price is `0.05 USD` unless a post-specific price overrides it - OpenAPI advertises advisory `x-payment-info.offers[]` (Tempo, Stripe, Solana); the live `402` challenge is authoritative - Agents should expect HTTP `402 Payment Required` on paid requests when no valid payment credential is attached - Plain `curl` is fine for free routes, but paid routes require a payment-aware client ## Endpoints - `GET /api/v1/publications`: List available stored publications - `GET /api/v1/publications/{publicationSlug}`: Get publication metadata and post summaries; imports on demand if missing - `POST /api/v1/publications/{publicationSlug}`: Import one publication and return a small summary with `postCount` - `GET /api/v1/publications/{publicationSlug}/{postSlug}`: Get one synthesized summary (`synthesizedSummary`); paid route; `503 summary_not_ready` until ready - `GET /api/v1/stock-picks`: Get extracted stock-picker calls; paid route; defaults to the past 5 UTC extraction days; optional `date=YYYY-MM-DD` ## Publication slugs - Publication slugs are normalized hosts - Example: `https://bytesbeyondborders.substack.com` -> `bytesbeyondborders.substack.com` - For custom domains, remove leading `www.` ## Recommended agent flow 1. Read `https://dripstack.com/openapi.json` 2. Call `GET /api/v1/publications/{publicationSlug}` 3. Read the returned `posts[]` 4. Choose a `post.slug` 5. Call `GET /api/v1/publications/{publicationSlug}/{postSlug}` 6. If the server returns `503 summary_not_ready`, retry later; if `402`, retry with a payment-aware client ## Practical notes - Prefer the OpenAPI document before guessing request or response shapes - Use publication and post slugs exactly as returned by the API - Fetch a publication before attempting a paid post so you have a valid `post.slug` - Import publications with `POST /api/v1/publications/{publicationSlug}` ## Examples - `https://dripstack.com/api/v1/publications` - `https://dripstack.com/api/v1/publications/bytesbeyondborders.substack.com` - `https://dripstack.com/api/v1/publications/bytesbeyondborders.substack.com/some-post-slug`