# Relaystation Video Frame Extractor

> Relaystation Video Frame Extractor is a paid API for AI agents from api.relaystation.ai, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-14).

Extracts N evenly-sampled frames from a video and returns a manifest of presigned image links

## Facts

- Endpoint: POST https://api.relaystation.ai/v1/media/frames
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/relaystation-video-frame-extractor-9a62c84a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_-3OGPMSTqeWK6Wd0kSabF

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 relaystation-video-frame-extractor-9a62c84a -d '<json body>'
```

Example prompt: Extract 10 evenly-spaced frames from this video — https://example.com/myvideo.mp4 — and give me the presigned image links so I can review them.

## When to prefer this

Choose this endpoint when you need to rapidly decompose a video into a fixed number of evenly-distributed still frames for downstream image analysis, storyboarding, preview grids, or computer vision pipelines. It is ideal for agentic workflows where the number of frames matters more than finding scene changes or specific moments — and where you want direct presigned URLs rather than stored assets. Prefer it over ffmpeg-based DIY solutions when you need a hosted, pay-per-use, agent-friendly API with no infrastructure to manage.

## Known failure modes

- Invalid or inaccessible video URL — endpoint cannot fetch the source video
- Unsupported video format or codec
- N value out of acceptable range (too low or too high)
- Video too large or too long — may exceed processing limits
- Presigned links expire after a short window — agents must use them promptly
- Payment failure via x402 — insufficient USDC balance

## How this service works

$0.0003/MP. Extract N evenly-sampled frames from a video — a manifest of presigned image links back. 1¢ x402 min; remainder auto-credits — relaystation.ai/penny

## Output

A manifest (list) of presigned image URLs pointing to the N evenly-sampled frames extracted from the input video. Each link provides temporary direct access to the extracted frame image. Billing is $0.0003 per megapixel of extracted frames, with a 1¢ minimum charged via x402; any remainder auto-credits.

## Request schema (JSON Schema)

```json
{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
  "input": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "type": "string",
     "enum": [
      "POST",
      "PUT",
      "PATCH"
     ]
    },
    "bodyType": {
     "type": "string",
     "enum": [
      "json",
      "form-data",
      "text"
     ]
    },
    "body": {
     "type": "object",
     "properties": {
      "file": {
       "type": "object",
       "description": "cputools input-source: { inline: <base64 ≤ 4 MiB> } or { inputKey: <scratch key ≤ 50 MB> }. The input container must sniff (ffprobe) to the live allowlist (operator-tunable cputools.media.input_formats): 3g2, 3gp, aac, asf, avi, flac, flv, gif, m4a, m4v, matroska, mj2, mov, mov,mp4,m4a,3gp,3g2,mj2, mp3, mp4, mpeg, mpegts, mpegvideo, ogg, wav, webm, wmv. An off-list input is a free 422 UNSUPPORTED_FORMAT."
      },
      "count": {
       "type": "integer",
       "minimum": 1,
       "maximum": 50
      },
      "format": {
       "type": "string",
       "enum": [
        "png",
        "jpeg",
        "jpg"
       ]
      },
      "width": {
       "type": "integer",
       "minimum": 32,
       "maximum": 1920
      }
     }
    }
   },
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   },
   "required": [
    "type"
   ]
  }
 },
 "required": [
  "input"
 ]
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/relaystation-video-frame-extractor-9a62c84a/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.relaystation.ai](https://www.zero.xyz/host/api.relaystation.ai/llms.txt)
