Find any scene in your video library.
Mixpeek understands your video, image, audio, and documents, and returns the most accurate, timestamped results from the storage you already have. Every search teaches it: relevance keeps improving the more you and your agents use it.



Explore the live demos above with zero setup: then start here when you want Mixpeek running on your own data.
Bring your own vectors
You already have embeddingsMixpeek Vector Store (MVS): an agent-native vector store that runs on your object storage. Dense, sparse, and BM25 search. From $25/mo.
Connect your files
You have raw filesManaged indexing: point us at video, audio, or documents and we extract scenes, faces, OCR, transcripts, and embeddings. No pipeline to build. From $25/mo.
What the agent sees.
Every object you index becomes structured, searchable features: faces and objects in a frame, layout regions in a document, speakers in audio. Those are the same features an agent queries, and joins across modalities.
Hover or tap a card to preview the search it powers.
Person · 0.97Face · 0.95Handbag · 0.92Video · 00:04:12“A woman carrying a tan tote bag walks past a red storefront.”
transcript · “…meet me at the corner in five.”
HeaderChartBodySignaturePDF · resume.pdfHeader, body, charts, and signature detected as typed regions.
OCR · 1 header · 3 sections · 1 signature

Who spoke when, aligned to the transcript and the timeline.
audio · 2 speakers · matched at 00:01:30
One query across every modality.
Real questions rarely fit one feature. “Find the moment our CEO said guidance while the slide read Q4 outlook” needs a face, a spoken phrase, and on-screen text to line up at the same instant.
Mixpeek ties those features to the same object and timestamp, so an agent gets back the exact clip instead of three unrelated matches.
The CEO says “guidance” as the slide behind her reads “Q4 outlook.”
"What concepts exist in my data that nobody has labeled yet?"
No keyword, example, or prompt can answer that: they all assume you already know what you're looking for. Mixpeek clusters what belongs together on its own, so a natural hierarchy surfaces instead of a flat pile of tags: a taxonomy built from your data, organized around what your business actually cares about.
That taxonomy is your ground truth, and it feeds back. Every search, every correction sharpens the features, the clusters, and the relationships. Your competitors' metadata decays. Yours compounds.
- Creative moments644
- └Unboxing214
- └Hands-on close-up121
- └Reveal + reaction93
- └Night driving88
- └Product on white342
every search + correction feeds back → sharper features, tighter clusters, truer taxonomy
In production right now.
Search video by what happens on screen
Type what you want to see, not what someone said. Every query fans out across three vector spaces (one for the picture, one for what a vision model says is happening, one for the dialogue) and reciprocal-rank fusion merges them server-side. Results are scenes with timecodes, not whole files.
Try video search →Visual search across 45k artworks
Upload any image and find visually similar paintings across 45,000+ artworks, or just describe what you're looking for. Hybrid image and text retrieval, ranked with RRF.
Try gallery search →Face search across video
Drop in a headshot and find every clip a person appears in across 63 video ads and 2,600+ faces. Full trace for takedown evidence.
Try face search →One install. Two paths.
Most retrieval stacks mean gluing together a vector DB, a file pipeline, and an agent layer. Mixpeek is one install with two ways in.
Bring embeddings
Plugs into your existing stack.
Connect your storage, point Mixpeek at it, and every file becomes searchable by what's inside it. No migration, no code changes.

