PlatPhorm Podcasts API

Public Media Library API Documentation

One input enters one canonical media contract that finds, understands, plays, and saves public media. Compatibility endpoints resolve links, validate feeds, return playback metadata, create share packets, expose Web Status, and support MCP. Operator controls are governed by PLATPHORM_PROTECTED.

Vercel experience plane

Next.js rendering, public routes, SEO, the universal natural-language or URL input, thin backend-for-frontend handlers, and one persistent player.

Cloudflare intelligence plane

D1 canonical truth, KV derived state, R2 bounded artifacts, Queues and Workflows, ingestion, normalization, search support, health, ranking, repair, enrichment, and signed relay.

The universal prompt is the primary interaction. Resolve, ingest, feed, and search routes remain supported compatibility and machine surfaces, all converging on the same media graph and playback contract.

Feed sources

217

Archived entries

28992

Audio episodes

28913

Archive mode

persistent

Operator Controls

Public user workflows stay key-free. When PLATPHORM_PROTECTED=1, operator write paths use the backend PlatPhorm key policy from Vercel environment variables.

Cross-site public media

PlatPhorm GameStream

GET /api/v1/live/gamestream returns bounded, source-attributed live gaming records. It uses the GameStream JSON API when healthy and falls back to the canonical public RSS projection without inventing streams or hiding upstream degradation.

  • Canonical collection and source URLs remain visible.
  • Twitch and Kick playback uses validated embeds inside the persistent player.
  • Legacy YouTube records remain metadata-only unless an explicit public source or embed is present.
  • HTML provider pages are attribution/embed sources, never media-relay enclosures.

The direct LIVE adapter is public and key-free. Canonical D1 ingestion is reported only after the Cloudflare queue path has persisted the record; catalog membership alone is not persistence proof.

Endpoint Inventory

/api/health

get · Public service health.

/api/v1/health

get · Versioned public service health.

/api/docs

get · Read the public human API documentation page.

/api/v1/feeds

get · List public feed sources.post · Submit one public feed URL for durable indexing; bulk ingestion and destructive operations remain protected.

/api/v1/media/{id}

get · Retrieve one canonical persisted public media item and bounded playback candidates.

/api/v1/media/search

get · Search persisted public submissions and the provider-neutral media index; explicit Archive.org searches asynchronously index normalized remote variants.

/api/v1/media/recent

get · List recently published or indexed records from the public provider-neutral media index.

/api/v1/activity/recent

get · List a unified, source-attributed timeline of newly added feeds, playlists, and media records.

/api/v1/activity/played

post · Persist one source-attributed play observation and related metadata for the public recent activity stream.

/api/v1/library

get · Page through the deduplicated public media library across feeds, entries, media, playlists, and playlist items.

/api/v1/library/lookup

get · Find the durable feed, playlist, or media route for one canonical public source URL before resolving it again.

/api/v1/archive/discovery/status

get · Read scheduled Archive.org discovery runs, continuation acceptance history, and aggregate remote-variant verification state.

/api/v1/radio/stations

get · Discover healthy public internet-radio stations through Radio Browser and persist returned station metadata to the public Cloudflare D1 index.

/api/v1/live/channels

get · Discover public live channels through bounded IPTV-org category, country, language, or region playlists and persist returned source metadata to Cloudflare D1.

/api/v1/live/gamestream

get · List bounded, source-attributed GameStream content with an honest RSS fallback when its JSON API is degraded.

/api/v1/media/space

get · Search trusted PlatPhorm Space articles and public YouTube media with bounded API and RSS fallback behavior.

/api/v1/media/relay

get · Stream one resolved public media URL through a short-lived signed Cloudflare relay.head · Inspect a signed on-demand media relay response without transferring its body.

/api/v1/playback/resolve

get · Describe the in-app playback verification contract.post · Verify a relay, browser-capable direct source, or allowlisted provider embed before any Play control is enabled.

/api/v1/media/variants/verify

post · Persist verification state for already-indexed media variants in Cloudflare D1.

/api/v1/operations/dead-letters

get · List bounded durable dead-letter records from the Cloudflare Queue consumer.

/api/v1/operations/duplicates

get · Inspect recent protected duplicate cleanup runs and duplicate-to-canonical ledger entries.post · Preview or apply recoverable duplicate cleanup without deleting source records.

/api/v1/operations/ranking-materialization

get · Inspect persisted ranking-signal rollups and recent materialization runs.post · Queue a fresh ranking-signal materialization run.

/api/v1/operations/maintenance-workflows

get · Inspect durable Cloudflare maintenance Workflow lifecycle state.post · Start one durable Cloudflare maintenance Workflow instance.

/api/v1/rsscloud/registrations

