Every library is an API.
Read, search, and cite any podcast hosted on PodHood. Published content is anonymous over MCP and plain Markdown; the REST API is the creator API — full programmatic read of your own channels, drafts included.
One index, three protocols
The same structured Brief that powers each library's pages is exposed as an MCP server for AI agents, Markdown for anything that reads text, and a credential-gated REST API for the channel's own tooling.
MCP — for AI agents
Every channel exposes an anonymous, read-only MCP server over Streamable HTTP. It provides one tool, search: ask a natural-language question, get back ranked episodes and grounded, timestamped quotes — each with a citation URL to the exact second.
https://<channel>.podhood.com/mcpOptional parameters: topK, maxSegmentsPerEpisode, includeText, fast, episodeIds. Each library’s Ask dialog ships install recipes for 30+ MCP clients — Claude, ChatGPT, Cursor, VS Code, and more.
Channel operators also get the creator MCP — a user-scoped server for your own agents: every episode status, drafts included, with tools for channels, episodes, search, chapters, and windowed transcripts. Connect by OAuth sign-in (Claude and ChatGPT discover the flow automatically) or send an API key as x-api-key or a Bearer token.
https://podhood.com/mcpREST — the creator API
Every REST endpoint requires a credential: an API key, created in Studio → Settings → API keys (paid plans) and sent in the "x-api-key" header (or as a Bearer token), or an OAuth access token from the creator MCP sign-in, sent as a Bearer token. Either reads the channels its owner is a member of — every non-archived episode status included; anything else 404s. Anonymous reading of published content lives on each channel's MCP server, not on REST.
The versioned surface is /api/v1; every documented endpoint is a read-only GET — idempotent and safe to retry — and a breaking change would ship as /api/v2with Deprecation and Sunset headers on the old version. Hybrid (semantic + keyword) search over your channel’s episodes, drafts included. Facet filters accept comma-separated ids: topicIds, personIds, entityIds, episodeIds — plus collectionId and year. Pass fast=true for keyword-only search.
curl -H "x-api-key: $PODHOOD_API_KEY" \
"https://podhood.com/api/v1/channels/{slug}/search?query=pricing%20strategy"REST — browse episodes
A keyset-paginated list of your channel’s episodes — every non-archived status, narrowable with status — with the same facet filters plus sort. Pass the response’s nextCursor back as cursor for the next page. Episode rows carry mediaUrl (the YouTube watch URL or RSS enclosure), so segment timestamps convert straight into source deep links.
curl -H "x-api-key: $PODHOOD_API_KEY" \
"https://podhood.com/api/v1/channels/{slug}/episodes"REST — episode resources
The transcript document carries speaker-attributed segments with word-level timing — the raw material for quotes, clips, and annotated transcripts. Errors are JSON with an error message — never HTML.
GET /api/v1/episodes/{episodeId}/transcript # word-level transcript
GET /api/v1/episodes/{episodeId}/chapters # chapters with key moments
GET /api/v1/episodes/{episodeId}/related # topically related episodesMachine-readable surfaces
- OpenAPI spec — the full REST surface with typed parameters and operation ids.
- auth.md — how agents authenticate (channel MCP and Markdown are anonymous; the creator surface takes an API key from Studio settings or an OAuth sign-in).
- llms.txt — the platform index; every channel host serves its own, listing its episodes and MCP endpoint.
- Markdown twins — append
.mdto any episode or marketing page URL (/index.md, /pricing.md, this page at /developers.md). sitemap.xmlandrobots.txton every host — AI crawlers are welcome, and episode pages carry Schema.org JSON-LD (PodcastEpisode, deep-linked Clip nodes for chapters and key moments, speakers, entities).
The structure that makes a podcast citable is the same structure that makes it programmable.
