# Video Frame Sampler – Extract Evenly-Spaced Frames from Video URL

> Video Frame Sampler – Extract Evenly-Spaced Frames from Video URL is a paid API for AI agents from zero-gif-zeroclick.vercel.app, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-23, last successful call 2026-07-02).

Extracts evenly-spaced image frames from a direct video file URL so a multimodal model can visually analyze video content

## Facts

- Endpoint: POST https://zero-gif-zeroclick.vercel.app/v1/sample?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-23
- Last successful call: 2026-07-02
- Success rate: 54% of calls made through Zero
- Rating: 5.0 / 5 from 1 review
- Activations on Zero: 13
- Provider: zero-gif-zeroclick.vercel.app
- Website: https://zero-gif-zeroclick.vercel.app
- Canonical page: https://www.zero.xyz/c/zero-gif-zeroclick-vercel-app-video-frame-sampler-extract-evenly-0f465ad2
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_mJ-R2fHXBWZsXiaMaPrmK

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 zero-gif-zeroclick-vercel-app-video-frame-sampler-extract-evenly-0f465ad2 -d '<json body>'
```

Example prompt: Sample this video for me so you can watch it — pull up to 30 evenly-spaced frames at 1 fps and 384px wide from https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4 and tell me what's happening throughout.

## When to prefer this

Use this endpoint when you need a multimodal AI model to visually understand or analyze a video by inspecting representative frames. It is ideal for direct video file URLs (.mp4, .webm, .mov, .mkv) from sources like Wikimedia Commons, Internet Archive, or Pexels. Prefer this over competitors when you need evenly-sampled frames with precise timestamps in the JSON response, or when you want to do a two-pass analysis: wide sample first to localize a moment, then dense sample to zoom in.

## Known failure modes

- Non-direct video URL (YouTube, Vimeo, Reddit, HLS .m3u8) returns an error — only direct .mp4/.webm/.mov/.mkv file URLs are supported
- Video longer than 10 minutes or larger than 500 MB will be rejected
- Effective fps is silently capped to max_frames/duration so requested fps may not be honored on short videos
- Network timeout or fetch error if the video URL is inaccessible or requires authentication
- Requesting more than max_frames=100 or fps>4 will result in clamped values or an error

## How this service works

Extract evenly-spaced frames from a video URL so your own multimodal model can 'watch' it. Body: { video_url, fps?: 1 (max 4), max_frames?: 60 (max 100), width?: 384 (max 768) }. Returns { frames: [{ url, t_seconds, index }], video_duration }. REQUIRED: video_url must be a direct .mp4/.webm/.mov/.mkv file URL — YouTube/Vimeo/Reddit/X page URLs and HLS .m3u8 streams do NOT work; pre-resolve with yt-dlp or use Wikimedia Commons / Internet Archive / Pexels which serve direct files. BEHAVIOR: samples evenly across the WHOLE video, no start/end window. For a long video where you only care about a specific moment, do one wide sample (max_frames 24-30) to localize the moment, then optionally a denser sample (max_frames 100, fps 4) to zoom in. TIMESTAMPS: each frame's t_seconds is in the JSON response, not burned into the image — read the JSON, do not OCR. LIMITS: source ≤ 10 min, ≤ 500 MB. Effective fps is capped to max_frames/duration so you never get more than max_frames frames.

## Output

Returns a JSON object containing an array of frames, each with a hosted image URL, the timestamp in seconds (t_seconds), and a sequential index, plus the total video_duration in seconds. The frames are evenly distributed across the full video duration.

## Example request

```json
{
 "fps": 1,
 "width": 384,
 "video_url": "https://www.w3schools.com/html/mov_bbb.mp4",
 "max_frames": 5
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object"
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object"
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/zero-gif-zeroclick-vercel-app-video-frame-sampler-extract-evenly-0f465ad2/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from zero-gif-zeroclick.vercel.app](https://www.zero.xyz/host/zero-gif-zeroclick.vercel.app/llms.txt)
