Skip to main content

Overview

Deploy any React app, vanilla JS site, or static bundle to Mixpeek Apps. Upload a .zip of your build output and Mixpeek handles the build, CDN distribution, and versioning — no infrastructure needed.

Quickstart

1

Build your frontend

Build your app to a static output directory.
# React / Vite
npm run build
# Output: dist/

# Next.js (static export)
npm run build && npm run export
# Output: out/
2

Zip the output directory

zip -r my-app.zip dist/
3

Get a presigned upload URL

curl -X POST https://api.mixpeek.com/v1/apps/$APP_ID/deploy/upload-url \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "my-app.zip", "content_type": "application/zip"}'
Response:
{
  "upload_url": "https://...",
  "bundle_s3_key": "apps/.../my-app.zip"
}
4

Upload the zip

curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: application/zip" \
  --data-binary @my-app.zip
5

Trigger the build

curl -X POST https://api.mixpeek.com/v1/apps/$APP_ID/deploy \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source": "cli_upload",
    "bundle_s3_key": "$BUNDLE_KEY",
    "environment": "production",
    "message": "Initial deploy"
  }'
Your app is live at https://{slug}.mxp.co within seconds of a successful build.

Deploy lifecycle

StageDescription
pendingBundle uploaded, build queued
buildingMixpeek is packaging and deploying your bundle
successBuild complete — app is live
failedBuild failed — previous version stays live, check logs

Canvas SDK

Your app runs inside the Mixpeek canvas runtime. Call Mixpeek APIs through the built-in /_api proxy — credentials are injected server-side, so your API key never reaches the browser:
// src/App.jsx — no auth headers needed
async function search(query) {
  const res = await fetch('/_api/v1/retrievers/ret_abc123/execute', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ inputs: { query }, settings: { limit: 20 } }),
  })
  return res.json()
}
Use /_api/v1/... (relative path) instead of https://api.mixpeek.com/v1/... — the canvas proxy injects Authorization and X-Namespace headers automatically, avoiding CORS and keeping API keys out of your bundle.

Deploy via Studio

In the App details page, drag & drop your .zip file onto the Deploy panel and click Deploy. The build is queued immediately and status updates in real time.

Rollback

Every deploy is versioned. To revert to a previous build:
curl -X POST https://api.mixpeek.com/v1/apps/$APP_ID/rollback \
  -H "Authorization: Bearer $API_KEY"
Or click Rollback on any previous version in the Studio History tab.