curl --request PUT \
--url https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Namespace: <api-key>' \
--data '
{
"key_prefix": "<string>",
"blobs": [
{
"data": "https://example.com/image.jpg",
"description": "Direct data upload - Simple image from URL",
"metadata": {
"alt_text": "Product thumbnail"
},
"property": "thumbnail",
"type": "IMAGE"
}
],
"metadata": {},
"skip_duplicates": true
}
'import requests
url = "https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier}"
payload = {
"key_prefix": "<string>",
"blobs": [
{
"data": "https://example.com/image.jpg",
"description": "Direct data upload - Simple image from URL",
"metadata": { "alt_text": "Product thumbnail" },
"property": "thumbnail",
"type": "IMAGE"
}
],
"metadata": {},
"skip_duplicates": True
}
headers = {
"Authorization": "Bearer <token>",
"X-Namespace": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
Authorization: 'Bearer <token>',
'X-Namespace': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
key_prefix: '<string>',
blobs: [
{
data: 'https://example.com/image.jpg',
description: 'Direct data upload - Simple image from URL',
metadata: {alt_text: 'Product thumbnail'},
property: 'thumbnail',
type: 'IMAGE'
}
],
metadata: {},
skip_duplicates: true
})
};
fetch('https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier}', 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/buckets/{bucket_identifier}/objects/{object_identifier}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'key_prefix' => '<string>',
'blobs' => [
[
'data' => 'https://example.com/image.jpg',
'description' => 'Direct data upload - Simple image from URL',
'metadata' => [
'alt_text' => 'Product thumbnail'
],
'property' => 'thumbnail',
'type' => 'IMAGE'
]
],
'metadata' => [
],
'skip_duplicates' => true
]),
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/buckets/{bucket_identifier}/objects/{object_identifier}"
payload := strings.NewReader("{\n \"key_prefix\": \"<string>\",\n \"blobs\": [\n {\n \"data\": \"https://example.com/image.jpg\",\n \"description\": \"Direct data upload - Simple image from URL\",\n \"metadata\": {\n \"alt_text\": \"Product thumbnail\"\n },\n \"property\": \"thumbnail\",\n \"type\": \"IMAGE\"\n }\n ],\n \"metadata\": {},\n \"skip_duplicates\": true\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier}")
.header("Authorization", "Bearer <token>")
.header("X-Namespace", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"key_prefix\": \"<string>\",\n \"blobs\": [\n {\n \"data\": \"https://example.com/image.jpg\",\n \"description\": \"Direct data upload - Simple image from URL\",\n \"metadata\": {\n \"alt_text\": \"Product thumbnail\"\n },\n \"property\": \"thumbnail\",\n \"type\": \"IMAGE\"\n }\n ],\n \"metadata\": {},\n \"skip_duplicates\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-Namespace"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"key_prefix\": \"<string>\",\n \"blobs\": [\n {\n \"data\": \"https://example.com/image.jpg\",\n \"description\": \"Direct data upload - Simple image from URL\",\n \"metadata\": {\n \"alt_text\": \"Product thumbnail\"\n },\n \"property\": \"thumbnail\",\n \"type\": \"IMAGE\"\n }\n ],\n \"metadata\": {},\n \"skip_duplicates\": true\n}"
response = http.request(request)
puts response.read_body{
"blobs": [
{
"blob_id": "blob_1",
"data": {
"num_pages": 5,
"title": "Service Agreement 2024"
},
"key_prefix": "/contract-2024/content.pdf",
"metadata": {
"author": "John Doe",
"department": "Legal"
},
"property": "content",
"type": "PDF"
}
],
"bucket_id": "bkt_9xy8z7",
"content_hash": "28a9f5e8...",
"created_at": "2024-10-21T10:30:00Z",
"key_prefix": "/contract-2024",
"metadata": {
"category": "contracts",
"year": 2024
},
"object_id": "obj_123abc456def",
"skip_duplicates": false,
"status": "DRAFT",
"updated_at": "2024-10-21T10:30:00Z"
}{
"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
}Update Object
This endpoint updates an existing object in the specified bucket. The updated object must conform to the bucket’s schema. It does not trigger processing.
curl --request PUT \
--url https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Namespace: <api-key>' \
--data '
{
"key_prefix": "<string>",
"blobs": [
{
"data": "https://example.com/image.jpg",
"description": "Direct data upload - Simple image from URL",
"metadata": {
"alt_text": "Product thumbnail"
},
"property": "thumbnail",
"type": "IMAGE"
}
],
"metadata": {},
"skip_duplicates": true
}
'import requests
url = "https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier}"
payload = {
"key_prefix": "<string>",
"blobs": [
{
"data": "https://example.com/image.jpg",
"description": "Direct data upload - Simple image from URL",
"metadata": { "alt_text": "Product thumbnail" },
"property": "thumbnail",
"type": "IMAGE"
}
],
"metadata": {},
"skip_duplicates": True
}
headers = {
"Authorization": "Bearer <token>",
"X-Namespace": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
Authorization: 'Bearer <token>',
'X-Namespace': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
key_prefix: '<string>',
blobs: [
{
data: 'https://example.com/image.jpg',
description: 'Direct data upload - Simple image from URL',
metadata: {alt_text: 'Product thumbnail'},
property: 'thumbnail',
type: 'IMAGE'
}
],
metadata: {},
skip_duplicates: true
})
};
fetch('https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier}', 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/buckets/{bucket_identifier}/objects/{object_identifier}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'key_prefix' => '<string>',
'blobs' => [
[
'data' => 'https://example.com/image.jpg',
'description' => 'Direct data upload - Simple image from URL',
'metadata' => [
'alt_text' => 'Product thumbnail'
],
'property' => 'thumbnail',
'type' => 'IMAGE'
]
],
'metadata' => [
],
'skip_duplicates' => true
]),
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/buckets/{bucket_identifier}/objects/{object_identifier}"
payload := strings.NewReader("{\n \"key_prefix\": \"<string>\",\n \"blobs\": [\n {\n \"data\": \"https://example.com/image.jpg\",\n \"description\": \"Direct data upload - Simple image from URL\",\n \"metadata\": {\n \"alt_text\": \"Product thumbnail\"\n },\n \"property\": \"thumbnail\",\n \"type\": \"IMAGE\"\n }\n ],\n \"metadata\": {},\n \"skip_duplicates\": true\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier}")
.header("Authorization", "Bearer <token>")
.header("X-Namespace", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"key_prefix\": \"<string>\",\n \"blobs\": [\n {\n \"data\": \"https://example.com/image.jpg\",\n \"description\": \"Direct data upload - Simple image from URL\",\n \"metadata\": {\n \"alt_text\": \"Product thumbnail\"\n },\n \"property\": \"thumbnail\",\n \"type\": \"IMAGE\"\n }\n ],\n \"metadata\": {},\n \"skip_duplicates\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/buckets/{bucket_identifier}/objects/{object_identifier}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-Namespace"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"key_prefix\": \"<string>\",\n \"blobs\": [\n {\n \"data\": \"https://example.com/image.jpg\",\n \"description\": \"Direct data upload - Simple image from URL\",\n \"metadata\": {\n \"alt_text\": \"Product thumbnail\"\n },\n \"property\": \"thumbnail\",\n \"type\": \"IMAGE\"\n }\n ],\n \"metadata\": {},\n \"skip_duplicates\": true\n}"
response = http.request(request)
puts response.read_body{
"blobs": [
{
"blob_id": "blob_1",
"data": {
"num_pages": 5,
"title": "Service Agreement 2024"
},
"key_prefix": "/contract-2024/content.pdf",
"metadata": {
"author": "John Doe",
"department": "Legal"
},
"property": "content",
"type": "PDF"
}
],
"bucket_id": "bkt_9xy8z7",
"content_hash": "28a9f5e8...",
"created_at": "2024-10-21T10:30:00Z",
"key_prefix": "/contract-2024",
"metadata": {
"category": "contracts",
"year": 2024
},
"object_id": "obj_123abc456def",
"skip_duplicates": false,
"status": "DRAFT",
"updated_at": "2024-10-21T10:30:00Z"
}{
"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 unique identifier of the bucket.
The unique identifier of the object.
Body
Request model for updating an existing bucket object.
Updated storage key/path prefix of the object, this will be used to retrieve the object from the storage. It's at the root of the object.
List of new or updated blobs for this object
Show child attributes
Show child attributes
Updated metadata for the object, this will be merged with existing metadata.
Skip duplicate blobs, if a blob with the same hash already exists, it will be skipped.
Response
Successful Response
Response model for bucket objects.
ID of the bucket this object belongs to
Unique identifier for the object
Storage key/path of the object, this will be used to retrieve the object from the storage. It is similar to a file path. If not provided, it will be placed in the root of the bucket.
List of blobs contained in this object
Show child attributes
Show child attributes
Lineage/source details for this object; used for downstream references.
Show child attributes
Show child attributes
Typed, directed relationships from this object to other objects (customer-owned, root-level — never _internal). Flows to the document + MVS payload for the traverse_edge retriever stage.
Show child attributes
Show child attributes
The current status of the object.
PENDING, QUEUED, IN_PROGRESS, PROCESSING, COMPLETED, COMPLETED_WITH_ERRORS, FAILED, CANCELED, INTERRUPTED, UNKNOWN, SKIPPED, DRAFT, ACTIVE, ARCHIVED, SUSPENDED, DEACTIVATED The error message if the object failed to process.
"Failed to process object: Object not found"
Timestamp when the object was created. Automatically populated by the system.
Timestamp when the object was last updated. Automatically populated by the system.
Number of documents produced from this object across all collections. Populated on GET requests. Null on list responses (expensive query). Use this to check if an object has already been processed.
When and how this object becomes a searchable document. Set on write (create) responses: managed ingestion is visible only after a collection batch processes the object — poll until document_count > 0.
Show child attributes
Show child attributes
Was this page helpful?

