{"uid":"cap_xlWbFPw6oYnJUWWD_kRpO","slug":"video-toolkit-evmoore-workers-dev-gemini-multimodal-video-analysis-68ea230b","name":"Gemini Multimodal Video Analysis","description":"Run a Gemini multimodal analysis on a video URL. Returns structured JSON when `response_schema` is provided, or freeform text when it is not.\n\nUse 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.\n\nConstraints:\n- `video_url` must be publicly fetchable over HTTPS.\n- Max video size: 200 MB. Longer / larger videos: split client-side first.\n- Synchronous: typical latency 20-90s depending on length. Cloudflare Worker subrequest budget caps total time at ~5min.\n\nExample body:\n```json\n{\n  \"video_url\": \"https://storage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4\",\n  \"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}).\",\n  \"response_schema\": {\n    \"type\": \"object\",\n    \"required\": [\n      \"style\",\n      \"subjects\",\n      \"on_screen_text\"\n    ],\n    \"properties\": {\n      \"style\": {\n        \"type\": \"string\"\n      },\n      \"subjects\": {\n        \"type\": \"array\",\n        \"items\": {\n          \"type\": \"string\"\n        }\n      },\n      \"on_screen_text\": {\n        \"type\": \"array\",\n        \"items\": {\n          \"type\": \"object\",\n          \"required\": [\n            \"t_seconds\",\n            \"text\"\n          ],\n          \"properties\": {\n            \"t_seconds\": {\n              \"type\": \"number\"\n            },\n            \"text\": {\n              \"type\": \"string\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n```","url":"https://video-toolkit.evmoore.workers.dev/v1/video/analyze","method":"POST","headers":{},"bodySchema":{"type":"object"},"responseSchema":{"type":"object"},"example":{"request":{"prompt":"Briefly describe what you see in this video.","video_url":"https://www.w3schools.com/html/mov_bbb.mp4"},"response":{"model":"gemini-2.5-flash","result":"A large, fluffy white rabbit is lying in a grassy field. A glowing purple butterfly lands on its nose, making it smile broadly. The butterfly flies away, and the rabbit stands up, appearing momentarily disappointed. Suddenly, a red apple appears on the ground in front of it, and the rabbit looks at it with a puzzled expression.","latencyMs":12331,"videoBytes":788493,"rawCandidate":{"candidates":[{"index":0,"content":{"role":"model","parts":[{"text":"A large, fluffy white rabbit is lying in a grassy field. A glowing purple butterfly lands on its nose, making it smile broadly. The butterfly flies away, and the rabbit stands up, appearing momentarily disappointed. Suddenly, a red apple appears on the ground in front of it, and the rabbit looks at it with a puzzled expression."}]},"finishReason":"STOP"}],"responseId":"--sYasrbCLWV_uMP0YqN0QM","modelVersion":"gemini-2.5-flash","usageMetadata":{"serviceTier":"standard","totalTokenCount":3831,"promptTokenCount":2961,"thoughtsTokenCount":803,"promptTokensDetails":[{"modality":"TEXT","tokenCount":11},{"modality":"VIDEO","tokenCount":2630},{"modality":"AUDIO","tokenCount":320}],"candidatesTokenCount":67}},"videoDurationSeconds":10}},"exampleRequest":{"prompt":"Briefly describe what you see in this video.","video_url":"https://www.w3schools.com/html/mov_bbb.mp4"},"tags":[],"displayCostAmount":"0.05","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","requiresHandshake":false,"reviewCount":3,"rating":{"score":"0.64","successRate":"0.67","reviews":3,"stars":"3.6","state":"rated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.05/call","primary":{"kind":"static","protocol":"mpp","network":"tempo","amountUsd":"0.05","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"mpp","network":"tempo","amountUsd":"0.05","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_Y7AmHugUNgJXEaLGDQUOf","protocol":"mpp","methodType":"crypto","chain":"tempo","mode":"charge","costAmount":"0.05","costPer":"request","priority":0,"asset":"0x20C000000000000000000000b9537d11c60E8b50","unit":"request","depositMicros":null,"planRef":"video-toolkit-analyze:v1:1"}],"brandName":"video-toolkit.evmoore.workers.dev","brandSlug":"video-toolkit-evmoore-workers-dev-mpp","brandBaseUrl":"https://video-toolkit.evmoore.workers.dev","brandDocsUrl":null,"whatItDoes":"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.","exampleAgentPrompt":"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.","exampleUseCases":null,"resultDescription":"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.","failureModes":["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"],"whenToPreferThis":"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.","instructions":null,"reviewSummary":"Gemini video analysis returns well-structured JSON for short, reachable clips — schema validation, scene description, and color extraction work accurately on small files. Timestamp precision degrades on longer multi-speaker videos, with speaker segments drifting 30–40 seconds late beyond the first few subjects. Failed fetches (e.g., 403 on blocked or expired URLs) are billed the same as successes, making URL reachability a critical pre-call check.","reviewSummaryHighlights":["Clean schema-validated JSON output on short clips under ~1MB","Fast turnaround: 11–15s latency for small videos","Clear error responses on fetch failures, aiding debugging"],"reviewSummaryConcerns":["Speaker/event timestamps drift significantly on longer or multi-subject videos — manual verification needed","Failed video fetches due to 403 or blocked URLs are still charged (~$0.05)","Edge-IP blocks on some public sources (e.g., googleapis.com) can cause silent fetch failures"],"reviewSummaryGeneratedAt":"2026-06-12T20:15:07.351Z","activationCount":15,"lastUsedAt":"2026-09-06T02:46:23.277Z","lastSuccessfullyRanAt":"2026-07-02T21:52:15.755Z","lastHealthCheckAt":"2026-09-15T03:45:38.811Z","isFirstParty":false}