---
title: "PREFERRED step 1: get the slots to fill for a template (free, your own content)"
method: GET
path: "/gpt/template-schema"
tags: ["Studio"]
---

# PREFERRED step 1: get the slots to fill for a template (free, your own content)

`GET /gpt/template-schema`

## Request

- Base URL: `https://www.magicslides.app/api`
- URL: `https://www.magicslides.app/api/gpt/template-schema`
- Auth: API key in header `x-api-key`

PREFERRED path for every deck: call this, write every slot yourself with your own model, then call createStudioPresentationFromSlots — it uses your own model and is free. Returns per-slide layoutKey + slot keys with one-line guidance and a cloneable example. Only templates with slotsReady=true work (default: creative-design).

## Query parameters

- `templateKey` string
- `slides` integer

## Response `200`

Slot schema to fill.

- object
  - `templateKey` string
  - `slideCount` integer
  - `plan` string[]
  - `slides` object[]
    - `index` integer
    - `layoutKey` string
    - `imageMode` string
    - `slots` object: slotKey → guidance for what to write.
  - `example` object: Ready-to-clone createStudioPresentationFromSlots body with placeholders.
  - `byoReadyTemplates` string[]

## Other responses

- `400`: Invalid or missing parameters. Note: legacy endpoints answer missing parameters with 404, not 400.

---

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