Skip to main content
This guide walks the full path from an S3 bucket of videos to a working search index: create a storage connection, point a sync at your S3 prefix, and let Mixpeek ingest and process new files automatically.
This is the automated/continuous path. To upload a single file by URL instead, see Video Understanding. For the AWS IAM policy and role setup, see AWS S3.

Prerequisites

  • An S3 bucket containing video files.
  • AWS credentials — either an access key pair or an IAM role ARN (see AWS S3 for the IAM policy).
  • A Mixpeek API key and namespace.

1. Create a storage connection

A connection stores your S3 credentials once and can be reused across buckets. Credentials are validated before the connection is saved (test_before_save defaults to true).
The response includes a connection_id (e.g. conn_abc123). Verify connectivity any time with:
Connections are org-level and not namespace-scoped — no X-Namespace header is needed for connection calls. Buckets, syncs, and collections below are namespace-scoped, so they require X-Namespace.

2. Create a bucket

The bucket declares the schema for each synced object. Use the Mixpeek type video for the file field.

3. Create a collection

One collection with multimodal_extractor produces both visual (vertex_multimodal_embedding) and speech (multilingual_e5_large_instruct_v1) features per segment.

4. Sync the S3 prefix into the bucket

A sync watches an S3 path and ingests matching files. With sync_mode: "continuous", Mixpeek polls for new files and ingests them automatically; initial_only runs a single backfill.
The response includes a sync_config_id (e.g. sync_xyz).

5. Run and monitor the sync

continuous syncs start on their own, but you can trigger the first run immediately and watch its job:
The sync ingests files as objects and (unless skip_batch_submission is set) submits them for processing automatically — so your multimodal_extractor collection populates without any extra step. Vectors are searchable within 10–30s of each batch completing.
Create a retriever over the collection and execute it:

Keep it fresh

Because the sync is continuous, new videos dropped into the S3 prefix are ingested and indexed automatically. To re-run clustering or enrichment on a schedule as new content lands, see Triggers.

Other storage providers

The same connection → bucket → sync flow works for every supported provider — swap provider_type and provider_config:

Google Cloud Storage

Azure Blob

Cloudflare R2