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.
Overview
Iconik is a cloud-native media asset management platform. By connecting Iconik to Mixpeek, you can automatically sync your media library — enabling search, classification, and analysis across video, image, and audio assets. Iconik uses the same connection sync pattern as all other Mixpeek storage integrations. Mixpeek polls Iconik for assets, downloads proxy files, and creates bucket objects with full metadata. Optionally, you can configure webhooks for real-time delete and update events.Prerequisites
- An Iconik account with assets
- An Iconik App ID and Auth Token with read access to assets, proxies, and files
- A Mixpeek account with an active namespace
Configuration
Connection-level fields
| Field | Required | Description |
|---|---|---|
auth_token | Yes | Iconik authentication token (JWT or API token) |
app_id | Yes | Iconik application ID (UUID format) |
webhook_secret | No | Shared signing secret for inbound Iconik webhooks. Required only if you want Mixpeek to cascade-delete objects when assets are deleted in Iconik (see Webhooks: delete and update). |
Sync-level fields
| Field | Required | Default | Description |
|---|---|---|---|
source_path | No | iconik:// | Sync all assets, or filter by collection |
sync_mode | No | continuous | initial_only or continuous |
polling_interval_seconds | No | 300 | How often to check for new/modified assets (continuous mode) |
skip_duplicates | No | true | Skip assets already synced with the same modification time |
reconcile_on_sync | No | false | Remove objects whose source assets no longer exist in Iconik |
provider_filters | No | — | Filter by collection IDs, asset status, or media type |
Setup
Create Iconik API credentials
- In the Iconik admin panel, go to Admin > Integrations > Applications
- Click Create Application
- Copy the App ID and Auth Token — you’ll need both for the Mixpeek connection
Create the connection in Mixpeek
In the Mixpeek Studio, go to Settings > Storage Connections > Add Connection and select Iconik.Or via the API:Save the returned
connection_id.Create a bucket with Iconik sync
Create a bucket and configure it to sync from your Iconik connection:
Collection traversal and directory mapping
When you specifycollection_ids in provider_filters, the connector recursively traverses the Iconik collection hierarchy (up to 10 levels deep) and maps the collection tree to a directory_path on each synced object.
For example, an Iconik collection structure like:
directory_path values like:
Kitsch/01 Client Essentials/08 OutrosKitsch/02 UGC Footage/01 Talent (Before)/01 MatureKitsch/03 High-End Footage
source_metadata.directory_path and can be used for filtering in retrievers.
Glob filtering with path_patterns
Use path_patterns in provider_filters to include only assets whose directory_path matches one or more glob patterns. Patterns use standard fnmatch syntax and are case-insensitive.
| Pattern | Matches |
|---|---|
*UGC* | Any path containing “UGC” |
Kitsch/01* | All paths under “01 Client Essentials” |
*Talent* | Before and After talent folders |
Kitsch/*/01* | First subfolder in each top-level category |
*Outros* | Only the Outros folder |
Iconik metadata on objects and retriever results
When the connector syncs an Iconik asset into a bucket, it captures metadata from two sources and exposes them assource_metadata on the resulting bucket object.
Asset-level fields
These come from the Iconik asset record directly:| Field | Description |
|---|---|
iconik_asset_id | Iconik asset UUID |
title | Asset title |
status | Asset status (e.g., ACTIVE) |
media_type | Media type (video, image, audio) |
date_created | Asset creation timestamp |
date_modified | Last modification timestamp |
date_imported | When the asset was imported into Iconik |
is_online | Whether the asset is currently online |
archive_status | Archive state of the asset |
analyze_status | Iconik analysis status |
category | Asset category |
type | Iconik object type (e.g., ASSET) |
external_id | External reference ID |
created_by_user | Iconik user ID who created the asset |
updated_by_user | Iconik user ID who last modified the asset |
directory_path | Collection hierarchy path (see above) |
thumbnail_url | Keyframe/thumbnail URL (if available) |
proxy_url | Pre-signed proxy download URL |
Custom metadata from views
The connector automatically discovers all metadata views configured in your Iconik workspace and fetches custom metadata for each asset across all views. Fields are flattened from Iconik’s nestedfield_values format into simple key-value pairs.
Common fields (depending on your Iconik configuration):
| Field | Description |
|---|---|
Keywords | Tag cloud / keywords |
ClientName | Client or brand name |
ClientCode | Client code |
TalentName | Talent/creator name |
SKUs | Product SKUs |
Bundle | Product bundle |
FolderNamePaths | Iconik folder path metadata |
HandlerName | Handler/producer name |
Gender, HairType, Color | Talent attributes |
metadata_view_id in the connection’s provider_config:
File resolution
The Iconik connector resolves downloadable files in priority order:- Proxy URL — pre-signed download URL from
GET /files/v1/assets/{id}/proxies/ - Original file URL — download URL from
GET /files/v1/assets/{id}/formats/
Webhooks: delete and update
Mixpeek handles Iconik webhook events to keep your index in sync in real time, without waiting for the next poll cycle.How it works
- Iconik POSTs events to a Mixpeek endpoint that includes your
connection_id. - Mixpeek verifies the
X-Iconik-Signatureheader against thewebhook_secretstored on that connection. assets.asset_deleted— Mixpeek finds every object synced from that Iconik asset and deletes them, cascading throughOBJECT_DELETEDto remove derived documents from your collections.assets.asset_updated— Mixpeek re-evaluates the asset against each sync config’smetadata_filters. If the asset no longer matches andreconcile_on_syncis enabled, the corresponding objects are unindexed.assets.asset_created— Acknowledged; the asset will be picked up on the next sync poll.
Setup
Add a webhook secret to the connection
Pick any high-entropy string (32+ chars) and store it as
webhook_secret in the Iconik connection’s credentials. You can set it at create time or patch an existing connection.cURL
Register the webhook in Iconik
In the Iconik admin panel:
- Go to Admin > Integrations > Webhooks
- Click Create Webhook
- Set the URL to
https://api.mixpeek.com/v1/webhooks/iconik/{connection_id}— replace{connection_id}with the Mixpeek connection ID - Subscribe to events: Asset Created, Asset Updated, Asset Deleted
- Save the webhook
Signature format
Mixpeek verifies inbound Iconik webhooks using HMAC-SHA256:- Header:
X-Iconik-Signature: <hex_hmac_sha256> - HMAC computed as
HMAC_SHA256(webhook_secret, raw_body)over the exact raw bytes of the request body. - Signatures are compared with
hmac.compare_digestto avoid timing attacks.
Response codes
| Status | Meaning |
|---|---|
200 | Event received. handled is true for delete/update/create, false for unrecognized event types. |
400 | Connection has no webhook_secret configured, or payload is not valid JSON. |
401 | X-Iconik-Signature is missing, malformed, or the HMAC doesn’t match. |
404 | connection_id in the URL is not an Iconik connection. |
Modification detection
Whenskip_duplicates is true (default), re-syncing the same Iconik account skips assets whose date_modified hasn’t changed since the last sync. This makes continuous syncing efficient — only new or modified assets are re-processed.
When skip_duplicates is false, every asset is re-downloaded and re-processed on each sync cycle, replacing existing objects with fresh ones.
Reconciliation
Whenreconcile_on_sync is enabled, each sync cycle checks whether previously synced assets still exist in Iconik. Assets that have been deleted from Iconik are automatically removed from your bucket.
Provider filters
Filter which Iconik assets get synced usingprovider_filters:
| Filter | Description |
|---|---|
collection_ids | Only sync assets from specific Iconik collections |
status | Filter by asset status (e.g., ACTIVE) |
media_type | Filter by media type (video, image, audio) |
Sync modes
| Mode | Description |
|---|---|
initial_only | Sync all current assets once |
continuous | Poll for new/modified assets at the configured interval |
Troubleshooting
401 Unauthorized on connection test
401 Unauthorized on connection test
Assets not appearing in sync
Assets not appearing in sync
Only assets with proxy files or original files available are synced. Check that your Iconik credentials have read access to the files API (
GET /files/v1/assets/{id}/proxies/).Duplicate objects appearing
Duplicate objects appearing
Ensure
skip_duplicates is set to true on your sync config. This deduplicates assets by their Iconik asset ID and modification timestamp.Deleted assets still in bucket
Deleted assets still in bucket
Enable
reconcile_on_sync on your sync config, or configure webhooks to handle assets.asset_deleted events for real-time cleanup.Webhook 401 errors
Webhook 401 errors
The
X-Iconik-Signature header doesn’t match. Verify the webhook_secret on your Mixpeek connection matches what Iconik is using to sign payloads.Related
- Buckets — How bucket sync works
- Webhooks — How outbound Mixpeek webhooks work
- Storage Connections API — Full API reference

