# Podmenti > Podcast transcripts for any episode of any public podcast, with word-level timestamps that stay in sync with the live audio, a transcription queue for episodes nobody has yet, and AI Search that returns verbatim quotes with timestamps. One API key, one credit balance, shared with the website. - API docs: https://podmenti.com/api - OpenAPI 3.1: https://podmenti.com/openapi.json - Plans and prices: https://podmenti.com/plans - Get a key (free, starts with 0 credits; email verification): https://podmenti.com/login or POST https://podmenti.com/api/v1/register/start {"email"}. Creating an account accepts https://podmenti.com/terms and https://podmenti.com/privacy. - Sitemap: https://podmenti.com/sitemap.xml ## How ids work - feed_id: the show's id in the open Podcast Index. Get it from GET /api/v1/search?q=, GET /api/v1/shows/lookup?apple_id=… or ?feed_url=…, GET /api/v1/charts, GET /api/v1/trending. - transcript_id: 16 hex chars, sha1(episode guid)[:16]. Get it from GET /api/v1/shows/{feed_id}/episodes. It is the same for everyone and never changes. - apple_id: the Apple Podcasts id, for cross-referencing charts and links. ## Two meters: credits and requests - Requests: every call made with a key counts as one request against the plan's daily allowance (Free 1,000, Plus 5,000, Pro 20,000, Business 50,000 per UTC day). Headers X-RateLimit-Limit and X-RateLimit-Remaining on every response, 429 when spent. GET /api/v1/usage reports requests_today and request_limit. - Credits: charged on top only by POST /api/v1/unlock, POST /api/v1/requests and POST /api/v1/ai-search/query. Everything else (search, show details, episode lists, charts, trending, episode status, transcript reads, jobs, webhooks, account calls) costs 0 credits and only counts as a request. /openapi.json carries x-cost on every operation. ## Prices (credits): one credit is one episode, any length - Search, show details, episode lists, charts, trending, transcript reads: 0 - Unlock an episode we already hold, any length (full text, timestamps, .txt/.srt/.vtt/JSON, forever): 1 - Any episode you already unlocked: 0 - Transcribe an episode nobody has yet: 1, any length (includes its unlock). Every episode runs on the GPU fast lane, usually ready in a minute or two; the measured median is in the fast block of https://podmenti.com/api/queue - AI Search query: 1 - A failed episode (usually audio the host no longer serves) is refunded in full automatically. - Packs (one-time, credits never expire, bought at https://podmenti.com/plans or via POST /api/v1/checkout): 1 episode $1, 10 episodes (10 credits) $5, 50 episodes (50 credits) $15 - Plans: Free 0 credits and 1,000 requests/day, Plus $9 for 40 episodes a month and 5,000/day, Pro $29 for 150 and 20,000/day, Business $99 for 600 and 50,000/day ## Jobs - POST /api/v1/requests transcribes on the GPU fast lane (the only lane): 1 credit per new episode, any length, promised within promise_seconds (300 for a typical job, longer for big batches). The old "fast" field is still accepted and ignored; every job carries fast: true and promise_seconds, and dry_run quotes the charge and the promise without spending anything. - POST /api/v1/requests returns a job {id, status, estimated_ready_at, poll_after_seconds, poll_url}. Poll GET /api/v1/jobs/{id} at the suggested interval, or pass webhook_url (https) to receive a POST with event job.done and the same job shape when every transcript exists. GET /api/v1/jobs lists recent jobs. Webhooks are https-only, signed with X-Podmenti-Signature (t=,v1=; secret from GET /api/v1/webhooks/secret) and retried with backoff. POST /api/v1/webhooks/inbox gives a hosted https test receiver. ## Sample - A full episode unlocked for everyone, no key needed: https://podmenti.com/api/v1/transcripts/a7c18c255b33d645?format=json×tamps=1&words=1