The Podmenti API

Everything the site does, programmatically: search podcasts, list episodes, fetch transcripts as text, JSON, SRT or VTT, with segment and word-level timestamps, queue new episodes for transcription, and ask AI Search to find a topic, name or keyword in any episode. One key, one credit balance, shared with the website.

Authentication

Accounts need a verified email, there's no way to get a spendable key without proving control of a real inbox. Start at POST /api/v1/register/start, click the link it emails you (or hit POST /api/v1/register/confirm with the token from that link if you'd rather stay in a terminal), then pass the returned key as a bearer token.

curl -X POST https://podmenti.com/api/v1/register/start \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}'
# check your email, then either click the link or:
curl -X POST https://podmenti.com/api/v1/register/confirm \
  -H "Content-Type: application/json" \
  -d '{"token": "<from the emailed link>"}'

# every call after that:
curl https://podmenti.com/api/v1/me \
  -H "Authorization: Bearer pm_YOUR_KEY"

Endpoints

POST /api/v1/register/start {"email"}: emails a one-time verification link. Same address twice re-sends your existing key instead of creating a duplicate account.
POST /api/v1/register/confirm {"token"}: the token from the emailed link. Free, includes 24 credits on first confirmation.
GET /api/v1/me Balance and everything you've unlocked.
GET /api/v1/search?q= Podcast search. Shows we index continuously are flagged indexed.
GET /api/v1/shows/{feed_id}/episodes?max=100 Episodes with transcript_id and status: ready, processing or none. Up to 1000, which covers a show's full history except a handful of the most prolific, where PodcastIndex itself stops tracking further back (response includes truncated: true when that's the case).
GET /api/v1/transcripts/{transcript_id} The transcript, including the original audio_url (whatever host serves it: Megaphone, Art19, Libsyn...). ?format=json (plain segments) and ?format=text are free. ?format=json&timestamps=1&words=1, srt, vtt and timestamped txt need an unlock.
POST /api/v1/unlock {"transcript": "<id>"}: 3 credits, once per transcript, then every format is yours forever.
POST /api/v1/requests Queue episodes for transcription. Free: 3 episodes, within 24 hours. With "rush": true: 25 credits per episode, front of the queue, typically within the hour, up to 25 at once. Episodes already transcribed, by anyone, are never charged or re-queued: the response splits results into already_transcribed (free, instant) and queued (what you're actually paying rush for). Emails you when the queued ones are done.
POST /api/v1/ai-search/query AI Search: search one transcribed episode for a topic, name or keyword. 8 credits (any paid plan, see pricing), returns verbatim quotes with timestamps. See below.

Word-level timestamps

Our transcriber stores the start time of every single word, not just every subtitle line. After unlocking, ?format=json&timestamps=1&words=1 returns them:

{
  "segments": [{
    "start": 61.4, "end": 66.9,
    "text": "And I'm Tim Houlihan. So we talk with researchers",
    "words": [
      {"w": "And", "s": 61.4}, {"w": "I'm", "s": 61.55},
      {"w": "Tim", "s": 61.72}, {"w": "Houlihan.", "s": 61.94}, …
    ]
  }, …]
}

That powers karaoke-style highlighting, precise audio deep links, clip cutting and search that jumps to the exact second. SRT and VTT exports drop straight into video editors and players.

One honest caveat: shows using dynamic ad insertion re-splice their audio file over time, so the copy at audio_url today can run a little longer or shorter than what these timestamps were originally cut against, usually by a few seconds per ad break. We already detect and correct for this drift on Bookmenti's own extracted book-mention quotes; the same correction hasn't been extended to these raw transcript timestamps yet.

AI Search

Instead of downloading a transcript and searching it yourself, ask a question and get back exactly where it's answered. This is the same kind of extraction that runs Bookmenti's book-mention pipeline at scale, pointed at whatever you ask instead of a fixed "find books" instruction: see how it works for a real example. Give POST /api/v1/ai-search/query a transcript_id and a topic ("mentions of Acme Corp", a person's name, a product, a claim you want fact-checked), and it returns verbatim quotes with timestamps:

curl -s -X POST https://podmenti.com/api/v1/ai-search/query -H "$AUTH" \
  -H "Content-Type: application/json" \
  -d '{"transcript_id": "'$ID'", "topic": "mentions of Stripe"}'

{
  "found": true,
  "summary": "The host describes switching their billing to Stripe.",
  "mentions": [{
    "quote": "we moved our whole billing stack over to Stripe last quarter",
    "context": "The host explains why they migrated payment providers.",
    "timestamp_seconds": 842,
    "listen_url": "https://podmenti.com/t/{transcript_id}#t=842"
  }],
  "credits": 77
}

The episode has to be transcribed first: queue it with POST /api/v1/requests {"rush": true} if transcript_status isn't ready yet, then query it. Each call is 8 credits, spent from a paid plan's monthly allowance (the free tier covers unlocks and rush, not this), and only charges on a successful result: a failed query is refunded automatically. Want this running continuously across a show, with a webhook when something new turns up, instead of one call at a time? Write to contact@podmenti.com, that's next.

A full example

# find the show
curl -s "https://podmenti.com/api/v1/search?q=huberman" -H "$AUTH"

# list episodes, grab a transcript_id with transcript_status "ready"
curl -s "https://podmenti.com/api/v1/shows/1365758/episodes" -H "$AUTH"

# read it free
curl -s "https://podmenti.com/api/v1/transcripts/$ID?format=text" -H "$AUTH"

# unlock once (3 credits), then take every format
curl -s -X POST https://podmenti.com/api/v1/unlock -H "$AUTH" \
  -H "Content-Type: application/json" -d '{"transcript": "'$ID'"}'
curl -sO "https://podmenti.com/api/v1/transcripts/$ID?format=srt" -H "$AUTH"

Pricing and limits

Building something bigger, need higher limits, or want an MCP connector for your AI assistant? Write to contact@podmenti.com.