curl --request GET \
--url https://api.mixpeek.com/v1/public/apps/{slug}/config \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mixpeek.com/v1/public/apps/{slug}/config"
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/apps/{slug}/config', 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/apps/{slug}/config",
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/apps/{slug}/config"
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/apps/{slug}/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/public/apps/{slug}/config")
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{
"slug": "<string>",
"template": "<string>",
"meta": {
"title": "<string>",
"description": "Search across 10k+ product images",
"logo_url": "https://cdn.example.com/logo.png",
"favicon_url": "https://cdn.example.com/favicon.ico",
"indexable": false
},
"hero": {
"headline": "<string>",
"subheadline": "<string>",
"background_type": "solid",
"background_url": "<string>",
"background_color": "<string>",
"text_color": "#FFFFFF",
"logo_url": "<string>",
"height": "420px",
"cta_label": "<string>",
"cta_url": "<string>"
},
"theme": {
"primary_color": "#007AFF",
"secondary_color": "#FF6B6B",
"font_family": "system-ui, -apple-system, sans-serif",
"background_color": "#FFFFFF",
"text_color": "#374151",
"heading_font_family": "Georgia, serif",
"surface_color": "#F9FAFB",
"muted_color": "#6B7280",
"border_color": "#E5E7EB",
"border_radius": "8px",
"card_style": "elevated",
"card_hover_effect": "lift"
},
"seo": {
"author": "Mixpeek",
"favicon_url": "https://example.com/favicon.ico",
"keywords": [
"fitness",
"yoga",
"workout",
"exercise videos"
],
"locale": "en_US",
"logo_url": "https://example.com/logo.png",
"meta_description": "Search and discover fitness videos using AI-powered semantic search.",
"meta_title": "Fitness Video Search | Mixpeek",
"og_image_alt": "Fitness video search interface",
"og_image_url": "https://mixpeek-public-pages.s3.amazonaws.com/og.png",
"og_type": "website",
"robots": "index, follow",
"site_name": "Mixpeek",
"structured_data": {
"additional_properties": {
"applicationCategory": "Search"
},
"type": "WebApplication"
},
"twitter_card": "summary_large_image",
"twitter_site": "@mixpeek"
},
"stats": [
{
"label": "<string>",
"value": "<string>"
}
],
"featured_gallery": {
"enabled": true,
"title": "Featured",
"retriever_id": "<string>",
"public_name": "<string>",
"default_inputs": {},
"layout": {
"mode": "grid",
"columns": 3,
"gap": "16px",
"full_width": false
},
"field_config": {}
},
"tabs": [
{
"tab_id": "<string>",
"label": "<string>",
"display_config": {
"title": "<string>",
"inputs": [
{
"field_name": "<string>",
"field_schema": {
"default": null,
"items": null,
"properties": {},
"examples": [
"<unknown>"
],
"description": "<string>",
"enum": [
"<unknown>"
],
"required": false
},
"label": "<string>",
"input_type": "text",
"placeholder": "Enter search terms...",
"helper_text": "Describe the aesthetic, outfit, or vibe you're looking for",
"suggestions": [
"streetwear urban",
"clean girl minimal",
"summer haul bright"
],
"required": true,
"order": 0
}
],
"exposed_fields": [
"<string>"
],
"description": "Search through thousands of products",
"logo_url": "https://example.com/logo.png",
"icon_base64": "data:image/png;base64,iVBORw0KGgoAAAANS...",
"seo": {
"author": "Mixpeek",
"favicon_url": "https://example.com/favicon.ico",
"keywords": [
"fitness",
"yoga",
"workout",
"exercise videos"
],
"locale": "en_US",
"logo_url": "https://example.com/logo.png",
"meta_description": "Search and discover fitness videos using AI-powered semantic search.",
"meta_title": "Fitness Video Search | Mixpeek",
"og_image_alt": "Fitness video search interface",
"og_image_url": "https://mixpeek-public-pages.s3.amazonaws.com/og.png",
"og_type": "website",
"robots": "index, follow",
"site_name": "Mixpeek",
"structured_data": {
"additional_properties": {
"applicationCategory": "Search"
},
"type": "WebApplication"
},
"twitter_card": "summary_large_image",
"twitter_site": "@mixpeek"
},
"markdowns": [
{
"title": "<string>",
"content": "<string>"
}
],
"theme": {
"primary_color": "#007AFF",
"secondary_color": "#FF6B6B",
"font_family": "system-ui, -apple-system, sans-serif",
"background_color": "#FFFFFF",
"text_color": "#374151",
"heading_font_family": "Georgia, serif",
"surface_color": "#F9FAFB",
"muted_color": "#6B7280",
"border_color": "#E5E7EB",
"border_radius": "8px",
"card_style": "elevated",
"card_hover_effect": "lift"
},
"layout": {
"mode": "grid",
"columns": 3,
"gap": "16px",
"full_width": false
},
"components": {
"show_hero": true,
"show_search": true,
"show_filters": false,
"show_results_header": true,
"result_layout": "grid",
"result_card": {
"card_click_action": "viewDetails",
"card_style": "default",
"field_order": [
"title",
"description",
"category",
"created_at"
],
"layout": "vertical",
"show_find_similar": true,
"show_score": true,
"show_thumbnail": true,
"thumbnail_aspect_ratio": "16/9",
"thumbnail_field": "image_url",
"thumbnail_fit": "cover",
"title_field": "title",
"truncate_description": 120,
"truncate_title": 60
}
},
"field_config": {},
"custom_cta": {
"label": "Search Tips",
"markdown_content": "# Search Tips\n\n- Use quotes for exact phrases\n- Filter by date using 'after:2024'"
},
"external_links": [
{
"name": "<string>",
"url": "<string>"
}
],
"template_type": "portrait-gallery",
"field_mappings": {
"boundingBox": "ocr_bbox",
"extractedText": "ocr_text",
"thumbnail": "page_thumbnail_url",
"title": "document_title"
},
"extensions": {
"show_timestamps": true,
"video_autoplay": true
},
"retriever_config": {}
},
"retriever_id": "<string>",
"public_name": "<string>",
"description": "<string>"
}
],
"is_active": true,
"password_protected": true,
"sections": [
{
"type": "<string>",
"section_id": "<string>",
"props": {},
"order": 123
}
],
"custom_html": "<string>",
"bundle_url": "<string>"
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}Get public App config
Fetch the full configuration for a public App — no authentication required.
Used by the canvas/ host runtime and the @mixpeek/canvas-sdk
useApp() hook to render the app. Returns tabs, hero, stats, sections,
theme, and SEO settings.
Serves the published_config snapshot when available, so draft edits
made via PATCH /v1/apps/{app_id} are not visible until the app is
published.
curl --request GET \
--url https://api.mixpeek.com/v1/public/apps/{slug}/config \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mixpeek.com/v1/public/apps/{slug}/config"
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/apps/{slug}/config', 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/apps/{slug}/config",
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/apps/{slug}/config"
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/apps/{slug}/config")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixpeek.com/v1/public/apps/{slug}/config")
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{
"slug": "<string>",
"template": "<string>",
"meta": {
"title": "<string>",
"description": "Search across 10k+ product images",
"logo_url": "https://cdn.example.com/logo.png",
"favicon_url": "https://cdn.example.com/favicon.ico",
"indexable": false
},
"hero": {
"headline": "<string>",
"subheadline": "<string>",
"background_type": "solid",
"background_url": "<string>",
"background_color": "<string>",
"text_color": "#FFFFFF",
"logo_url": "<string>",
"height": "420px",
"cta_label": "<string>",
"cta_url": "<string>"
},
"theme": {
"primary_color": "#007AFF",
"secondary_color": "#FF6B6B",
"font_family": "system-ui, -apple-system, sans-serif",
"background_color": "#FFFFFF",
"text_color": "#374151",
"heading_font_family": "Georgia, serif",
"surface_color": "#F9FAFB",
"muted_color": "#6B7280",
"border_color": "#E5E7EB",
"border_radius": "8px",
"card_style": "elevated",
"card_hover_effect": "lift"
},
"seo": {
"author": "Mixpeek",
"favicon_url": "https://example.com/favicon.ico",
"keywords": [
"fitness",
"yoga",
"workout",
"exercise videos"
],
"locale": "en_US",
"logo_url": "https://example.com/logo.png",
"meta_description": "Search and discover fitness videos using AI-powered semantic search.",
"meta_title": "Fitness Video Search | Mixpeek",
"og_image_alt": "Fitness video search interface",
"og_image_url": "https://mixpeek-public-pages.s3.amazonaws.com/og.png",
"og_type": "website",
"robots": "index, follow",
"site_name": "Mixpeek",
"structured_data": {
"additional_properties": {
"applicationCategory": "Search"
},
"type": "WebApplication"
},
"twitter_card": "summary_large_image",
"twitter_site": "@mixpeek"
},
"stats": [
{
"label": "<string>",
"value": "<string>"
}
],
"featured_gallery": {
"enabled": true,
"title": "Featured",
"retriever_id": "<string>",
"public_name": "<string>",
"default_inputs": {},
"layout": {
"mode": "grid",
"columns": 3,
"gap": "16px",
"full_width": false
},
"field_config": {}
},
"tabs": [
{
"tab_id": "<string>",
"label": "<string>",
"display_config": {
"title": "<string>",
"inputs": [
{
"field_name": "<string>",
"field_schema": {
"default": null,
"items": null,
"properties": {},
"examples": [
"<unknown>"
],
"description": "<string>",
"enum": [
"<unknown>"
],
"required": false
},
"label": "<string>",
"input_type": "text",
"placeholder": "Enter search terms...",
"helper_text": "Describe the aesthetic, outfit, or vibe you're looking for",
"suggestions": [
"streetwear urban",
"clean girl minimal",
"summer haul bright"
],
"required": true,
"order": 0
}
],
"exposed_fields": [
"<string>"
],
"description": "Search through thousands of products",
"logo_url": "https://example.com/logo.png",
"icon_base64": "data:image/png;base64,iVBORw0KGgoAAAANS...",
"seo": {
"author": "Mixpeek",
"favicon_url": "https://example.com/favicon.ico",
"keywords": [
"fitness",
"yoga",
"workout",
"exercise videos"
],
"locale": "en_US",
"logo_url": "https://example.com/logo.png",
"meta_description": "Search and discover fitness videos using AI-powered semantic search.",
"meta_title": "Fitness Video Search | Mixpeek",
"og_image_alt": "Fitness video search interface",
"og_image_url": "https://mixpeek-public-pages.s3.amazonaws.com/og.png",
"og_type": "website",
"robots": "index, follow",
"site_name": "Mixpeek",
"structured_data": {
"additional_properties": {
"applicationCategory": "Search"
},
"type": "WebApplication"
},
"twitter_card": "summary_large_image",
"twitter_site": "@mixpeek"
},
"markdowns": [
{
"title": "<string>",
"content": "<string>"
}
],
"theme": {
"primary_color": "#007AFF",
"secondary_color": "#FF6B6B",
"font_family": "system-ui, -apple-system, sans-serif",
"background_color": "#FFFFFF",
"text_color": "#374151",
"heading_font_family": "Georgia, serif",
"surface_color": "#F9FAFB",
"muted_color": "#6B7280",
"border_color": "#E5E7EB",
"border_radius": "8px",
"card_style": "elevated",
"card_hover_effect": "lift"
},
"layout": {
"mode": "grid",
"columns": 3,
"gap": "16px",
"full_width": false
},
"components": {
"show_hero": true,
"show_search": true,
"show_filters": false,
"show_results_header": true,
"result_layout": "grid",
"result_card": {
"card_click_action": "viewDetails",
"card_style": "default",
"field_order": [
"title",
"description",
"category",
"created_at"
],
"layout": "vertical",
"show_find_similar": true,
"show_score": true,
"show_thumbnail": true,
"thumbnail_aspect_ratio": "16/9",
"thumbnail_field": "image_url",
"thumbnail_fit": "cover",
"title_field": "title",
"truncate_description": 120,
"truncate_title": 60
}
},
"field_config": {},
"custom_cta": {
"label": "Search Tips",
"markdown_content": "# Search Tips\n\n- Use quotes for exact phrases\n- Filter by date using 'after:2024'"
},
"external_links": [
{
"name": "<string>",
"url": "<string>"
}
],
"template_type": "portrait-gallery",
"field_mappings": {
"boundingBox": "ocr_bbox",
"extractedText": "ocr_text",
"thumbnail": "page_thumbnail_url",
"title": "document_title"
},
"extensions": {
"show_timestamps": true,
"video_autoplay": true
},
"retriever_config": {}
},
"retriever_id": "<string>",
"public_name": "<string>",
"description": "<string>"
}
],
"is_active": true,
"password_protected": true,
"sections": [
{
"type": "<string>",
"section_id": "<string>",
"props": {},
"order": 123
}
],
"custom_html": "<string>",
"bundle_url": "<string>"
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Globally unique app slug
Response
Full app configuration for UI rendering
Public app configuration (strips internal fields).
Returned by GET /v1/public/apps/{slug}/config — used by the canvas/ host runtime and the @mixpeek/canvas-sdk useApp() hook.
Page-level metadata (REQUIRED when creating a page).
This object is separate from the optional seo field.
meta controls the visible page chrome (browser tab title, logo, favicon),
while seo controls search-engine tags (og:title, og:description, etc.).
Show child attributes
Show child attributes
Hero section configuration for a page.
Show child attributes
Show child attributes
Theme configuration for public retriever UI.
Defines colors, fonts, and visual styling for the public search interface.
Show child attributes
Show child attributes
SEO configuration for public retriever discoverability.
Auto-generated during publishing with sensible defaults inferred from the retriever's display_config. All fields can be overridden manually.
This configuration controls how the public retriever appears in:
- Search engine results (Google, Bing, etc.)
- Social media shares (Twitter, Facebook, LinkedIn)
- Link previews in messaging apps
Show child attributes
Show child attributes
{
"author": "Mixpeek",
"favicon_url": "https://example.com/favicon.ico",
"keywords": [
"fitness",
"yoga",
"workout",
"exercise videos"
],
"locale": "en_US",
"logo_url": "https://example.com/logo.png",
"meta_description": "Search and discover fitness videos using AI-powered semantic search.",
"meta_title": "Fitness Video Search | Mixpeek",
"og_image_alt": "Fitness video search interface",
"og_image_url": "https://mixpeek-public-pages.s3.amazonaws.com/og.png",
"og_type": "website",
"robots": "index, follow",
"site_name": "Mixpeek",
"structured_data": {
"additional_properties": { "applicationCategory": "Search" },
"type": "WebApplication"
},
"twitter_card": "summary_large_image",
"twitter_site": "@mixpeek"
}
Show child attributes
Show child attributes
Configuration for the featured gallery section.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
URL of the deployed bundle index.html (set when app is deployed via CLI upload).
Was this page helpful?

