Documentation Index
Fetch the complete documentation index at: https://docs.mixpeek.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Supabase Storage exposes an S3-compatible API that Mixpeek talks to directly. You can authenticate with dedicated S3 access keys (recommended) or with a project’s
anon + service_role JWTs in session-token mode.Overview
The Supabase integration lets Mixpeek pull objects from any Supabase Storage bucket into your Mixpeek buckets for processing. Each file becomes a Mixpeek bucket object, automatically batched into the collections that source the bucket. Mixpeek derives the endpoint from your project reference — the short URL hash in your project’s Dashboard URL (https://<ref>.supabase.co). You do not need to manage endpoints by hand.
Prerequisites
- A Supabase project with at least one Storage bucket.
- Either:
- S3 access keys (recommended): a dedicated key pair generated in Project Settings → Storage → S3 Access Keys, or
- Session-token credentials: the project’s
anonkey andservice_rolekey from Project Settings → API.
Configuration
Connection-Level Fields
| Field | Required | Description |
|---|---|---|
project_ref | Yes | Supabase project reference (the short hash in https://<ref>.supabase.co) |
region | Yes | Region that hosts the project (e.g., us-east-2, eu-west-1) |
credentials.type | Yes | access_key or session_token |
credentials.access_key_id | for access_key | S3 access key ID generated in Supabase |
credentials.secret_access_key | for access_key | S3 secret access key — encrypted at rest |
credentials.anon_key | for session_token | Project anon JWT |
credentials.service_role_key | for session_token | Project service_role JWT — encrypted at rest |
Sync-Level Fields
| Field | Required | Description |
|---|---|---|
source_path | Yes | <supabase-bucket>/<optional-prefix> — e.g. user-uploads/photos/ |
sync_mode | No | continuous, one_time, or scheduled |
polling_interval_seconds | No | Seconds between scheduled runs |
include_patterns | No | Glob patterns to include (e.g. ["*.mp4", "*.jpg"]) |
exclude_patterns | No | Glob patterns to exclude |
modified_since | No | ISO 8601 timestamp; only sync files modified after this date |
Setup
Generate credentials in Supabase
Option A — Dedicated S3 keys (recommended):
- Open your project in the Supabase Dashboard.
- Go to Project Settings → Storage → S3 Access Keys.
- Click New access key, give it a name (e.g.
mixpeek-sync) and copy theaccess_key_id+secret_access_keyimmediately — the secret is shown only once.
- Go to Project Settings → API.
- Copy the
anonkey and theservice_rolekey. Treatservice_rolelike a password — it has full access to Storage.
Create the storage connection in Mixpeek
credentials block:Advanced Configuration
File Filtering
Incremental Sync
Only sync files added or modified after a specific date:Source Path Format
| Format | Example | Description |
|---|---|---|
bucket/prefix | user-uploads/photos/ | Preferred — Supabase bucket + prefix |
s3://bucket/prefix | s3://user-uploads/photos/ | S3-style URI also accepted |
bucket | user-uploads | Entire Supabase bucket |
Sync Modes
| Mode | Description | When to Use |
|---|---|---|
continuous | Polls every polling_interval_seconds | Active uploads, near-real-time ingestion |
one_time | Single import, then completes | Historical backfills, migrations |
scheduled | Runs on a fixed interval | Predictable batch cadence |
Troubleshooting
Connection test returns 403 / SignatureDoesNotMatch
Connection test returns 403 / SignatureDoesNotMatch
- With access_key mode: the keys must come from Project Settings → Storage → S3 Access Keys, not the general Supabase API keys.
- With session_token mode: verify
anon_keyandservice_role_keyare both JWTs from the same project and thatproject_refmatches the project they belong to. - Confirm
regionmatches the region shown in the Supabase Dashboard.
NoSuchBucket when triggering sync
NoSuchBucket when triggering sync
The Supabase bucket in
source_path does not exist or your credentials cannot see it:- Double-check the bucket name (case-sensitive).
- For access keys with bucket scope, confirm the key grants access to the bucket you’re syncing.
No files synced from a populated bucket
No files synced from a populated bucket
- The
source_pathprefix is too narrow — widen it, or drop the trailing prefix. include_patternsmay exclude everything — remove them temporarily to see all files.- Check the sync run’s
matchedcounter in the job log to confirm discovery.
Session-token auth works locally but fails in Mixpeek
Session-token auth works locally but fails in Mixpeek
Some Supabase projects rotate
anon/service_role keys during upgrades. Refresh both JWTs from Project Settings → API and update the connection.
