# Gemini Multimodal Video Analysis

> Gemini Multimodal Video Analysis is a paid API for AI agents from video-toolkit.evmoore.workers.dev, paid per call via MPP, $0.05/call, status unknown (last checked 2026-09-15, last successful call 2026-07-02).

Analyzes a publicly accessible video URL using Google Gemini, returning structured JSON or freeform text based on a user-supplied prompt and optional response schema.

## Facts

- Endpoint: POST https://video-toolkit.evmoore.workers.dev/v1/video/analyze
- Price: $0.05/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-09-15
- Last successful call: 2026-07-02
- Success rate: 67% of calls made through Zero
- Rating: 3.6 / 5 from 3 reviews
- Activations on Zero: 15
- Provider: video-toolkit.evmoore.workers.dev
- Website: https://video-toolkit.evmoore.workers.dev
- Canonical page: https://www.zero.xyz/c/video-toolkit-evmoore-workers-dev-gemini-multimodal-video-analysis-68ea230b
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_xlWbFPw6oYnJUWWD_kRpO

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-toolkit-evmoore-workers-dev-gemini-multimodal-video-analysis-68ea230b -d '<json body>'
```

Example prompt: Analyze this video at https://storage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 and give me structured JSON with the visual style, a list of main subjects, and all on-screen text with timestamps in seconds.

## When to prefer this

Use this endpoint when you need to extract structured or descriptive information from a video using a custom prompt — especially when you want the output in a specific JSON shape via `response_schema`. Ideal for video summarization, chapter/timestamp detection, on-screen OCR, content moderation, and animation analysis tasks. Prefer this over image-analysis endpoints when the temporal dimension (scene progression, timestamps) matters, and over general LLM endpoints when the input is a video file rather than text.

## Known failure modes

- Video URL not publicly accessible over HTTPS — returns an error indicating the fetch failed
- Video exceeds 200 MB limit — returns a payload-too-large error
- Cloudflare Worker subrequest timeout exceeded (~5 min) for very long videos — returns a timeout error
- Invalid or malformed `response_schema` — Gemini may return unstructured text or a schema validation error
- Gemini API quota/rate limit hit — returns a 429 or upstream error
- Network error fetching the video URL — returns a connectivity error

## How this service works

Run a Gemini multimodal analysis on a video URL. Returns structured JSON when `response_schema` is provided, or freeform text when it is not.

Use this for: video summaries, chapter detection, animation reverse-engineering specs, OCR of on-screen text, scene timestamps, content moderation labels — anything you can express as a prompt over the video.

Constraints:
- `video_url` must be publicly fetchable over HTTPS.
- Max video size: 200 MB. Longer / larger videos: split client-side first.
- Synchronous: typical latency 20-90s depending on length. Cloudflare Worker subrequest budget caps total time at ~5min.

Example body:
```json
{
  "video_url": "https://storage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",
  "prompt": "Describe the visual style, the main subjects, and any on-screen text. Return JSON with keys: style, subjects (array), on_screen_text (array of {t_seconds, text}).",
  "response_schema": {
    "type": "object",
    "required": [
      "style",
      "subjects",
      "on_screen_text"
    ],
    "properties": {
      "style": {
        "type": "string"
      },
      "subjects": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "on_screen_text": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "t_seconds",
            "text"
          ],
          "properties": {
            "t_seconds": {
              "type": "number"
            },
            "text": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}
```

## Output

Returns a structured JSON object if a `response_schema` was provided, or a freeform text string if not. The shape of the JSON matches the caller-supplied schema — e.g. keys like `style`, `subjects`, `on_screen_text`, chapter markers, moderation labels, etc. — all derived from Gemini's multimodal understanding of the video content.

## Example request

```json
{
 "prompt": "Briefly describe what you see in this video.",
 "video_url": "https://www.w3schools.com/html/mov_bbb.mp4"
}
```

## 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/video-toolkit-evmoore-workers-dev-gemini-multimodal-video-analysis-68ea230b/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from video-toolkit.evmoore.workers.dev](https://www.zero.xyz/host/video-toolkit.evmoore.workers.dev/llms.txt)