Mux
Every Mux upload becomes searchable by face, scene, transcript, and on-screen text, with no manual tagging.
View integration →
Backblaze B2
S3-compatible extraction at 1/5th the cost. Store on B2, extract with Mixpeek, zero egress fees.
View integration →Iconik
Every asset in your DAM becomes findable by what's inside it: scenes, faces, spoken words, on-screen text.
View integration →Pick your file types. Choose what to search by.
Video, image, audio, documents, text, or web: connect a bucket, pick the features you want to search by, and these pipelines run as they are. Every one is documented and open source in the extractor cookbook.
Video · Image · Audio · Text
Search by: Scenes, speech & visual similarity
Unified embeddings for video, audio, image, and text. Scene and silence chunking, Whisper transcription, thumbnails.
Multimodal (Video/Audio/Image)
Any file
Search by: Everything in one pass, any file
One extractor for image, video, audio, and documents. Auto-detects modality and applies the right pipeline.
Universal All-in-One
Image · PDF
Search by: Visual similarity, described in words
Dense 768-D image embeddings with Google SigLIP for text-to-image search in one contrastive space.
Image Embeddings (SigLIP)
Text
Search by: Meaning, not keywords, in any language
Multilingual dense text embeddings with E5-Large for semantic search and RAG out of the box.
Text Embeddings (E5-Large)
Any file
Search by: Whole objects: all their files as one
Embed ALL files of an object (images, PDFs, video, audio, text) into one 3072-D Gemini vector.
Multi-File Object Embeddings (Gemini)
Image · Video · PDF
Search by: The same face, across your whole library
Production face recognition that detects, aligns, and embeds faces to 512-D ArcFace vectors.
Face Identity (SCRFD + ArcFace)
What we shipped lately
- Aug 22APIGET /v1/retrievers/typeahead returns prefix suggestions for a search boxA search box that suggests as you type had to be assembled by the caller from separate queries. One namespace-scoped call now does it: pass q and get back a ranked, deduplicated list drawn from three sources run concurrently. Values of the metadata fields you name come from an index-backed facet with a per-value document count, so you can show how many documents sit behind each suggestion. Collection names come from a prefix match. Recent searches come from the caller's own executions, scoped per org and namespace, so they are permission-trimmed by construction and nobody sees another tenant's queries. Ranking puts recent searches first, then values by count, then collections. A source that fails is dropped and named in warnings rather than failing the whole request, so a slow facet degrades the suggestions instead of blanking the box. limit defaults to 10 and caps at 50.
- Aug 22APIA multi-stage retriever now has a total deadline, and degrades instead of timing outEvery stage was individually bounded at 25 seconds, but those ceilings compose: a pipeline with enough stages had no total bound until the gateway gave up at 600 seconds. A sweep across four namespaces found executions running 20 to 40 seconds, while the one namespace that had declared a per-stage cap held at about 5 seconds. The mechanism worked and you had to know to turn it on. Executions now carry a hard deadline, 60 seconds by default, which is above every completion observed in a 7-day window and an order of magnitude under the gateway. On breach the execution returns the results it has accumulated with a warning naming the knob, and skips the remaining stages, so a slow pipeline gives you partial results rather than a 504. Each stage's own ceiling and its degrade-retry are clamped so neither can outlive the deadline. Set execution_hard_timeout_ms to change it, or zero to disable.
- Aug 22APIdocuments/list and interactions/list return the number of rows you asked forBoth routes returned 10 rows for every limit value, in the query string or in the body, while reporting the real total in the response. Two separate mechanisms produced the same symptom. interactions/list re-read the raw page and page_size query params after the pagination layer had already merged query, flat body and nested body into one view, so every spelling of the parameter was parsed upstream and then discarded. documents/list forked on whether a body was present: with any body it read only the model's limit field, which defaults to 10, and lost both the query parameter and nested pagination. Both routes now read the merged view, an explicitly-set body value still wins over a query parameter, and the old silent clamp is gone.
- Aug 22APIA page limit above the maximum returns 422 instead of quietly capping at 1000Sending limit in a request body clamped an over-maximum value down to 1000, while sending the same value as a query parameter returned 422. So a caller asking for 5000 was told it worked and handed 1000 rows, and any paging logic built on that assumption walked past data without knowing. The body path now rejects the same values its query twin rejects: over the maximum, zero or negative (which the old clamp let through a bound that was supposed to stop them), and non-numeric (which used to raise a 500). The error names the bound and points at cursor pagination for larger reads. If you send a limit above 1000 today, expect a 422 where you previously received 1000 rows.
From $25/mo. Usage-based everything.
Two products, one model: a monthly minimum that acts as a floor, with usage above it billed at the same transparent rates. MVS is priced by the vector, Managed by the object.
Bring your own embeddings and pay by the vector. Dense, sparse, and BM25 search on your own object storage. Build starts at $25/mo with up to 1M vectors; Scale ($250/mo) covers 25M.
Start with MVSBring raw objects and pay by the object: credits at $0.001 cover extraction, embedding, indexing, enrichment, and retrieval. Build covers 100K objects/mo; Scale ($250/mo) covers 1M.
Start with ManagedDedicated infrastructure, self-hosted options, SSO, SLA, security reviews, and hands-on architecture support.
Talk to usCommon questions.
Do I have to move my data?
No. Mixpeek reads from your existing S3, GCS, R2, Azure, or S3-compatible bucket. Your storage stays the system of record, and nothing leaves your cloud.
How fast is retrieval?
Hybrid queries (dense, sparse, and BM25) return in well under 100ms p95, even with vectors persisted on object storage rather than held in RAM.
Do I need embeddings to start?
No. Bring your own vectors with MVS, or point Managed at raw files and it generates embeddings and features for you.
What can Managed extract?
Faces, scenes, transcripts, OCR, labels, and embeddings from video, images, audio, PDFs, and documents, all indexed at the object level.
Can I self-host?
Yes. Deploy in your own cloud (BYO-Cloud) with SOC 2-ready and HIPAA-ready controls, SSO, audit trails, and namespaces.
How does pricing work?
Both MVS and Managed start at $25/mo minimum. Usage counts toward the minimum: pay the greater of metered usage or the floor. MVS bills storage + queries; Managed bills in credits covering extraction, embedding, indexing, and retriever execution.
