# Tanod Podcast Transcript

> Tanod Podcast Transcript is a paid API for AI agents from tanod.dev, paid per call via x402, $0.02/call, status unknown (last checked 2026-10-28).

Transcribes a 5–600 second window of a podcast episode from its RSS feed URL, returning timestamped text, SRT, and VTT captions

## Facts

- Endpoint: POST https://tanod.dev/v1/audio/podcast-transcript?utm_source=zero.xyz
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-28
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-podcast-transcript-6e6ef483
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_YTqrrQM5SRIdQrC5OAsBF

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tanod-podcast-transcript-6e6ef483 -d '<json body>'
```

Example prompt: Can you transcribe the first 10 minutes of the latest episode of the Lex Fridman Podcast? The RSS feed is https://lexfridman.com/feed/podcast/ — I want the full text plus SRT captions.

## When to prefer this

Choose this endpoint when you need to extract spoken content from a podcast episode identified by its public RSS feed URL, especially when you need timestamped captions (SRT/VTT) or want to seek to a specific time window within a long episode. It is ideal for agents that have already located a podcast feed (e.g., via /v1/podcast/search) and need the actual transcript. Prefer this over generic audio-to-text APIs when you need paginated windowed access to long episodes, RSS-native episode selection by GUID or episode number, and built-in English translation — all at a flat $0.02/call rate with no signup.

## Known failure modes

- Invalid or unreachable RSS feed URL returns an error
- Episode not found by GUID, number, or title returns null result
- Audio file unreachable or DRM-protected fails transcription
- start_s beyond episode duration returns empty or error
- duration_s outside 5-600 range is rejected by schema validation
- Conflicting episode selectors (guid + episode_number simultaneously) may cause unexpected episode selection
- Language detection may be inaccurate for short or noisy audio segments
- Byte-range seeking means start_s can be off by a few seconds for VBR audio

## How this service works

Podcast transcript: transcribe a podcast episode from its RSS feed, a window of up to 10 minutes as text, timed segments, SRT and WebVTT (mlpeek by Tanod, faster-whisper). Use when an agent must transcribe up to 10 minutes of a podcast episode picked from its RSS feed.

## Output

A JSON object containing: plain transcript text, SRT and VTT caption strings, an array of timestamped word segments (start/end seconds + text), episode metadata (title, GUID, published date, duration, enclosure URL), show metadata (title, link), detected language and confidence, the Whisper model used, and window metadata (start_s, end_s, duration_s, next_start_s, method, exact flag). A truncated flag indicates if output was cut short.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "guid": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 500,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Pick the episode by its feed guid. Use at most one of guid, episode_number and episode_title; none picks the latest episode with audio."
  },
  "season": {
   "anyOf": [
    {
     "type": "integer",
     "maximum": 10000,
     "minimum": 0
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "With episode_number: the itunes:season number."
  },
  "start_s": {
   "type": "number",
   "default": 0,
   "maximum": 86400,
   "minimum": 0,
   "description": "Where the window starts, in seconds from the beginning of the episode (default 0)."
  },
  "feed_url": {
   "type": "string",
   "maxLength": 2048,
   "minLength": 1,
   "description": "Public http(s) URL of the show's RSS feed (find it with /v1/podcast/search)."
  },
  "language": {
   "anyOf": [
    {
     "type": "string",
     "pattern": "^[a-z]{2,3}$"
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Optional spoken language as an ISO 639-1 code (default: detected)."
  },
  "duration_s": {
   "type": "integer",
   "default": 600,
   "maximum": 600,
   "minimum": 5,
   "description": "Window length in seconds, 5-600 (default 600, the 10-minute limit of one call)."
  },
  "episode_title": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 300,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Pick the newest episode whose title contains this text (case-insensitive; an exact title wins)."
  },
  "episode_number": {
   "anyOf": [
    {
     "type": "integer",
     "maximum": 100000,
     "minimum": 0
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Pick the episode by its itunes:episode number."
  },
  "translate_to_english": {
   "type": "boolean",
   "default": false,
   "description": "true: text, segments, srt and vtt in English (Whisper translate). Same price."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "srt": "1\n01:00:00,000 --> 01:00:01,240\nPlanker won't mind.\n\n2\n01:00:01,240 --> 01:00:04,000\nIn fact, the producers of clinkers,\n\n",
  "vtt": "WEBVTT\n\n01:00:00.000 --> 01:00:01.240\nPlanker won't mind.\n\n01:00:01.240 --> 01:00:04.000\nIn fact, the producers of clinkers,\n\n",
  "show": {
   "link": "https://lexfridman.com/",
   "title": "Lex Fridman Podcast"
  },
  "text": "Planker won't mind. In fact, the producers of clinkers, the labs love when you spend tokens in vain.",
  "model": {
   "id": "faster-whisper-base",
   "source": "Systran/faster-whisper-base",
   "compute": "int8",
   "revision": "ebe41f70d5b6dfa9166e2c581c45c9c0cfc57b66"
  },
  "window": {
   "note": "the start is located from the file's average bitrate and can be off by a few seconds",
   "end_s": 3660.5,
   "exact": false,
   "method": "byte-range",
   "start_s": 3600,
   "duration_s": 60.5,
   "next_start_s": 3660.5
  },
  "episode": {
   "guid": "https://lexfridman.com/?p=6506",
   "link": "https://lexfridman.com/dhh-2/",
   "title": "#501 – DHH: Future of Programming, AI, Agentic Engineering, Vibe Coding & Linux",
   "season": null,
   "episode": null,
   "enclosure": {
    "url": "https://media.blubrry.com/takeituneasy/ins.blubrry.com/takeituneasy/lex_ai_dhh_2.mp3",
    "type": "audio/mpeg",
    "length": 249955445
   },
   "published": "2026-08-26T21:47:04Z",
   "duration_s": 19317
  },
  "language": "en",
  "segments": [
   {
    "end": 3601.24,
    "text": "Planker won't mind.",
    "start": 3600
   },
   {
    "end": 3604,
    "text": "In fact, the producers of clinkers,",
    "start": 3601.24
   }
  ],
  "operation": "podcast-transcript",
  "truncated": false,
  "input_bytes": 879899,
  "untrusted_content": true,
  "language_probability": 0.9996
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-podcast-transcript-6e6ef483/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tanod.dev](https://www.zero.xyz/host/tanod.dev/llms.txt)
