curl --request POST \
--url https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Namespace: <api-key>' \
--data '
{
"include_buckets": [
"<string>"
],
"include_collections": [
"<string>"
],
"object_ids": [
"<string>"
],
"source_filters": {
"AND": [
{
"field": "status",
"operator": "eq",
"value": "pending"
}
]
},
"reembed": {
"dry_run": true,
"outputs": [
"transcription_embedding"
]
}
}
'import requests
url = "https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger"
payload = {
"include_buckets": ["<string>"],
"include_collections": ["<string>"],
"object_ids": ["<string>"],
"source_filters": { "AND": [
{
"field": "status",
"operator": "eq",
"value": "pending"
}
] },
"reembed": {
"dry_run": True,
"outputs": ["transcription_embedding"]
}
}
headers = {
"Authorization": "Bearer <token>",
"X-Namespace": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-Namespace': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
include_buckets: ['<string>'],
include_collections: ['<string>'],
object_ids: ['<string>'],
source_filters: {AND: [{field: 'status', operator: 'eq', value: 'pending'}]},
reembed: {dry_run: true, outputs: ['transcription_embedding']}
})
};
fetch('https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'include_buckets' => [
'<string>'
],
'include_collections' => [
'<string>'
],
'object_ids' => [
'<string>'
],
'source_filters' => [
'AND' => [
[
'field' => 'status',
'operator' => 'eq',
'value' => 'pending'
]
]
],
'reembed' => [
'dry_run' => true,
'outputs' => [
'transcription_embedding'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Namespace: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger"
payload := strings.NewReader("{\n \"include_buckets\": [\n \"<string>\"\n ],\n \"include_collections\": [\n \"<string>\"\n ],\n \"object_ids\": [\n \"<string>\"\n ],\n \"source_filters\": {\n \"AND\": [\n {\n \"field\": \"status\",\n \"operator\": \"eq\",\n \"value\": \"pending\"\n }\n ]\n },\n \"reembed\": {\n \"dry_run\": true,\n \"outputs\": [\n \"transcription_embedding\"\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-Namespace", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger")
.header("Authorization", "Bearer <token>")
.header("X-Namespace", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"include_buckets\": [\n \"<string>\"\n ],\n \"include_collections\": [\n \"<string>\"\n ],\n \"object_ids\": [\n \"<string>\"\n ],\n \"source_filters\": {\n \"AND\": [\n {\n \"field\": \"status\",\n \"operator\": \"eq\",\n \"value\": \"pending\"\n }\n ]\n },\n \"reembed\": {\n \"dry_run\": true,\n \"outputs\": [\n \"transcription_embedding\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-Namespace"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"include_buckets\": [\n \"<string>\"\n ],\n \"include_collections\": [\n \"<string>\"\n ],\n \"object_ids\": [\n \"<string>\"\n ],\n \"source_filters\": {\n \"AND\": [\n {\n \"field\": \"status\",\n \"operator\": \"eq\",\n \"value\": \"pending\"\n }\n ]\n },\n \"reembed\": {\n \"dry_run\": true,\n \"outputs\": [\n \"transcription_embedding\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"task_id": "<string>",
"collection_id": "<string>",
"total_tiers": 123,
"message": "<string>",
"batch_id": "<string>",
"source_bucket_ids": [
"<string>"
],
"source_collection_ids": [
"<string>"
],
"object_count": 123,
"batch_ids": [
"<string>"
],
"task_ids": [
"<string>"
],
"batch_count": 123,
"document_count": 123
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}Trigger Collection Processing
Process data through a collection - works for both bucket-sourced and collection-sourced collections.
For bucket-sourced collections:
Discovers objects from source bucket(s), creates a batch, and submits for processing.
Use include_buckets to limit which source buckets to process from.
For collection-sourced collections:
Processes existing documents from upstream collection(s).
Use include_collections to limit which source collections to process from.
Filtering:
source_filters: Field-level filters using LogicalOperator format- Example:
{"AND": [{"field": "status", "operator": "eq", "value": "pending"}]} - For specific objects:
{"AND": [{"field": "object_id", "operator": "in", "value": ["obj_1", "obj_2"]}]}
Returns:
- batch_id: Track progress via GET /batches/
- task_id: Monitor via GET /tasks/
curl --request POST \
--url https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Namespace: <api-key>' \
--data '
{
"include_buckets": [
"<string>"
],
"include_collections": [
"<string>"
],
"object_ids": [
"<string>"
],
"source_filters": {
"AND": [
{
"field": "status",
"operator": "eq",
"value": "pending"
}
]
},
"reembed": {
"dry_run": true,
"outputs": [
"transcription_embedding"
]
}
}
'import requests
url = "https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger"
payload = {
"include_buckets": ["<string>"],
"include_collections": ["<string>"],
"object_ids": ["<string>"],
"source_filters": { "AND": [
{
"field": "status",
"operator": "eq",
"value": "pending"
}
] },
"reembed": {
"dry_run": True,
"outputs": ["transcription_embedding"]
}
}
headers = {
"Authorization": "Bearer <token>",
"X-Namespace": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-Namespace': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
include_buckets: ['<string>'],
include_collections: ['<string>'],
object_ids: ['<string>'],
source_filters: {AND: [{field: 'status', operator: 'eq', value: 'pending'}]},
reembed: {dry_run: true, outputs: ['transcription_embedding']}
})
};
fetch('https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'include_buckets' => [
'<string>'
],
'include_collections' => [
'<string>'
],
'object_ids' => [
'<string>'
],
'source_filters' => [
'AND' => [
[
'field' => 'status',
'operator' => 'eq',
'value' => 'pending'
]
]
],
'reembed' => [
'dry_run' => true,
'outputs' => [
'transcription_embedding'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Namespace: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger"
payload := strings.NewReader("{\n \"include_buckets\": [\n \"<string>\"\n ],\n \"include_collections\": [\n \"<string>\"\n ],\n \"object_ids\": [\n \"<string>\"\n ],\n \"source_filters\": {\n \"AND\": [\n {\n \"field\": \"status\",\n \"operator\": \"eq\",\n \"value\": \"pending\"\n }\n ]\n },\n \"reembed\": {\n \"dry_run\": true,\n \"outputs\": [\n \"transcription_embedding\"\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-Namespace", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger")
.header("Authorization", "Bearer <token>")
.header("X-Namespace", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"include_buckets\": [\n \"<string>\"\n ],\n \"include_collections\": [\n \"<string>\"\n ],\n \"object_ids\": [\n \"<string>\"\n ],\n \"source_filters\": {\n \"AND\": [\n {\n \"field\": \"status\",\n \"operator\": \"eq\",\n \"value\": \"pending\"\n }\n ]\n },\n \"reembed\": {\n \"dry_run\": true,\n \"outputs\": [\n \"transcription_embedding\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/collections/{collection_identifier}/trigger")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-Namespace"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"include_buckets\": [\n \"<string>\"\n ],\n \"include_collections\": [\n \"<string>\"\n ],\n \"object_ids\": [\n \"<string>\"\n ],\n \"source_filters\": {\n \"AND\": [\n {\n \"field\": \"status\",\n \"operator\": \"eq\",\n \"value\": \"pending\"\n }\n ]\n },\n \"reembed\": {\n \"dry_run\": true,\n \"outputs\": [\n \"transcription_embedding\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"task_id": "<string>",
"collection_id": "<string>",
"total_tiers": 123,
"message": "<string>",
"batch_id": "<string>",
"source_bucket_ids": [
"<string>"
],
"source_collection_ids": [
"<string>"
],
"object_count": 123,
"batch_ids": [
"<string>"
],
"task_ids": [
"<string>"
],
"batch_count": 123,
"document_count": 123
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"error": {
"details": {
"id": "ns_123",
"resource": "namespace"
},
"message": "Namespace not found",
"type": "NotFoundError"
},
"status": 404,
"success": false
}Authorizations
Mixpeek API key, sent as Authorization: Bearer mxp_sk_.... Create one in Studio under Settings → API Keys, or with an admin key via POST /v1/organizations/users/{user_email}/api-keys. A missing header returns 403; an invalid or revoked key returns 401.
Namespace id (ns_...), not the namespace name. This scopes the request rather than authenticating it, and it is required on every operation marked x-mixpeek-namespace-scoped.
Path Parameters
The ID or name of the collection to trigger
Body
Request to trigger (re)processing through a collection.
For bucket-sourced collections (tier 0):
Discovers objects from source bucket(s) and creates a batch for processing.
Use include_buckets to limit which source buckets to process from.
For collection-sourced collections (tier N):
Processes existing documents from upstream collection(s).
Use include_collections to limit which source collections to process from.
Use source_filters for field-level filtering on objects or documents.
Document Overwrite Behavior:
- If source bucket has
unique_keyconfigured: Documents are UPSERTED (overwrites existing) - If source bucket has NO
unique_key: New documents are CREATED (may cause duplicates)
To enable idempotent re-processing, configure unique_key on the source bucket.
Limit processing to objects from these specific buckets (IDs or names). Only applies to bucket-sourced collections. If not provided, all configured source buckets are used.
Limit processing to documents from these specific collections (IDs or names). Only applies to collection-sourced collections. If not provided, all configured source collections are used.
Limit processing to these specific object IDs. Only applies to bucket-sourced collections. This is a convenience shorthand — equivalent to using source_filters with {"AND": [{"field": "object_id", "operator": "in", "value": [...]}]}.
Field-level filters for objects (bucket-sourced) or documents (collection-sourced). Uses LogicalOperator format (AND/OR/NOT). Use this to filter by metadata fields, status, or any other object/document properties.
Show child attributes
Show child attributes
{
"AND": [
{
"field": "status",
"operator": "eq",
"value": "pending"
}
]
}
How to handle sources already processed in prior batches. skip (default): skip sources already materialized in this collection. replace: delete existing documents for the re-processed sources and re-materialize them — this also clears the processed-objects resume ledger, so use it to recover a collection stuck with ledger entries but 0 materialized documents (the orphan/divergence state). force: process regardless, allowing duplicates.
skip, replace, force Re-embed stored document text instead of reprocessing sources. When set, no batch is created: the collection's existing documents are read, the selected embedding outputs are recomputed from the text each document already stores, and the vectors are written back onto the same documents. Progress is reported on the returned task. Source selection fields (include_buckets, include_collections, object_ids, source_filters, dedup_strategy) cannot be combined with it.
Show child attributes
Show child attributes
{
"dry_run": true,
"outputs": ["transcription_embedding"]
}
Response
Successful Response
Response after triggering collection processing.
Use batch_id or task_id to monitor progress via GET /v1/batches/{batch_id}
or GET /v1/tasks/{task_id}.
Task ID for monitoring via GET /v1/tasks/{task_id}.
ID of the collection being processed.
Number of processing tiers in the DAG.
Human-readable status message.
ID of the created batch for tracking progress. Null for a stored-text re-embed (reembed), which runs as a task, not a batch.
Bucket IDs that objects were discovered from (bucket-sourced collections).
Collection IDs that documents were read from (collection-sourced collections).
Total number of objects included in the batch (bucket-sourced collections).
All batch IDs created for this trigger. Present when a large load was auto-chunked into multiple right-sized batches; batch_id is the first of these. Null (absent) for a single-batch trigger.
Task IDs for each created batch, aligned with batch_ids.
Number of batches created. Null for a single-batch trigger; set when the load was auto-chunked into multiple batches.
Total number of documents to process (collection-sourced collections).
Was this page helpful?

