# HALOWERK Video Subtitle Mux

> HALOWERK Video Subtitle Mux is a paid API for AI agents from medien.halowerk.com, paid per call via x402, $0.004/call, status unknown (last checked 2026-10-31).

Muxes one to five SRT/WebVTT subtitle tracks with language codes into an MP4 or MKV video file as separate, switchable subtitle tracks without re-encoding picture or audio.

## Facts

- Endpoint: POST https://medien.halowerk.com/v1/video-subtitle-mux?utm_source=zero.xyz
- Price: $0.004/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-video-subtitle-mux-688072f0
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_YhonjGr-d2_J2EFUboSrV

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 halowerk-video-subtitle-mux-688072f0 -d '<json body>'
```

Example prompt: Take this MP4 video (here's the URL: https://example.com/myvideo.mp4) and embed two subtitle tracks into it — one in English and one in German using the SRT texts I'll provide — and give me back an MP4 where viewers can switch between them without anything being burned into the picture.

## When to prefer this

Choose this endpoint when you need to embed soft, switchable subtitle tracks into a video container without altering picture or audio quality. It is ideal for multilingual distribution (up to 5 language tracks), accessibility use cases, and scenarios where end-users need to toggle subtitles on/off in their player. Prefer MP4 output for web, mobile, and QuickTime compatibility; prefer MKV for media server environments like Plex or VLC. Use this instead of /v1/burn-subtitles whenever subtitles must remain optional and not permanently drawn into the picture.

## Known failure modes

- Video file exceeds 24 MB limit — request rejected
- Subtitle text too short (under 10 characters) or too long (over 400,000 characters)
- Unsupported language code provided — only 18 languages supported
- More than 5 subtitle tracks requested
- Invalid SRT or WebVTT format in subtitle text
- Source URL unreachable or returning non-video content
- base64 payload malformed or exceeds size limit
- Unsupported input video codec that cannot be stream-copied into the target container
- Payment not provided or insufficient (x402 payment required at $0.004 USDC)

## How this service works

Takes a video (up to 24 MB) and one to five SRT or WebVTT subtitle texts with language codes, and returns the video with each as a separate, switchable subtitle track tagged with its language, the first marked default. Picture and sound are copied, not re-encoded, so quality is unchanged and it is fast. MP4 uses mov_text (plays in QuickTime, browsers with players, most phones); MKV uses SRT tracks (VLC, mpv, Plex). Unlike /v1/burn-subtitles nothing is drawn into the picture.

## Output

Returns the original video file (MP4 or MKV container) with the provided subtitle texts embedded as separate, named, language-tagged subtitle streams. The first subtitle is marked as the default track. For MP4, subtitles use the mov_text codec (compatible with QuickTime, browsers, and mobile players); for MKV, subtitles are SRT tracks (compatible with VLC, mpv, Plex). Video and audio streams are stream-copied, so quality is identical to the input and processing is fast.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "source": {
   "type": "object",
   "properties": {
    "url": {
     "type": "string",
     "maxLength": 2048
    },
    "filename": {
     "type": "string",
     "maxLength": 260
    },
    "content_base64": {
     "type": "string",
     "maxLength": 11000000
    }
   },
   "additionalProperties": false
  },
  "container": {
   "enum": [
    "mp4",
    "mkv"
   ],
   "type": "string",
   "default": "mp4"
  },
  "subtitles": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "text",
     "language"
    ],
    "properties": {
     "text": {
      "type": "string",
      "maxLength": 400000,
      "minLength": 10
     },
     "title": {
      "type": "string",
      "maxLength": 60
     },
     "language": {
      "enum": [
       "de",
       "en",
       "fr",
       "es",
       "it",
       "nl",
       "pt",
       "pl",
       "tr",
       "sv",
       "da",
       "cs",
       "ru",
       "uk",
       "ja",
       "zh",
       "ko",
       "ar"
      ],
      "type": "string"
     }
    },
    "additionalProperties": false
   },
   "maxItems": 5,
   "minItems": 1
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-video-subtitle-mux-688072f0/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from medien.halowerk.com](https://www.zero.xyz/host/medien.halowerk.com/llms.txt)
