curl --request GET \
--url https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id} \
--header 'Authorization: Bearer <token>' \
--header 'X-Namespace: <api-key>'import requests
url = "https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}"
headers = {
"Authorization": "Bearer <token>",
"X-Namespace": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'X-Namespace': '<api-key>'}
};
fetch('https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}', 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/namespaces/{namespace_id}/extractors/{extractor_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-Namespace", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}")
.header("Authorization", "Bearer <token>")
.header("X-Namespace", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-Namespace"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"feature_extractor_name": "<string>",
"version": "<string>",
"feature_extractor_id": "<string>",
"source": "builtin",
"description": "<string>",
"input_schema": {},
"output_schema": {},
"icon": "box",
"parameter_schema": {},
"type_mode": "<string>",
"expected_input_types": {},
"inference_type": "<string>",
"supported_input_types": [
"<string>"
],
"max_inputs": {},
"default_parameters": {},
"costs": {
"tier": 2,
"tier_label": "<string>",
"rates": [
{
"unit": "minute",
"credits_per_unit": 2,
"description": "<string>"
}
]
},
"required_vector_indexes": [
{
"description": "Vector index for text embeddings using E5-Large model.",
"index": {
"datatype": "float32",
"description": "Dense vector embedding for text content",
"dimensions": 1024,
"distance": "cosine",
"inference_name": "multilingual_e5_large_instruct_v1",
"name": "text_extractor_v1_embedding",
"supported_inputs": [
"text",
"string"
],
"type": "dense"
},
"name": "embedding",
"type": "single"
}
],
"required_payload_indexes": [
{
"description": "User-created text index for full-text search",
"field_name": "metadata.description",
"is_protected": false,
"type": "text"
}
],
"position_fields": [
"<string>"
],
"feature_uri": "<string>",
"capabilities": [
"<string>"
],
"example_usage": {},
"plugin_id": "<string>",
"deployed": true,
"validation_status": "passed",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"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": "Extractor 'unknown_extractor_v1' not found"
}{
"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
}Get extractor details
Get detailed information about a specific extractor.
Works for both builtin extractors and custom plugins.
Parameters:
extractor_id: Extractor identifier (e.g., ‘text_extractor_v1’, ‘my_custom_plugin_1_0_0’)
Response includes:
- Full schema information (input, output, parameters)
- Vector index configuration
- For custom plugins: deployment status, validation status
curl --request GET \
--url https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id} \
--header 'Authorization: Bearer <token>' \
--header 'X-Namespace: <api-key>'import requests
url = "https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}"
headers = {
"Authorization": "Bearer <token>",
"X-Namespace": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'X-Namespace': '<api-key>'}
};
fetch('https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}', 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/namespaces/{namespace_id}/extractors/{extractor_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-Namespace", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}")
.header("Authorization", "Bearer <token>")
.header("X-Namespace", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/namespaces/{namespace_id}/extractors/{extractor_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-Namespace"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"feature_extractor_name": "<string>",
"version": "<string>",
"feature_extractor_id": "<string>",
"source": "builtin",
"description": "<string>",
"input_schema": {},
"output_schema": {},
"icon": "box",
"parameter_schema": {},
"type_mode": "<string>",
"expected_input_types": {},
"inference_type": "<string>",
"supported_input_types": [
"<string>"
],
"max_inputs": {},
"default_parameters": {},
"costs": {
"tier": 2,
"tier_label": "<string>",
"rates": [
{
"unit": "minute",
"credits_per_unit": 2,
"description": "<string>"
}
]
},
"required_vector_indexes": [
{
"description": "Vector index for text embeddings using E5-Large model.",
"index": {
"datatype": "float32",
"description": "Dense vector embedding for text content",
"dimensions": 1024,
"distance": "cosine",
"inference_name": "multilingual_e5_large_instruct_v1",
"name": "text_extractor_v1_embedding",
"supported_inputs": [
"text",
"string"
],
"type": "dense"
},
"name": "embedding",
"type": "single"
}
],
"required_payload_indexes": [
{
"description": "User-created text index for full-text search",
"field_name": "metadata.description",
"is_protected": false,
"type": "text"
}
],
"position_fields": [
"<string>"
],
"feature_uri": "<string>",
"capabilities": [
"<string>"
],
"example_usage": {},
"plugin_id": "<string>",
"deployed": true,
"validation_status": "passed",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"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": "Extractor 'unknown_extractor_v1' not found"
}{
"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.
Response
Extractor details
Unified extractor response combining builtin and custom plugins.
This model provides a consistent view of all extractors available to a namespace, regardless of whether they are builtin or custom.
Name of the feature extractor
Version of the feature extractor
Unique identifier (name_version)
Origin of this extractor: 'builtin' (shipped with Mixpeek), 'custom' (user-uploaded plugin), or 'community' (marketplace)
builtin, custom, community Human-readable description
JSON schema for input data
JSON schema for output data
Lucide-react icon name for frontend rendering
JSON schema for parameters
What input types this extractor can handle: 'type_specific' (only one type, e.g. video-only) or 'multimodal' (handles multiple types with conditional processing). Type-specific extractors cannot use automatic-typed bucket properties.
For type-specific extractors: maps input keys to required types (e.g., {'video': 'video', 'thumbnail': 'image'}). For multimodal extractors: null.
Show child attributes
Show child attributes
Kind of real-time inference this extractor provides: 'embedding', 'rerank', 'classify', 'generate', or 'general'. Determines which retriever stages are compatible. Null if the extractor is batch-only.
Supported input types (video, image, text, etc.)
Maximum number of inputs per type
Show child attributes
Show child attributes
Default parameter values
Credit cost information (builtin extractors only)
Show child attributes
Show child attributes
Vector indexes this extractor produces
Show child attributes
Show child attributes
Payload indexes required by this extractor
Show child attributes
Show child attributes
Fields that identify unique positions within output documents. Used for deterministic document ID generation.
Primary feature URI (e.g., mixpeek://text_extractor@v1/embedding)
What this extractor can do: 'batch' (feature extraction during ingestion), 'realtime' (query-time inference for retriever stages)
Minimal working configuration for namespace + collection + input_mappings + parameters
Plugin ID (custom plugins only)
Whether the plugin is deployed (custom plugins only)
Validation status (custom plugins only)
passed, failed, pending Creation timestamp (custom plugins only)
Last update timestamp (custom plugins only)
Was this page helpful?

