# DripStack > Agent-first API for discovering publications, importing Substack feeds, and fetching full post content 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.xyz` - OpenAPI: `https://dripstack.xyz/openapi.json` - Onboarding skill: `https://dripstack.xyz/SKILL.md` ## What this site does - Lists stored publications - Fetches one publication and its post summaries - Imports a publication from its normalized host - Returns full post content, including `contentHtml`, from a paid endpoint ## Payment - Full post access is wallet-gated and uses Tempo-compatible payment handling - Default access price is `0.05 USD` unless a post-specific price overrides it - Agents should expect HTTP `402 Payment Required` on paid post 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 full post, including `contentHtml`; paid route ## 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.xyz/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 `402`, retry with a payment-aware Tempo 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` - `GET /api/v1/publications/{publicationSlug}` may import the publication if it is not already stored - The browser import UX is available at `GET /import/{target}` ## Examples - `https://dripstack.xyz/api/v1/publications` - `https://dripstack.xyz/api/v1/publications/bytesbeyondborders.substack.com` - `https://dripstack.xyz/api/v1/publications/bytesbeyondborders.substack.com/some-post-slug` - `https://dripstack.xyz/import/https://bytesbeyondborders.substack.com`