Skip to main content
POST
/
v1
/
apps
/
{app_id}
/
rollback
Rollback an App
curl --request POST \
  --url https://api.mixpeek.com/v1/apps/{app_id}/rollback
{
  "app_id": "<string>",
  "slug": "<string>",
  "template": "<string>",
  "sections": [
    {
      "type": "<string>",
      "section_id": "<string>",
      "props": {},
      "order": 123
    }
  ],
  "custom_html": "<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"
  },
  "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": {
              "type": "string",
              "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>"
    }
  ],
  "password_protected": true,
  "is_active": true,
  "version": 123,
  "custom_domains": [
    {
      "domain": "<string>",
      "status": "pending",
      "verification_token": "<string>",
      "cname_target": "<string>",
      "tls_cert_id": "<string>",
      "tls_expires_at": "2023-11-07T05:31:56Z",
      "verified_at": "2023-11-07T05:31:56Z",
      "is_primary": false
    }
  ],
  "auth_config": {
    "mode": "public",
    "saml_idp_metadata_url": "<string>",
    "saml_sp_entity_id": "<string>",
    "saml_acs_url": "<string>",
    "oidc_issuer": "<string>",
    "oidc_client_id": "<string>",
    "oidc_client_secret_name": "<string>",
    "oidc_scopes": [
      "<string>"
    ],
    "jwt_jwks_url": "<string>",
    "jwt_audience": "<string>",
    "jwt_issuer": "<string>",
    "api_keys": [
      {}
    ]
  },
  "build_config": {
    "entry": "src/layout.jsx",
    "framework": "react",
    "tailwind": true,
    "env_vars": {},
    "asset_prefix": "<string>"
  },
  "environments": {},
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "has_unpublished_changes": false
}

Headers

Authorization
string

REQUIRED: Bearer token authentication using your API key. Format: 'Bearer sk_xxxxxxxxxxxxx'. You can create API keys in the Mixpeek dashboard under Organization Settings.

Examples:

"Bearer YOUR_API_KEY"

"Bearer YOUR_STRIPE_API_KEY"

authorization
string
X-Namespace
string

REQUIRED: Namespace identifier for scoping this request. All resources (collections, buckets, taxonomies, etc.) are scoped to a namespace. You can provide either the namespace name or namespace ID. Format: ns_xxxxxxxxxxxxx (ID) or a custom name like 'my-namespace'

Examples:

"ns_abc123def456"

"production"

"my-namespace"

Path Parameters

app_id
string
required

App ID (e.g. app_abc123def456)

Response

The restored App configuration

Response model for an App.

app_id
string
required
slug
string
required
template
string
required
sections
SectionConfig · object[]
required
custom_html
string | null
required
meta
PageMeta · object
required

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.).

hero
HeroConfig · object
required

Hero section configuration for a page.

theme
ThemeConfig · object
required

Theme configuration for public retriever UI.

Defines colors, fonts, and visual styling for the public search interface.

seo
SEOConfig · object
required

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
Example:
{
"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
StatItem · object[]
required

Configuration for the featured gallery section.

tabs
PageTab · object[]
required
password_protected
boolean
required
is_active
boolean
required
version
integer
required
custom_domains
CustomDomainConfig · object[]
required
auth_config
AuthConfig · object
required

End-user authentication configuration for an App.

Phase 1: schema stored on the document; enforcement not yet wired up. Phase 5: middleware in canvas/ will enforce these settings.

build_config
BuildConfig · object
required

JSX build configuration for an App.

Phase 1: schema only. Phase 3: used by the build pipeline Celery task.

environments
Environments · object
required
created_at
string<date-time> | null
required
updated_at
string<date-time> | null
required
has_unpublished_changes
boolean
default:false