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"
}
]
}
}
'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"
}
] }
}
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'}]}
})
};
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'
]
]
]
]),
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}")
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}")
.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}"
response = http.request(request)
puts response.read_body{
"batch_id": "<string>",
"task_id": "<string>",
"collection_id": "<string>",
"total_tiers": 123,
"message": "<string>",
"source_bucket_ids": [
"<string>"
],
"source_collection_ids": [
"<string>"
],
"object_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"
}
]
}
}
'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"
}
] }
}
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'}]}
})
};
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'
]
]
]
]),
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}")
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}")
.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}"
response = http.request(request)
puts response.read_body{
"batch_id": "<string>",
"task_id": "<string>",
"collection_id": "<string>",
"total_tiers": 123,
"message": "<string>",
"source_bucket_ids": [
"<string>"
],
"source_collection_ids": [
"<string>"
],
"object_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 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}.
ID of the created batch for tracking progress.
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.
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).
Total number of documents to process (collection-sourced collections).
Was this page helpful?

