list_publications, search_publications, get_publication,
list_podcasts, get_podcast.
Find a publication by name
GET /api/v1/publications/search?q=... — q is required (minimum 2
characters). Returns up to 3 matches.
One publication and its recent posts
GET /api/v1/publications/{publicationSlug} works for any indexed slug, not
only the curated list. Optional limit is 1-100.
posts[] with slug,
title, subtitle, publishedAt, priceCents, and isPodcast. Unknown
slugs return 404.
Unlock a selected post with
GET /api/v1/publications/{publicationSlug}/{postSlug} after confirming
$X.XX from priceCents. See Payment Flow.
Browse the curated catalog
GET /api/v1/publications lists curated newsletters, podcasts, and
publications (slug, title, description, siteUrl, lastSyncedAt).
Use this only when the user explicitly wants to browse what is available.
Podcasts
Same JSON envelope as publications ({ "publications": [...] }).
GET /api/v1/podcasts/{publicationSlug} returns 404 unless the slug is a
podcast. Unlock episodes with the same paid publication-post route as
newsletters.
