---
title: "Render a slide from a brief via the SSG intent engine ($0.05)"
method: POST
path: "/v1/render/auto"
tags: ["render"]
---

# Render a slide from a brief via the SSG intent engine ($0.05)

`POST /v1/render/auto`

## Request

- Base URL: `https://api.slideforge.dev`
- URL: `https://api.slideforge.dev/v1/render/auto`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Brief → SSG intent route → deterministic render. The brief path used by MCP `create_slide` when only a prose brief is supplied. $0.05 per slide. Unroutable briefs return a 422 `intent_unroutable` error with no charge. Explicit style asks in the brief (dark/light, corporate/technical/... looks) map onto built-in themes automatically unless `theme_id` is set; the response names the mapping and any unsupported styling.

## Request body

- AutoRenderRequest: POST /v1/render/auto request body — brief → SSG intent render. The brief path: SSG intent route → deterministic render. $0.05 per slide; unroutable briefs return 422 with no charge.
  - `brief` string, required
  - `theme_id` string, nullable
  - `language` string, nullable
  - `expand_brief` boolean
  - `data_hint` object, nullable
  - `name` string, nullable
  - `chrome` Chrome: Slide chrome — the frame rendered by render_chrome(). All fields optional. Resolution order: 1. Explicit chrome on request (highest priority) 2. LLM-extracted chrome from brief 3. Deck-level chrome defaults 4. Theme chrome defaults 5. Not rendered (if still None)
    - `title` string, nullable
    - `subtitle` string, nullable
    - `kicker` string, nullable
    - `footer` string, nullable
    - `source` string, nullable
    - `page_number` integer, nullable
    - `classification` string, nullable
  - `include_preview` boolean
  - `source` string, nullable
  - `allow_fabrication` boolean
  - `allow_low_confidence` boolean
  - `allow_truncation` boolean
  - `dry_run` boolean
  - `styling` string, nullable

## Response `200`

Render complete

- unknown

## Other responses

- `400`: Missing or empty brief
- `402`: Insufficient balance
- `422`: Intent could not be routed — no charge
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/slideforge/apis/slideforge-api.md) · [All operations](https://skmtc.dev/slideforge/apis/slideforge-api/llms.txt) · [OpenAPI document](https://skmtc.dev/slideforge/apis/slideforge-api/revisions/ae698e3d3c00?raw)
