Source adapters let external systems push data into Mixpeek buckets via webhooks. When an event fires in your upstream platform (a video finishes encoding, an asset is published, a record is created), the platform sends a webhook to Mixpeek, which automatically creates a bucket object with the right metadata and file references. This is the push-based complement to syncs, which poll external systems on a schedule.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.
How It Works
- You configure a source adapter on a bucket via
PATCH /v1/buckets/{bucket_id} - Mixpeek returns a
webhook_secretand an ingest URL - You point your platform’s webhook settings at the ingest URL
- When events arrive, the adapter verifies the signature, extracts metadata, resolves the file URL, and creates an object
- Depending on the batching mode, objects are processed immediately or buffered for batch submission
Supported Adapter Types
| Adapter | Use Case |
|---|---|
mux | Video assets from Mux — listens for video.asset.ready events, resolves playback URLs and metadata |
supabase | Database rows from Supabase — listens for INSERT/UPDATE webhooks, supports writeback of results via PostgREST |
generic_webhook | Any system that sends JSON webhooks — you configure dot-path extraction for ID, file URL, and metadata fields |
Configuration Reference
Source adapters use the same org-level connections as syncs. Create a connection once, then reference it from any number of adapters or syncs.Create a connection (once per provider account)
connection_id (e.g., conn_abc123).webhook_secret and the ingest URL:
Fields
| Field | Required | Default | Description |
|---|---|---|---|
adapter_type | Yes | — | mux, supabase, or generic_webhook |
enabled | No | true | Enable or disable the adapter without removing configuration |
connection_id | Recommended | — | Reference to an org-level connection (conn_...). Credentials are encrypted at rest and resolved at runtime. See Connections. |
connection.credentials | Fallback | {} | Inline credentials for simple setups. Use connection_id instead for production — inline credentials are stored unencrypted. |
event_filter.event_types | No | Adapter default | Array of event type strings to process. Unmatched events return handled: false |
field_mapping | No | {} | Map of dot-paths in the external payload to bucket schema field names |
blob_source.file_field | No | — | Dot-path to the downloadable file URL in the adapter result metadata |
blob_source.blob_type | No | video | Blob type: video, image, audio, text, json |
blob_source.target_property | No | — | Bucket schema property name where the blob is stored |
batching.mode | No | time_window | immediate, time_window, or count (see Batching) |
batching.window_seconds | No | 30 | Buffer window for time_window mode (5–300 seconds) |
batching.max_batch_size | No | 100 | Max events per batch (1–1000) |
batching.auto_submit | No | true | Automatically submit batch for processing after flush |
dedup_key | No | — | Dot-path in the payload used to extract a unique ID for deduplication |
Field Mapping
Field mapping translates external metadata into your bucket schema. Keys are dot-paths into the external payload or adapter result; values are your bucket schema field names.data.nested.field) and are evaluated against the metadata returned by the adapter after it fetches or extracts asset information.
Batching
Source adapters support three batching modes:| Mode | Behavior |
|---|---|
immediate | Each event creates an object and optionally triggers processing inline. Lowest latency. |
time_window | Events buffer for window_seconds, then flush as a batch. Efficient for bursty sources. |
count | Events buffer until max_batch_size is reached, then flush. Predictable batch sizes. |
time_window and count modes, a background worker flushes buffered events periodically. When auto_submit is true, the flushed objects are automatically submitted as a batch for processing.
Deduplication
Setdedup_key to a dot-path that uniquely identifies events (e.g., data.id for the external asset ID). The adapter tracks processed events and returns status: "duplicate" for repeated deliveries instead of creating duplicate objects.
Writeback
Some source adapters support writeback — pushing processing results back to the source system after an alert fires or a batch completes. This closes the loop so the source system stays the single source of truth. Writeback is configured in thewriteback key inside source_adapter:
| Adapter | Writeback method |
|---|---|
supabase | PostgREST PATCH to the source table |
generic_webhook | HTTP POST to a writeback_url |
mux | Not supported |
Signature Verification
Every source adapter verifies inbound requests to prevent unauthorized event injection:- Provider-specific adapters (Mux) verify using the provider’s native HMAC signature scheme (e.g.,
Mux-Signatureheader) - All adapters support a fallback
X-Webhook-Secretheader check against thewebhook_secretreturned when you configured the adapter - Requests with invalid or missing signatures return
401 Unauthorized
Monitoring
Check adapter status and event statistics:Example: Mux Video Ingestion
Configure a bucket to automatically ingest Mux videos as they finish encoding:Point Mux webhooks at the ingest URL
In the Mux Dashboard under Settings > Webhooks, add a new webhook:
- URL:
https://api.mixpeek.com/v1/buckets/{bucket_id}/source-adapter/ingest - Events:
video.asset.ready
X-Webhook-Secret header for verification, configure your webhook sender to include it.Syncs vs Source Adapters
| Aspect | Syncs | Source Adapters |
|---|---|---|
| Direction | Mixpeek polls the external system | External system pushes to Mixpeek |
| Latency | Polling interval (seconds to minutes) | Near-real-time (event-driven) |
| Setup | Configure credentials + schedule | Configure credentials + point webhooks |
| Best for | Bulk imports, systems without webhooks | Real-time ingestion, event-driven workflows |
Related
- Buckets — bucket creation and schema design
- Object Storage Syncs — pull-based ingestion
- Webhooks — outbound event notifications from Mixpeek
- Batch Processing — processing objects after ingestion

