curl --request GET \
--url https://api.mixpeek.com/v1/public/retrievers/{public_name}/template \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mixpeek.com/v1/public/retrievers/{public_name}/template"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.mixpeek.com/v1/public/retrievers/{public_name}/template', 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/public/retrievers/{public_name}/template",
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>"
],
]);
$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/public/retrievers/{public_name}/template"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/public/retrievers/{public_name}/template")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/public/retrievers/{public_name}/template")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"budget_limits": {
"max_credits": 10,
"max_time_ms": 30000
},
"collection_identifiers": [
"demo_videos"
],
"description": "AI-powered video search using semantic understanding",
"display_config": {
"components": {
"result_layout": "grid",
"show_search": true
},
"description": "Search through video content",
"exposed_fields": [
"title",
"thumbnail_url",
"duration"
],
"inputs": [
{
"field_name": "query",
"field_schema": {
"type": "text"
},
"label": "Search Videos",
"order": 0,
"placeholder": "Describe what you're looking for...",
"required": true
}
],
"title": "Video Search"
},
"input_schema": {
"query": {
"description": "Search query",
"examples": [
"action scenes",
"romantic moments"
],
"required": true,
"type": "text"
}
},
"retriever_name": "video-search-demo",
"source_public_name": "video-search",
"source_public_url": "https://mxp.co/r/video-search",
"stages": [
{
"config": {
"parameters": {
"final_top_k": 25,
"searches": [
{
"feature_uri": "mixpeek://text_extractor@v1/embedding",
"query": {
"input_mode": "text",
"text": "{{inputs.query}}"
},
"top_k": 100
}
]
},
"stage_id": "feature_search"
},
"stage_name": "semantic_search",
"stage_type": "filter"
}
],
"tags": [
"video",
"semantic-search",
"demo"
]
}{
"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
}Get Public Retriever Template
Get retriever configuration as a reusable template.
Returns the published retriever’s configuration in a format that can be directly used to create your own retriever. This is perfect for discovering patterns and adapting them to your own data.
Authentication:
- NO authentication required - this endpoint is completely public
- Anyone can get the template if they know the public_name
Use Case:
- Browse public retrievers to find patterns you like
- GET this endpoint to get the full configuration
- Copy the config and modify for your needs (especially
collection_identifiers) - POST to
/v1/retrieversto create your own retriever - Optionally publish it with the same display_config
What’s included:
- Retriever configuration (stages, input_schema, budget_limits)
- Display configuration (for publishing with similar UI)
- Original metadata for reference
What you need to change:
collection_identifiers: Replace with your own collection IDsretriever_name: Give it a unique name- Optionally modify stages, inputs, display_config as needed
Example:
# 1. Get the template
curl -X GET "https://api.mixpeek.com/v1/public/retrievers/video-search/template"
# 2. Modify the response and create your own retriever
curl -X POST "https://api.mixpeek.com/v1/retrievers" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"retriever_name": "my_video_search",
"collection_identifiers": ["my_videos"],
"stages": [...], # From template
"input_schema": {...}, # From template
"budget_limits": {...}, # From template
"display_config": {...} # From template (optional)
}'
Response includes:
- All retriever configuration fields
- Display config for publishing (optional to use)
- Source reference (where this template came from)
curl --request GET \
--url https://api.mixpeek.com/v1/public/retrievers/{public_name}/template \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mixpeek.com/v1/public/retrievers/{public_name}/template"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.mixpeek.com/v1/public/retrievers/{public_name}/template', 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/public/retrievers/{public_name}/template",
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>"
],
]);
$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/public/retrievers/{public_name}/template"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/public/retrievers/{public_name}/template")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/public/retrievers/{public_name}/template")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"budget_limits": {
"max_credits": 10,
"max_time_ms": 30000
},
"collection_identifiers": [
"demo_videos"
],
"description": "AI-powered video search using semantic understanding",
"display_config": {
"components": {
"result_layout": "grid",
"show_search": true
},
"description": "Search through video content",
"exposed_fields": [
"title",
"thumbnail_url",
"duration"
],
"inputs": [
{
"field_name": "query",
"field_schema": {
"type": "text"
},
"label": "Search Videos",
"order": 0,
"placeholder": "Describe what you're looking for...",
"required": true
}
],
"title": "Video Search"
},
"input_schema": {
"query": {
"description": "Search query",
"examples": [
"action scenes",
"romantic moments"
],
"required": true,
"type": "text"
}
},
"retriever_name": "video-search-demo",
"source_public_name": "video-search",
"source_public_url": "https://mxp.co/r/video-search",
"stages": [
{
"config": {
"parameters": {
"final_top_k": 25,
"searches": [
{
"feature_uri": "mixpeek://text_extractor@v1/embedding",
"query": {
"input_mode": "text",
"text": "{{inputs.query}}"
},
"top_k": 100
}
]
},
"stage_id": "feature_search"
},
"stage_name": "semantic_search",
"stage_type": "filter"
}
],
"tags": [
"video",
"semantic-search",
"demo"
]
}{
"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
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Public name of the published retriever
Response
Successful Response
Response containing public retriever configuration as a reusable template.
This returns the retriever's configuration in a format that can be directly used in a CreateRetrieverRequest. Users can copy this config, modify it for their needs (e.g., change collection_identifiers), and create their own retriever.
Use Case: 1. Browse public retrievers to find patterns you like 2. GET /public/retrievers/{public_name}/template to get the config 3. Modify collection_identifiers and other fields as needed 4. POST /retrievers to create your own retriever with this config 5. Optionally POST /retrievers/{id}/publish to publish it similarly
Original retriever name (you'll change this when creating your own). Provided as reference.
"video-search-example"
"product-catalog-demo"
IMPORTANT: These are the original collections. You MUST replace these with your own collection identifiers when creating a retriever from this template.
["public_videos"]
["demo_products", "demo_images"]
Pipeline stages configuration. You can use as-is or modify for your needs. This is the core retrieval logic.
Input schema defining expected inputs. If you change the input field names, make sure to update references in stages (e.g., {{inputs.query}}).
Show child attributes
Show child attributes
Budget limits for execution. You can adjust these based on your needs.
Public name of the source retriever (for reference)
"video-search"
"product-catalog"
Public URL of the source retriever (to view it in action)
"https://mxp.co/r/video-search"
Original retriever description (you can use or modify this). Provides context about what this retriever does.
Original tags (optional, for reference)
OPTIONAL: Display configuration used for the public interface. Include this if you plan to publish your retriever and want to use a similar UI design. Otherwise, you can omit it.
Show child attributes
Show child attributes
{ "components": { "result_card": { "card_click_action": "viewDetails", "field_order": ["title", "description", "price"], "layout": "vertical", "show_find_similar": true, "show_thumbnail": true }, "result_layout": "grid", "show_hero": true, "show_results_header": true, "show_search": true }, "custom_cta": { "label": "Search Tips", "markdown_content": "# Search Tips\n\n- Use quotes for exact phrases\n- Try descriptive terms" }, "description": "Search through our product catalog", "exposed_fields": [ "title", "description", "price", "image_url" ], "external_links": [ { "name": "GitHub Repository", "url": "https://github.com/mixpeek/product-search" }, { "name": "Blog Post", "url": "https://blog.mixpeek.com/building-product-search" } ], "field_config": { "price": { "format": "number", "format_options": { "decimals": 2, "label": "Price", "prefix": "$" } }, "title": { "format": "text", "format_options": { "label": "Product Name", "truncate_chars": 60 } } }, "field_mappings": { "thumbnail": "image_url", "title": "title" }, "inputs": [ { "field_name": "query", "field_schema": { "description": "Search query", "examples": ["wireless headphones", "laptop"], "type": "string" }, "input_type": "text", "label": "Search Products", "order": 0, "placeholder": "What are you looking for?", "required": true } ], "layout": { "columns": 3, "gap": "16px", "mode": "grid" }, "logo_url": "https://example.com/logo.png", "markdowns": [ { "content": "# AI-Powered Product Search\n\nOur search uses **machine learning** to understand your queries and find the most relevant products.\n\n## Features\n\n- **Semantic Search**: Understands meaning, not just keywords\n- **Visual Search**: Upload images to find similar products\n- **Smart Filters**: Automatically suggests relevant filters", "title": "How it Works" }, { "content": "## Tips for Better Results\n\n1. Use descriptive terms (e.g., \"wireless noise-canceling headphones\")\n2. Try different keywords if you don't find what you're looking for\n3. Use filters to narrow down results\n\n*Happy searching!*", "title": "Search Guide" } ], "template_type": "media-search", "theme": { "border_radius": "12px", "card_style": "elevated", "font_family": "Inter, sans-serif", "primary_color": "#007AFF" }, "title": "Product Search" }
Feature extractors from all collections used by this retriever. Each extractor includes: feature_extractor_name, version, params, input_mappings, collection_id, and collection_name for reference. Shows how each collection processes data into searchable features.
Was this page helpful?

