curl -X POST "https://api.scanova.io/theme/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{
"name": "Ocean Breeze",
"config_json": { "color": { "accent": "#0077be", "background": "#f0f8ff" }, "font": { "heading": "Inter" } }
}'
{
"id": 7,
"name": "Ocean Breeze",
"slug": "user-42-ocean-breeze-a1b2c3",
"description": "A cool blue palette.",
"config_json": { "color": { "accent": "#0077be", "background": "#f0f8ff" }, "font": { "heading": "Inter" } },
"schema_version": 2,
"category_hints": ["website-url", "vcard"],
"thumbnail_url": "https://cdn.scanova.io/themes/7/thumb.png",
"is_system": false,
"is_premium": false,
"order": 0
}
Themes & Page Templates
Create a theme
POST /theme/
POST
/
theme
/
curl -X POST "https://api.scanova.io/theme/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{
"name": "Ocean Breeze",
"config_json": { "color": { "accent": "#0077be", "background": "#f0f8ff" }, "font": { "heading": "Inter" } }
}'
{
"id": 7,
"name": "Ocean Breeze",
"slug": "user-42-ocean-breeze-a1b2c3",
"description": "A cool blue palette.",
"config_json": { "color": { "accent": "#0077be", "background": "#f0f8ff" }, "font": { "heading": "Inter" } },
"schema_version": 2,
"category_hints": ["website-url", "vcard"],
"thumbnail_url": "https://cdn.scanova.io/themes/7/thumb.png",
"is_system": false,
"is_premium": false,
"order": 0
}
Saves a new theme, on the Management API host (
api.scanova.io), authenticated with your raw Management API key.
POST https://api.scanova.io/theme/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
string
required
Theme name, max 100 characters. Blank or whitespace-only names are rejected.
object
required
Design tokens (colors, fonts, and so on) following the ThemeConfigV2 schema — validated server-side.
curl -X POST "https://api.scanova.io/theme/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{
"name": "Ocean Breeze",
"config_json": { "color": { "accent": "#0077be", "background": "#f0f8ff" }, "font": { "heading": "Inter" } }
}'
{
"id": 7,
"name": "Ocean Breeze",
"slug": "user-42-ocean-breeze-a1b2c3",
"description": "A cool blue palette.",
"config_json": { "color": { "accent": "#0077be", "background": "#f0f8ff" }, "font": { "heading": "Inter" } },
"schema_version": 2,
"category_hints": ["website-url", "vcard"],
"thumbnail_url": "https://cdn.scanova.io/themes/7/thumb.png",
"is_system": false,
"is_premium": false,
"order": 0
}
slug is generated server-side and can’t be set directly. 400 for a blank name or a config_json that fails ThemeConfigV2 schema validation.
Related
- List themes — see saved themes.
- Update a theme — edit an existing one.
- Management API overview — the auth scheme and quota rules that apply to this endpoint.
Authorizations
Send your Management API key as the raw value of the Authorization header — no "Bearer " or "Token " prefix, and no other characters. Example: Authorization: 401f7ac837da42b97f613d789819ff93537bee6a. A header containing more than one space-separated part is rejected outright. Requests also require the request's Host header to be the management API host (e.g. api.scanova.io) — the same key sent to the regular API host will not authenticate.
Response
Theme created.
Was this page helpful?