Themes API

List installed themes, read their assets, browse the marketplace and switch the live storefront theme from code.

Version v1 · updated 2026-09-04

Everything the Themes screen does is a REST call, so a deploy pipeline can promote a theme the same way a person clicks Activate. Reads need `themes.read`; activation needs `themes.write`.

Endpoints#

GET    /api/public/v1/themes                 # installed themes, active first
GET    /api/public/v1/themes/:id             # one installed theme
GET    /api/public/v1/themes/:id/assets      # css / tokens / font / image assets
POST   /api/public/v1/themes/:id/activate    # switch the live storefront theme
GET    /api/public/v1/marketplace/themes     # published marketplace listings

Switching the live theme#

curl -X POST https://your-store.example/api/public/v1/themes/$THEME_ID/activate \
  -H "authorization: Bearer $FRAMIQUE_API_KEY" \
  -H "idempotency-key: $(uuidgen)"

Assets#

An asset with `scope: "global"` is injected under every theme; `scope: "theme"` is scoped to that theme only. CSS is sanitised on write (no `@import`, no `javascript:`, no `<script>`) and capped at 100 KB per asset.