get · Inspect protected RSSCloud registration, renewal, challenge, and notification evidence.post · Opt one persisted RSSCloud-declaring feed into callback registration.

/api/v1/operations/playlist-continuation-fixture

get · Inspect the internal 125-item production continuation fixture and its D1 refresh ledger.post · Assert, seed, or advance the internal production continuation fixture.

/api/v1/operations/dead-letters/{id}

get · Inspect one durable dead-letter record and its safe replay metadata.

/api/v1/operations/dead-letters/{id}/replay

post · Replay one pending, replay-safe dead-letter job through the primary Cloudflare Queue.

/api/v1/operations/dead-letters/{id}/dismiss

post · Dismiss one pending dead-letter record without deleting its evidence.

/api/v1/community/actions

get · Read persisted public curation actions for one indexed target.post · Record one anonymous daily community curation action with a scoped fingerprint.

/api/v1/community/remediation

post · Queue one authenticated community report for durable Cloudflare remediation processing.

/api/v1/source-follows

get · Read the public follow state for one canonical source.post · Persist an idempotent follow for one canonical public source.

/api/v1/feed-catalog

get · List verified live podcast feeds and their dynamic playlist targets.

/api/v1/ingest

get · Describe public single-source podcast indexing ingest.post · Ingest one public URL, feed, provider collection, direct media source, or iframe/embed snippet through the canonical resolver; bulk insertion and destructive operations remain protected.

/api/v1/ingest/dry-run

post · Public dry-run URL resolution and feed parser evidence without server-side persistence.

/api/v1/resolve

get · Describe the URL resolver.post · Resolve and persist RSS, Atom, JSON Feed, JSON:API compound catalogs, platform, playlist, episode, host, and direct media URLs with typed source observations, aliases, feed refresh state, and playable or honestly degraded capability evidence.

/api/v1/imports/{id}

get · Read durable source-import progress by job id or playlist id.

/api/v1/storage/status

get · Runtime storage mode and archive configuration status.

/api/v1/archive/remote-status

get · Read-only status of the configured Cloudflare archive Worker connection.

/api/v1/analysis

post · Publicly persist one bounded, source-grounded analysis result or evidence record in the Cloudflare archive.

/api/v1/providers/archive-org/items/{identifier}

get · Normalize one Archive.org item and its playable remote variants on demand without mirroring media bytes.post · Persist normalized Archive.org metadata, attribution, rights, and remote URI variants in D1.

/api/v1/discovery

get · Public discovery manifest for Podcasts routes, capabilities, MCP, LLMS, graph, and Web Status.

/api/v1/metrics

get · Public-safe runtime metrics from real archive, share, category, tag, and storage state.

/api/v1/feeds/{id}

get · Get a feed source.put · Non-destructive feed source update status with runtime operator controls.delete · Non-destructive archive request with runtime operator controls.

/api/v1/feeds/{id}/sync

post · Resync an indexed public feed source with operator controls.

/api/v1/feeds/{id}/refresh

post · Scheduled or persistent feed refresh with runtime operator controls.

/api/v1/feeds/{id}/entries

get · List entries for one feed.

/api/v1/feeds/{id}/episodes

get · List playable episodes for one feed with pagination.

/api/v1/feeds/{id}/status

get · Get feed sync and archive status.

/api/v1/entries

get · List archived entries.

/api/v1/entries/search

get · Search archived entries.

/api/v1/entries/recent

get · List recent archived entries.

/api/v1/entries/archive

get · List archive entries and policy.

/api/v1/entries/{id}

get · Read one archived entry.

/api/v1/shows

get · List podcast shows/feed sources.

/api/v1/shows/{id}

get · Read one show.

/api/v1/shows/{id}/episodes

get · List show episodes.

/api/v1/episodes

get · List audio episodes.post · Resolve and record one public episode URL; bulk insertion and destructive operations remain protected.

/api/v1/episodes/{id}

get · Read one audio episode.

/api/v1/episodes/{id}/playback-url

get · Resolve a public remote or saved media playback URL for an episode.

/api/v1/episodes/{id}/archive

post · Saved media archive of a public remote audio enclosure with runtime operator controls.

/api/v1/episodes/{id}/score-emoji

post · Emoji scoring adapter with runtime operator controls. No score is claimed without an upstream Emoji response.

/api/v1/playlists

get · List public or local-compatible playlist records when persistence exists.post · Create a durable playlist record through the protected Cloudflare D1 application-record boundary.

/api/v1/playlists/{id}

get · Read one playlist record.put · Durable playlist persistence update with runtime operator controls.

/api/v1/playlists/{id}/items

post · Compatibility route for adding an item through the canonical durable playlist persistence and discovery workflow.

/api/v1/share

post · Create a public-safe share packet for an episode, clip, or playlist.

/api/v1/shares/{id}

