Skip to main content
Mixpeek reads directly from your existing object storage — no migration, no ETL. Connect once and set up sync configurations to automatically ingest new files.

Supported Providers

ProviderAuth MethodS3-Compatible
AWS S3IAM User or IAM RoleNative
Google Cloud StorageService Account JSON KeyNo
Azure Blob StorageAccess Key or Managed IdentityNo
Cloudflare R2R2 API TokenYes
Backblaze B2Application KeyYes
WasabiAccess KeyYes
TigrisAccess KeyYes
BoxOAuthNo
MuxAPI TokenNo
SupabaseService KeyYes

Setup Pattern

All providers follow the same three steps:
1

Create credentials

Create a read-only credential in your cloud provider (IAM user, service account, API token) with list and read permissions on your bucket.
2

Add a storage connection

curl -X POST "https://api.mixpeek.com/v1/buckets/$BUCKET_ID/syncs" \
  -H "Authorization: Bearer $MIXPEEK_API_KEY" \
  -H "X-Namespace: $NAMESPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "s3",
    "connection": {
      "bucket_name": "my-source-bucket",
      "region": "us-east-1",
      "credentials": {
        "access_key_id": "AKIA...",
        "secret_access_key": "..."
      }
    },
    "sync_config": {
      "source_path": "/videos/",
      "sync_mode": "incremental",
      "polling_interval": 3600
    }
  }'
3

Trigger first sync

curl -X POST "https://api.mixpeek.com/v1/buckets/$BUCKET_ID/syncs/$SYNC_ID/trigger" \
  -H "Authorization: Bearer $MIXPEEK_API_KEY" \
  -H "X-Namespace: $NAMESPACE_ID"
After the initial sync, new files are picked up automatically at the configured polling interval.

Best Practices

  • Use separate buckets or prefixes per data domain (videos, images, documents) for cleaner pipelines
  • Set up incremental sync to avoid reprocessing existing files
  • Use file patterns (*.mp4, *.pdf) to filter which files get ingested
  • Grant read-only access — Mixpeek never writes to your storage
Sync API reference →