> ## Documentation Index
> Fetch the complete documentation index at: https://docs.presenton.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Templates and themes

> Discover layouts and visual styles, inspect their identifiers, and apply them to Cloud generation.

Templates determine available slide layouts; themes determine presentation-wide visual identity.

| Resource          | Controls                                                         | Request field       |
| ----------------- | ---------------------------------------------------------------- | ------------------- |
| Standard template | Layout structure and the content schema for each layout          | `standard_template` |
| Smart design      | Visual composition for a Smart presentation                      | `smart_design`      |
| Theme             | Presentation-wide colors, typography, logo, and company identity | `theme`             |

Use one design mode for a generation request: a standard template or a Smart design. A theme can be combined with a standard template.

## List standard templates

List built-in and custom templates with `GET /standard-template/all`:

```bash theme={null}
curl --request GET \
  --url "https://api.presenton.ai/api/v3/standard-template/all?include_defaults=true" \
  --header "Authorization: Bearer YOUR_API_KEY"
```

The response includes the identifier to pass in `standard_template`:

```json theme={null}
[
  {
    "id": "neo-modern",
    "name": "Neo Modern",
    "total_layouts": 16
  },
  {
    "id": "custom-20f600db-e55d-4f14-b373-5c43c1668170",
    "name": "Company Brand",
    "total_layouts": 12
  }
]
```

Set `include_defaults=false` when your interface should show only the user's custom templates.

## Inspect template layouts

Fetch one template with `GET /standard-template/{id}`. Each returned slide layout contains an `id`, an optional name and description, and a `json_schema` describing the content it accepts.

```bash theme={null}
curl --request GET \
  --url https://api.presenton.ai/api/v3/standard-template/neo-modern \
  --header "Authorization: Bearer YOUR_API_KEY"
```

Use `GET /standard-template/{id}/example` when you need sample content for the layouts. This is especially useful before generating a presentation directly from structured JSON.

<Card title="Create a presentation from JSON" icon="brackets-curly" href="/cloud/guides/create-from-json">
  Inspect layout schemas and fill them with deterministic application data.
</Card>

## List Smart designs

Smart designs use a separate identifier and a paginated endpoint:

```bash theme={null}
curl --request GET \
  --url "https://api.presenton.ai/api/v3/smart-design/all?page=1&page_size=20" \
  --header "Authorization: Bearer YOUR_API_KEY"
```

Store the selected result's identifier and pass it in `smart_design`. Do not place a Smart design identifier in `standard_template`.

## List themes

Built-in and custom themes use separate listing endpoints:

```bash theme={null}
# Built-in themes
curl --request GET \
  --url https://api.presenton.ai/api/v3/theme/default

# Themes created by the authenticated user
curl --request GET \
  --url https://api.presenton.ai/api/v3/theme/all \
  --header "Authorization: Bearer YOUR_API_KEY"
```

Pass the returned `id` as the `theme` value. Built-in identifiers currently exposed by the generation schema include `edge-yellow`, `light-rose`, `mint-blue`, `professional-blue`, and `professional-dark`.

## Generate a color palette

`POST /theme/generate` derives a complete presentation palette from the seed colors you provide. All fields are optional, so you can begin with only a primary and background color:

```bash theme={null}
curl --request POST \
  --url https://api.presenton.ai/api/v3/theme/generate \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "primary": "#4A2EA6",
    "background": "#FFFFFF",
    "accent_1": "#5B39CB"
  }'
```

The response contains colors for backgrounds, cards, strokes, text, and ten graph series. Review their contrast before saving the palette as a reusable theme.

## Create a custom theme

Create a reusable theme with `POST /theme/create`. The request requires a name, description, complete colors, and font data. `company_name` and a previously uploaded logo asset identifier are optional.

```json theme={null}
{
  "name": "Acme Light",
  "description": "Acme's light presentation theme",
  "company_name": "Acme",
  "data": {
    "colors": {
      "primary": "#4A2EA6",
      "background": "#FFFFFF",
      "card": "#F5F3FF",
      "stroke": "#D9D2F5",
      "primary_text": "#FFFFFF",
      "background_text": "#171326",
      "graph_0": "#4A2EA6",
      "graph_1": "#5B39CB",
      "graph_2": "#7557D7",
      "graph_3": "#8E76DF",
      "graph_4": "#A894E7",
      "graph_5": "#2A9D8F",
      "graph_6": "#E9C46A",
      "graph_7": "#F4A261",
      "graph_8": "#E76F51",
      "graph_9": "#264653"
    },
    "fonts": {
      "textFont": {
        "name": "Inter",
        "url": "https://example.com/fonts/inter.woff2"
      }
    }
  }
}
```

Submit that body to the create endpoint and store the returned theme `id`:

```bash theme={null}
curl --request POST \
  --url https://api.presenton.ai/api/v3/theme/create \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data @theme.json
```

<Warning>
  Replace the example font URL with a font file URL your presentation renderer can access. Verify font licensing and test an exported presentation before using a custom theme in production.
</Warning>

## Apply the resources

```bash theme={null}
curl --request POST \
  --url https://api.presenton.ai/api/v3/presentation/generate \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "content": "Create a concise product launch briefing for enterprise customers",
    "n_slides": 7,
    "standard_template": "neo-modern",
    "theme": "professional-blue",
    "export_as": "pptx"
  }'
```

## Store identifiers safely

* Persist identifiers rather than display names; names can change and are not guaranteed to be unique.
* Refresh lists when a user opens a selector so newly created resources appear.
* Handle a missing identifier by asking the user to choose a replacement instead of silently changing the design.
* Keep standard-template and Smart-design identifiers in separate fields in your application.
* Test custom fonts, logo placement, charts, and text contrast in the exported format.

Use the reference schemas as the contract: a standard template identifier and a smart design identifier are different resource types and are not interchangeable.
