Replaces /v1/templates

Catalog

The template engine and its /v1/templates* endpoints were removed in v5. Discovery now runs through the catalog — 150+ render patterns grouped into families and segments. Each catalog entry carries a ready-to-send intent payload and a brief, so you can browse, preview the exact variant for free, then render it deterministically for $0.05.

The browsable gallery for these patterns is at /templates. To render a pattern from code, pair the catalog with POST /v1/render/intent.

GET /v1/catalog

Browse the catalog. Filter with q (free-text), segment, or family. The response also returns the full lists of segments, families, and use_cases for faceted navigation.

curl
# Browse the catalog
curl "https://api.slideforge.dev/v1/catalog" \
  -H "Authorization: Bearer sf_live_YOUR_KEY"

# Filter by free-text query, segment, or family
curl "https://api.slideforge.dev/v1/catalog?q=board+kpi&family=kpi_metrics" \
  -H "Authorization: Bearer sf_live_YOUR_KEY"
Response
{
  "items": [
    {
      "slug": "kpi_metrics_delta_scoreboard",
      "layer": "pattern",
      "title": "Delta scoreboard",
      "family": "kpi_metrics",
      "family_label": "Kpi Metrics",
      "variant": "delta_scoreboard",
      "segments": ["corporate", "consulting"],
      "use_cases": ["board_update", "qbr"],
      "blurb": "Headline metric cards with values and deltas.",
      "preview_url": "/v1/catalog/kpi_metrics_delta_scoreboard/preview"
    }
  ],
  "count": 1,
  "segments": ["consulting", "sales", "corporate", "startup_vc", "it_services", "marketing", "gov_ngo", "education"],
  "families": ["kpi_metrics", "comparison_matrix", "waterfall_bridge", "case_story", "..."],
  "use_cases": ["board_update", "qbr", "due_diligence", "..."]
}

GET /v1/catalog/{slug}

Get one pattern's detail. For a pattern entry the slug is the prior_id — pass it straight to /v1/render/intent. The intent field is a ready-to-send create_slide payload you can copy and edit.

curl
# Get one pattern — includes a ready-to-send intent payload + brief
curl "https://api.slideforge.dev/v1/catalog/kpi_metrics_delta_scoreboard" \
  -H "Authorization: Bearer sf_live_YOUR_KEY"
Response
{
  "slug": "kpi_metrics_delta_scoreboard",
  "layer": "pattern",
  "title": "Delta scoreboard",
  "family": "kpi_metrics",
  "variant": "delta_scoreboard",
  "brief": "Q3 board KPI snapshot: revenue, margin, cash, supplier lead time.",
  "intent": {
    "form": "kpi_metrics",
    "variant": "delta_scoreboard",
    "headline": "Revenue and margin ahead of plan; supply lead times are the watch item",
    "data": { "metrics": [
      {"label": "Revenue", "value": "$112M", "delta_value": "+6% vs plan", "delta_tone": "good", "emphasis": "primary"}
    ]}
  }
}

Render a catalog pattern

Send the slug as prior_id (or copy the detail's intent payload) to POST /v1/render/intent for a deterministic render ($0.05) — no routing, no LLM. Add preview: true for a free ephemeral PNG first.

curl
# Render the pattern verbatim — $0.05 (or preview:true for a free PNG).
# Send the slug as prior_id, or copy the detail's "intent" payload to customize it.
curl -X POST https://api.slideforge.dev/v1/render/intent \
  -H "Authorization: Bearer sf_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prior_id": "kpi_metrics_delta_scoreboard",
    "theme_id": "slideforge_standard"
  }'

Just have a brief?

You don't have to pick a pattern yourself. Call POST /v1/render/auto (or MCP create_slide(mode="brief")) with a brief — the SSG intent engine routes it to a pattern and renders deterministically. Bounded at $0.05, free when the brief is unroutable (intent_unroutable envelope).