Themes
Control slide branding. 9 built-in themes, custom themes with your brand colors, fonts, and logo — or upload your company's .pptx template and render natively on your own file. Pass theme_id to any endpoint.
GET /v1/themes
List all available themes (built-in + your saved custom themes).
curl https://api.slideforge.dev/v1/themes \ -H "Authorization: Bearer sf_live_YOUR_KEY"
{
"themes": [
{ "id": "slideforge_standard", "name": "Default", "source": "default", "is_default": true,
"register": "general business / agent default", "primary": "#12355B", "accent": "#2563EB" },
{ "id": "consulting_graphite", "name": "Consulting Graphite", "source": "default",
"register": "board / consulting", "primary": "#2F343B", "accent": "#0F766E" },
{ "id": "dark_keynote", "name": "Dark Keynote", "source": "default",
"register": "investor / founder keynote", "primary": "#0F172A", "accent": "#3B82F6" },
// ...product_bold, technical_lab, education_warm, healthcare_calm,
// scientific_paper, sales_warm (9 built-ins) + your saved themes
]
}POST /v1/themes
Save a custom theme. Only colors is required — everything else has sensible defaults.
curl -X POST https://api.slideforge.dev/v1/themes \
-H "Authorization: Bearer sf_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Corp",
"colors": {
"primary": "#003366",
"secondary": "#336699",
"accent": "#FF6600",
"neutral": "#666666"
},
"typography": {
"font_family": "Calibri"
}
}'{
"theme_id": "t_abc123",
"name": "Acme Corp",
"source": "custom"
}Using a theme
Pass theme_id to any create endpoint (render/intent, render/auto, render/code, render/intent/deck).
# Use your custom theme with any endpoint
curl -X POST https://api.slideforge.dev/v1/render/auto \
-H "Authorization: Bearer sf_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"brief": "Q1 KPI dashboard: revenue, clients, margin, NPS",
"theme_id": "t_abc123"
}'POST /v1/themes/upload — render on your own template
Upload your company's .pptx template and slides render natively on your own file — slide master, layouts, fonts, and theme intact. The output opens in PowerPoint as a deck built on your corporate template, not a lookalike. Responses report brand_fidelity_level: "native" so your agent can verify it. Colors, fonts, and logo are also extracted for the standard theme pipeline.
# Upload your company template (≤50MB) curl -X POST https://api.slideforge.dev/v1/themes/upload \ -H "Authorization: Bearer sf_live_YOUR_KEY" \ -F "file=@company_template.pptx"
Your template's own layouts (cover, agenda, dividers)
Uploaded templates expose their own designed slides — cover, agenda, section dividers, closing — as fillable layouts. Discover them with GET /v1/themes/{id}/layouts (fill schemas + preview images), then fill one literally with form=template_layout. Deterministic and LLM-free: your text lands in the template's designed placeholders, verbatim.
# Discover your template's own designed layouts curl https://api.slideforge.dev/v1/themes/t_abc123/layouts \ -H "Authorization: Bearer sf_live_YOUR_KEY"
# Fill your template's own cover slide
curl -X POST https://api.slideforge.dev/v1/render/intent \
-H "Authorization: Bearer sf_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"form": "template_layout",
"theme_id": "t_abc123",
"data": {
"layout": "cover",
"fills": { "title": "FY26 Strategy Review", "subtitle": "Executive Board — July 2026" }
}
}'Theme JSON schema
Get the full schema with field descriptions:
curl https://api.slideforge.dev/v1/themes/template \ -H "Authorization: Bearer sf_live_YOUR_KEY"
Returns the complete theme structure with all configurable fields: colors (primary, secondary, accent, neutral), typography (font family, sizes), spacing (margins, gaps, content zones), and design rules (whitespace, max hues).
Adding a logo
Upload a logo (PNG/JPG/SVG, max 5MB) and reference it in your theme's chrome:
# Upload logo
curl -X POST https://api.slideforge.dev/v1/assets/logo \
-H "Authorization: Bearer sf_live_YOUR_KEY" \
-F "file=@logo.png"
# Use in chrome
{ "chrome": { "logo": "logo_id_from_upload" } }