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

# Create Template

> Create a reusable slideshow template

Creates a template with a validated `config` object.

## Body Parameters

<ParamField body="name" type="string" required>
  Template name (`1-100` chars after trimming). Must be unique per owner.
</ParamField>

<ParamField body="description" type="string">
  Optional description (max `500` chars).
</ParamField>

<ParamField body="visibility" type="string">
  Optional: `private` or `workspace`. Default: `private`.
</ParamField>

<ParamField body="config" type="object" required>
  Versioned slideshow template config.

  <Expandable title="config (v1) shape">
    <ParamField body="version" type="number" required>
      Must be `1`.
    </ParamField>

    <ParamField body="structure.slides" type="array" required>
      `1-10` slides. Slide type is `pack` or `custom`.
    </ParamField>

    <ParamField body="structure.packAssignments" type="object">
      Optional map: slide index (string key) -> pack UUID.
    </ParamField>

    <ParamField body="content" type="object" required>
      Includes `mode` (`ai` or `manual`), optional `prompt`, `productId`,
      `language`, and `slideshowType` (`educational` or `personal`).
    </ParamField>

    <ParamField body="visuals" type="object" required>
      Includes `packId`, `aspectRatio` (`9:16` / `1:1` / `4:5`), and
      `textSettings` (`fontSize`, `preset`, `width`, optional `fontFamily`).
    </ParamField>
  </Expandable>
</ParamField>

<Warning>
  `visibility: "workspace"` requires a workspace-scoped key.
</Warning>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://www.genviral.io/api/partner/v1/templates \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
    "name": "Hooks Template",
    "description": "2-slide educational format",
    "visibility": "private",
    "config": {
      "version": 1,
      "structure": {
        "slides": [
          {
            "type": "pack",
            "id": "11111111-1111-1111-1111-111111111111",
            "pinnedImageUrl": null,
            "textElements": [
              {
                "id": "22222222-2222-2222-2222-222222222222",
                "content": "Hook",
                "x": 50,
                "y": 25,
                "fontSize": 48,
                "width": 70
              }
            ]
          }
        ]
      },
      "content": {
        "mode": "manual",
        "productId": null,
        "language": "en",
        "slideshowType": "educational"
      },
      "visuals": {
        "packId": null,
        "aspectRatio": "4:5",
        "textSettings": {
          "fontSize": "default",
          "preset": "tiktok",
          "width": "default"
        }
      }
    }
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "ok": true,
    "code": 201,
    "message": "Template created",
    "data": {
      "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "name": "Hooks Template",
      "description": "2-slide educational format",
      "visibility": "private",
      "preview_url": null,
      "use_count": 0,
      "last_used_at": null,
      "created_at": "2026-02-14T09:45:00.000Z",
      "updated_at": "2026-02-14T09:45:00.000Z",
      "is_owner": true,
      "config": {
        "version": 1,
        "structure": {
          "slides": [
            {
              "type": "pack",
              "id": "11111111-1111-1111-1111-111111111111",
              "pinnedImageUrl": null,
              "textElements": [
                {
                  "id": "22222222-2222-2222-2222-222222222222",
                  "content": "Hook",
                  "x": 50,
                  "y": 25,
                  "fontSize": 48,
                  "width": 70
                }
              ]
            }
          ]
        },
        "content": {
          "mode": "manual",
          "productId": null,
          "language": "en",
          "slideshowType": "educational"
        },
        "visuals": {
          "packId": null,
          "aspectRatio": "4:5",
          "textSettings": {
            "fontSize": "default",
            "preset": "tiktok",
            "width": "default"
          }
        }
      }
    }
  }
  ```
</ResponseExample>

## Error Responses

* `400 invalid_json` - body is not valid JSON
* `422 invalid_payload` - schema validation failed
* `409 template_name_conflict` - name already exists for owner
* `422 invalid_template_config` - config failed server-side config validation
* `401` - authentication failed (missing/invalid/revoked token)
* `402 subscription_required` - active Creator/Professional/Business plan required
* `403 tier_not_allowed` - Scheduler tier cannot use Partner API
* `500 template_create_failed` - unexpected creation failure
