# Video Frame Extractor (agentutility.ai)

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

Extracts a single still frame (first, middle, or last) from a video URL and returns a hosted JPG image with its dimensions.

## Facts

- Endpoint: POST https://x402.agentutility.ai/video-thumbnail
- Price: $0.03/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/video-frame-extractor-agentutility-ai-dcb2916b
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_29NndqmP6sbr0kwq8toSz

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 video-frame-extractor-agentutility-ai-dcb2916b -d '<json body>'
```

Example prompt: Can you grab a thumbnail from this video — https://example.com/myvideo.mp4 — use the middle frame and give me back the image URL?

## When to prefer this

Choose this endpoint when you need a single still frame from a video quickly without transcoding the whole file. It is ideal for generating CMS thumbnails, video library previews, or content moderation snapshots where only one representative frame is needed and speed matters. Prefer it over full video processing pipelines when you only need a JPG preview and do not need multiple frames or video analysis.

## Known failure modes

- Video URL is not publicly accessible or returns a non-200 response — extraction fails with an error
- Unsupported video format that ffmpeg cannot decode — returns an error
- Invalid or missing video_url parameter — returns a validation error
- Network timeout fetching large video files — may fail on very large or slow-to-respond sources
- frame_type value outside the allowed enum (first/middle/last) — returns a validation error

## How this service works

Pull a single still frame out of a video without transcoding the whole file. Send a video_url and pick frame_type: first, middle, or last, and get back a hosted JPG with its width and height. Runs on fal.ai's ffmpeg extract-frame pipeline, so it's fast because it only decodes the frame it needs. Use it as a video thumbnail generator, video frame extractor, video-to-image converter, or preview-image API for video libraries, CMS thumbnails, and content moderation previews.

## Output

Returns a JSON object containing a hosted JPG image URL (image_url), the pixel width and height of the extracted frame, and the frame_type that was extracted (first, middle, or last).

## 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"
     ]
    },
    "bodyType": {
     "type": "string",
     "enum": [
      "json",
      "form-data",
      "text"
     ]
    },
    "body": {
     "properties": {
      "video_url": {
       "type": "string",
       "format": "uri",
       "description": "Public http(s) URL of the source video file."
      },
      "frame_type": {
       "type": "string",
       "enum": [
        "first",
        "middle",
        "last"
       ],
       "description": "Which frame to extract: \"first\", \"middle\", or \"last\". Optional; defaults to \"first\"."
      }
     },
     "required": [
      "video_url"
     ]
    }
   },
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "image_url": {
       "type": "string"
      },
      "frame_type": {
       "type": "string"
      },
      "width": {
       "type": "integer"
      },
      "height": {
       "type": "integer"
      }
     }
    }
   },
   "required": [
    "type"
   ]
  }
 },
 "required": [
  "input"
 ]
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "width": 320,
  "height": 176,
  "image_url": "https://...jpg",
  "frame_type": "middle"
 }
}
```

## More

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