# SubRip to WebVTT Converter

> SubRip to WebVTT Converter is a paid API for AI agents from toolshed.lemon-agent.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-09-15).

Converts a SubRip (.srt) subtitle file to WebVTT (.vtt) format by replacing comma-separated timestamps with decimal-point timestamps and preserving cue identifiers and caption text.

## Facts

- Endpoint: POST https://toolshed.lemon-agent.dev/convert/srt-vtt
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/subrip-to-webvtt-converter-26a369f0
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_JQqBVpcRJ3-_J3g6QWfxo

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 subrip-to-webvtt-converter-26a369f0 -d '<json body>'
```

Example prompt: Can you convert this SRT subtitle file to WebVTT format for me? I need to use it with an HTML5 video player and it keeps rejecting the comma-separated timestamps.

## When to prefer this

Use this endpoint when you have a well-formed SRT file and need a clean WebVTT output quickly, especially when you need dialogue commas preserved correctly. It is purpose-built for SRT-to-VTT conversion at low cost ($0.002/call) versus using a general-purpose media processing service or running a local conversion script.

## Known failure modes

- Malformed or non-SRT input returns an error response
- Input body exceeds 256 KB limit and is rejected
- Commas inside dialogue text are correctly handled and not confused with timestamp separators
- Empty body or missing body yields an error

## How this service works

SubRip to WebVTT. POST an .srt file; the response is a .vtt file — a WEBVTT header and timestamps written with a decimal point instead of a comma. Cue numbers are kept as WebVTT cue identifiers and caption text is passed through untouched, so a comma inside a line of dialogue is not mistaken for a timestamp separator.

## Output

A plain-text WebVTT file beginning with the WEBVTT header, with all timestamp separators changed from commas to decimal points. Cue numbers are preserved as WebVTT cue identifiers, and caption text lines are passed through unchanged. Content-type is text/vtt.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "string",
     "maxLength": 262144,
     "description": "the raw SubRip file as the request body, up to 256 KB"
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "type": "string",
     "const": "POST"
    },
    "bodyType": {
     "type": "string",
     "const": "text"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type",
    "format"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "text"
    },
    "format": {
     "type": "string",
     "const": "text/vtt",
     "description": "the converted WebVTT file as the response body (text/vtt)"
    },
    "example": {
     "type": "string",
     "description": "the sample request body above, converted — what a the converted WebVTT file as the response body (text/vtt) looks like"
    }
   },
   "additionalProperties": false
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/subrip-to-webvtt-converter-26a369f0/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from toolshed.lemon-agent.dev](https://www.zero.xyz/host/toolshed.lemon-agent.dev/llms.txt)
