# ffpipe Video to MP4 Converter

> ffpipe Video to MP4 Converter is a paid API for AI agents from ffpipe.dev, paid per call via x402, $0.05/call, status healthy (last checked 2026-09-14, last successful call 2026-09-05).

Converts any video file to a web-ready MP4 with optional thumbnail, accessible via source URL or direct upload, billed per conversion in USDC with no API key required.

## Facts

- Endpoint: POST https://ffpipe.dev/v1/convert
- Price: $0.05/call
- Payment: x402
- Status: healthy
- Last checked: 2026-09-14
- Last successful call: 2026-09-05
- Success rate: 100% of calls made through Zero
- Rating: 4.3 / 5 from 1 review
- Activations on Zero: 18
- Tags: x402
- Canonical page: https://www.zero.xyz/c/ffpipe-video-to-mp4-converter-fa4deec3
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_UIbSb2udSpR2GSpIbG-wM

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 ffpipe-video-to-mp4-converter-fa4deec3 -d '<json body>'
```

Example prompt: Convert this video at https://storage.example.com/clip.mov to a clean web-ready MP4, with max dimensions of 1280 wide by 720 tall.

## When to prefer this

Choose this endpoint when you need a simple, pay-per-use video-to-MP4 conversion with no account setup or API key, especially in automated agent pipelines where fixed USDC pricing and built-in retry vouchers on failure matter. Ideal for one-off or sporadic conversions of files up to 100 MB from a URL or direct upload.

## Known failure modes

- sourceUrl is not https or resolves to a localhost/internal address — rejected before charge
- source video exceeds 100 MiB — ingest rejected
- host blocks datacenter egress IPs — fails with ingest_failed error
- upload window expires before bytes are transferred — terminal error with no refund
- unsupported input video format or corrupted file — pipeline failure with retry voucher issued
- maxWidth or maxHeight values outside 1–4096 range — request rejected

## How this service works

Convert any video to a clean, web-ready MP4. Provide a source URL or upload the file directly; the paid request returns a status URL to poll, and the finished MP4 (plus a thumbnail) is downloadable for 24 hours. Fixed price per conversion in USDC over x402; no account or API key. Failures on our side automatically mint a free retry voucher. Input up to 100 MB.

## Output

A 202 response with a status URL to poll for conversion progress; once complete, a downloadable MP4 and thumbnail are available for 24 hours. If the conversion fails on the provider's side, a free retry voucher is issued automatically.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "upload": {
   "type": "boolean",
   "const": true,
   "description": "Push intake: instead of a `sourceUrl`, reserve an upload window and PUT the raw bytes (<= 100 MiB, same cap) to the `uploadUrl` in the 202 before `uploadExpiresAt`. You are charged at the 202, before any bytes move: letting the window expire is a terminal `error` with no refund; a pipeline failure after your upload earns a `retryVoucher`."
  },
  "maxWidth": {
   "type": "integer",
   "default": 1920,
   "maximum": 4096,
   "minimum": 1,
   "description": "Max output width. Must be a positive integer (JSON number, not a string)."
  },
  "maxHeight": {
   "type": "integer",
   "default": 1080,
   "maximum": 4096,
   "minimum": 1,
   "description": "Max output height."
  },
  "sourceUrl": {
   "type": "string",
   "format": "uri",
   "examples": [
    "https://storage.example.com/clip.mov?signature=abc123"
   ],
   "description": "https URL we fetch the input from. Rejected before any charge if it is not https, is an IP literal, or resolves to a localhost/.internal/.local name; redirects are followed (max 3) and every hop is re-checked. We fetch from datacenter IP ranges - hosts that block datacenter egress will fail with `ingest_failed`, so prefer a presigned URL from storage you control. Body size cap: 100 MiB by default, enforced while streaming."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ffpipe-video-to-mp4-converter-fa4deec3/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from ffpipe.dev](https://www.zero.xyz/host/ffpipe.dev/llms.txt)
