# FrameQuery > AI-powered video search for professionals. Index your footage once, search it forever. FrameQuery is a hybrid video analysis and search platform. It extracts frames and audio on your device and sends only those to the cloud for AI processing (transcription, object detection, scene detection, and scene captions), then stores the resulting index locally on your machine. Face recognition and voice recognition run entirely on-device. Once indexed, you can search across all your footage in milliseconds - for free, forever. Your originals never leave your machine, and the extracted data is discarded the moment analysis completes. ## Key Features - **Search inside videos**: Find any scene, word, face, or object across your entire video library - **Hybrid architecture**: Frames and audio are extracted locally and processed in the cloud, search index stored locally. Face and voice recognition run on-device. Search offline, back it up, use it years from now - **50+ formats**: R3D, BRAW, ProRes, H.264, MKV, and more via FFmpeg - **Transcription & diarisation**: Who said what, and when - **Object & scene detection**: Bounding boxes, shot types, angles, and captions - **Face recognition**: Identify people across your footage - **Collaborative review**: Frame annotations, timecoded comments, approval tracking - **Editor export**: FCPXML, EDL, LosslessCut CSV - **API (public beta)**: Scene captions and speaker-labelled transcripts for video and audio files over a REST API (see API documentation below) ## Pricing Model - **Search is always free** - searching your local index costs nothing - Usage-based pricing for cloud processing only - Desktop plans: Free, Starter ($19/mo), Pro ($45/mo billed annually or $54/mo monthly), Max ($190/mo billed annually or $228/mo monthly), Studio (custom - 300+ hrs, bulk indexing - book a call at https://calendly.com/flynn-framequery/quick-chat) - Free plan: search footage you have already indexed, plus metadata search (filename, folder, codec, resolution) on any video. AI analysis (transcription, scene descriptions, object detection, search embeddings) uses the indexing hours on paid plans - Visual search uses SigLIP (a CLIP-style vision-language model) for frame embeddings and MiniLM for transcript embeddings; both run on-device - API pricing, per footage-hour and per completed stage: vision (scene captions) $1.15, transcript $0.35 per audio track, both $1.50 on standard formats; camera RAW (R3D, BRAW, ARRIRAW) $1.65 vision, $0.85 transcript, $2.50 both - API volume rates, applied marginally to footage above 500 footage-hours in a UTC calendar month: $0.80 / $0.20 / $1.00 on standard formats, $1.30 / $0.70 / $2.00 on camera RAW - API billing: per second with a 30-second minimum per job; failed or skipped stages are never charged; prepaid credit packs of $10, $50 or $100 through Polar (1 credit = 1 US cent), or pay-as-you-go billed monthly in arrears for enterprise accounts. Live price table: https://api.framequery.com/v1/api/pricing ## API documentation The FrameQuery API (public beta, base URL https://api.framequery.com/v1/api) runs the same server pipeline as the desktop app: send a video or audio file, by upload or URL, and get back timestamped scene captions (object labels, colour palette, shot type and angle) and a speaker-labelled transcript, in one asynchronous job. It does not do search, face recognition or NLE export; those are desktop-app features. Every page below is plain Markdown; https://www.framequery.com/llms-full.txt holds all of them in one file. Instructions for agents: - Prefer the Markdown pages below. Append `.md` to any docs URL for clean Markdown. - The machine-readable contract is https://api.framequery.com/v1/api/openapi.json (no key needed). When a page and the contract disagree, the contract wins. - A job is finished when `state` is `completed`, `failed`, `cancelled` or `expired`. Ignore the legacy `status` field. - Times are seconds (float) from the start of the media. JSON keys are camelCase. - Never put an API key in client-side code; read it from `FRAMEQUERY_API_KEY`. ## API docs: Get started - [FrameQuery API](https://www.framequery.com/docs.md): Send a video or audio file and get back timestamped scene captions and a speaker-labelled transcript. One asynchronous job, priced per footage-hour, charged only for stages that complete. - [Agent quickstart](https://www.framequery.com/docs/agent-quickstart.md): The brief for an LLM agent writing code against the FrameQuery API. Auth, the three calls, exact JSON shapes and which errors to retry. - [Quickstart](https://www.framequery.com/docs/quickstart.md): Process your first video in a few minutes. Get a key, create a job from a URL or a local file, wait for it, and read the transcript and scenes. - [Authentication and keys](https://www.framequery.com/docs/authentication.md): API keys are Polar license keys that start with fq_live_. How to get one, send it, keep it server-side and rotate it. ## API docs: Build - [Jobs](https://www.framequery.com/docs/jobs.md): Create jobs from a URL, a direct upload or a batch of clips. Processing modes, idempotency, metadata, multi-track audio, listing and cancelling. - [Job lifecycle and state](https://www.framequery.com/docs/job-lifecycle.md): How a job moves from creation to a terminal state, what each stage reports, how to poll, and every field of the Job object. - [Results](https://www.framequery.com/docs/results.md): Read transcripts as JSON, SRT, WebVTT or plain text, and scenes with captions, objects, palettes and shot types. What "not ready" and "unavailable" mean. - [Webhooks](https://www.framequery.com/docs/webhooks.md): Get a signed HTTPS callback when a job completes, fails or is cancelled. Payload, Standard Webhooks signature verification, retries, secret rotation, testing and the delivery log. ## API docs: Reference - [Formats and limits](https://www.framequery.com/docs/formats.md): Anything FFmpeg can decode, audio-only files, and camera RAW where enabled. Size and duration limits per tier, and the live GET /formats endpoint. - [Pricing and billing](https://www.framequery.com/docs/pricing.md): Per-stage prices per footage-hour, charged per second and only for stages that complete. Prepaid credits through Polar, the estimate endpoint, worked examples and an honest comparison. - [Errors](https://www.framequery.com/docs/errors.md): Every API error code with its HTTP status, what it means, what to do and whether to retry. Plus the job and stage failure codes. - [Rate limits](https://www.framequery.com/docs/rate-limits.md): Per-account request limits per minute, the active-job cap, the rate-limit headers and how to back off. - [API reference](https://www.framequery.com/docs/api.md): Every endpoint of the FrameQuery API v1 with its parameters, a copy-pasteable curl command and the shape it returns. The OpenAPI 3.1 document is the machine-readable version. ## API docs: Tools - [SDKs](https://www.framequery.com/docs/sdks.md): Official Python and TypeScript SDKs (0.2) with uploads, polling, retries, typed errors and webhook verification. Go, Rust and Ruby SDKs at 0.1. - [MCP server](https://www.framequery.com/docs/mcp.md): A Model Context Protocol server so Claude, Cursor and other MCP clients can process video with FrameQuery. Coming with SDK 0.2. - [Changelog and beta status](https://www.framequery.com/docs/changelog.md): What the public beta includes, what it does not, known limits, deprecations, and dated changes to the API contract. ## Links - Website: https://www.framequery.com - Blog: https://www.framequery.com/blog - API Docs: https://www.framequery.com/docs - Compatibility: https://www.framequery.com/compatibility - Download: https://www.framequery.com/welcome ## Contact - Email: support@framequery.com - GitHub: https://github.com/FrameQuery ## Markdown for AI agents Every blog post and every API docs page is also available as plain Markdown by appending `.md` to its URL, for example `https://www.framequery.com/blog/best-video-search-tools.md` or `https://www.framequery.com/docs/quickstart.md`. The docs index is `https://www.framequery.com/docs.md`. The HTML page stays canonical.