get · Read a packet share page payload when encoded in the share id.

/api/v1/clip/dry-run

post · Create a local clip preview without saving an artifact.

/api/v1/clip

post · Saved clip generation with runtime operator controls and honest degraded state.

/api/v1/clips

get · List saved clips when configured.

/api/v1/clips/{id}

get · Read one saved clip manifest.

/api/v1/search

get · Search feed sources, episodes, and entries from real archive state.

/api/ai/chat

get · Describe the single universal grounded media prompt and its configured model provider.post · Search real indexed/provider records or classify one public URL for resolution; optional response generation uses Vercel AI Gateway and never invents records.

/api/ai/analyze

get · Describe the grounded entry-analysis provider architecture and durable persistence status.post · Publicly analyze one real archived entry with the shared Gateway-primary/Workers AI-fallback policy; raw durable writes remain server-protected.

/api/ai/recommend

get · Describe the grounded recommendation provider architecture and status.post · Publicly recommend real indexed sources or return an unsaved playable playlist draft from publisher enclosures; persistence remains an explicit canonical playlist action.

/api/v1/categories

get · List categories from real feed and entry state.

/api/v1/tags

get · List tags from real feed and entry state.

/api/v1/sources

get · List public L0-L3 content sources from the durable Cloudflare registry, with provenance and health metadata.post · Publicly submit one inspected content source to the durable registry; bulk and administrative insertion remain protected.

/api/v1/community/remediations/{id}

get · Read a public-safe remediation case or request the protected operator projection.post · Record a protected remediation transition or dispatch a bounded Jules pull-request session.

/api/v1/discover

post · Inspect and normalize one public feed, playlist, stream, or publisher surface without durable persistence.

/api/v1/validate/feed

post · Public feed validation dry-run with parser evidence.

/api/v1/validate/xml

post · XML validation adapter with local preflight; no external validation is claimed without service evidence.

/api/v1/validate/json

post · JSON validation adapter with local preflight; no external validation is claimed without service evidence.

/api/v1/integrations/status

get · Public-safe integration status for XML, JSON, Emoji, OpenContent, API analytics, and media storage.

/api/v1/status

get · Podcast product and Web Status summary.

/api/v1/opml/export

get · Export public feed sources as OPML.

/api/v1/opml/import

post · Bulk OPML feed import for public feed indexing.

/api/web/status

get · Web Status payload using schema web.status.v1.

/api/web/manifest

get · Public Web manifest for Podcasts.

/api/web/scorecard

get · Public Web scorecard.

/api/web/fingerprints

get · Public-safe fingerprints for routes, LLMS, OpenAPI, AsyncAPI, MCP, and policies.

/api/provenance/lookup

get · Public provenance lookup.

/api/provenance/verify

get · Public provenance verification.

/api/graph

get · Podcast graph nodes and edges.

/api/network/graph

get · Podcast graph exposed at network graph route.

/api/mcp

get · MCP metadata.post · JSON-RPC 2.0 MCP endpoint.

/sitemap.xml

get · Local product sitemap.

/sitemap-index.xml

get · Sitemap index for local, network, and full discovery.

/sitemap-network.xml

get · Bounded dual-source PlatPhorm network sitemap.

/sitemap-full.xml

get · Combined podcast product and PlatPhorm network sitemap.

Operator-Controlled Actions

  • Operator-controlled persistent ingest when PLATPHORM_PROTECTED=1
  • Operator-controlled feed refresh and network sync when PLATPHORM_PROTECTED=1
  • Operator-controlled RSSCloud registration and renewal when PLATPHORM_PROTECTED=1
  • Operator-controlled saved media and clip artifacts when PLATPHORM_PROTECTED=1
  • Operator-controlled publishing, report export, eval, browser journey, workflow, trace, catalog, and private report actions when PLATPHORM_PROTECTED=1
  • MCP operator tool calls when PLATPHORM_PROTECTED=1

Integration State

trace
trace-linked ingestion headers supported; export is degraded unless PLATPHORM_TRACE_EXPORT_ENABLED=true
mcp
https://podcasts.platphormnews.com/api/mcp
xml
XML validation adapter exists; external validation is not claimed without a real XML service response
json
JSON validation adapter exists; external validation is not claimed without a real JSON service response
emoji
Emoji scoring adapter exists; scores are unavailable unless the Emoji service returns a real score
opencontent
OpenContent publish is only reported after upstream confirmation
apiAnalytics
API analytics delivery is not claimed unless api.platphormnews.com confirms the event
docs
report creation is degraded until docs integration credentials are configured
sheets
report creation is degraded until sheets integration credentials are configured
decks
summary creation is degraded until decks integration credentials are configured
browserops
public navigation can be tested by BrowserOps; triggers follow PLATPHORM_PROTECTED runtime policy