---
title: "Create Template"
method: POST
path: "/v1/templates"
tags: ["templates"]
---

# Create Template

`POST /v1/templates`

Create a new interview template with goals, settings, and output configuration.

Validates the template and rejects with HTTP 422 if any severity='error' rule fires.
Warnings are returned on the TemplateOut so the template author sees them immediately.

## Request body

- TemplateCreate
  - `name` string, required
  - `description` string
  - `goals` GoalBase[]
    - `id` string, required
    - `type` string, required
    - `prompt` string, required
    - `follow_up_depth` string, nullable
    - `schema` object, nullable
    - `walk_through` boolean, nullable
    - `probing_areas` string[], nullable
    - `entry_points` string[], nullable
    - `capture_mode` string, nullable
    - `track` string[], nullable
    - `commit_policy` string, nullable
    - `invariants` unknown[], nullable
      - unknown
    - `extraction_mode` string, nullable
  - `settings` TemplateSettings
    - `greeting` string
    - `greeting_text` string
    - `language` string
    - `tone` string
    - `max_session_duration_minutes` integer
    - `allow_screen_share` boolean
    - `suggest_screen_sharing` boolean
    - `instant_start` boolean
    - `multi_session` boolean
    - `system_instructions` string
    - `outputs` object[]
    - `speaker_skills` string[]
    - `speaker_skillsets` string[]
    - `advisors` string[]
    - `skills` string[]
    - `skill_execution_mode` string
    - `data_sources` object[]
    - `embedded` EmbeddedSettings
      - `skip_join_screen` boolean
      - `auto_close` boolean
      - `fab_anchor` string
      - `persist_across_conversations` boolean
  - `phases_enabled` boolean
  - `phases` Phase[]
    - `phase_id` string, required
    - `kind` string, required
    - `ref` string, nullable
    - `inline` PhaseInline — Inline phase definition — content lives in the parent template, editable in place. Unlike a referenced phase, this content is not shared with any other template; the parent is its single source of truth.
      - `body_instructions` string
      - `goals` GoalBase[]
        - `id` string, required
        - `type` string, required
        - `prompt` string, required
        - `follow_up_depth` string, nullable
        - `schema` object, nullable
        - `walk_through` boolean, nullable
        - `probing_areas` string[], nullable
        - `entry_points` string[], nullable
        - `capture_mode` string, nullable
        - `track` string[], nullable
        - `commit_policy` string, nullable
        - `invariants` unknown[], nullable
          - unknown
        - `extraction_mode` string, nullable
      - `speaker_skills` string[]
      - `speaker_skillsets` string[]
      - `advisors` string[]
      - `data_sources` object[]
      - `outputs` object[]
    - `bridging_instructions` string, nullable
    - `display_name` string, nullable
    - `carry_summary` boolean
    - `required_goals` string[], nullable
  - `intro_instructions` string
  - `outro_instructions` string
  - `default_use` string

## Response `200`

Successful Response

- TemplateOut
  - `id` string, uuid, required
  - `name` string, required
  - `description` string, required
  - `goals` object[], required
  - `settings` object, required
  - `session_brief` string
  - `tldr` string
  - `status` string, required
  - `is_default` boolean
  - `phases_enabled` boolean
  - `phases` object[]
  - `intro_instructions` string
  - `outro_instructions` string
  - `default_use` string
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `warnings` object[]
  - `parent_template_id` string, uuid, nullable
  - `inheritance` object, nullable
  - `created_by` string, uuid, nullable
  - `creator_name` string, nullable
  - `creator_email` string, nullable
  - `speaker_model` string, nullable
  - `advisor_model` string, nullable
  - `turn_detector_backend` string, nullable
  - `archetype_id` string, uuid, nullable
  - `conversation_count` integer

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/roxels/apis/interviewer.md) · [All operations](https://skmtc.dev/roxels/apis/interviewer/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/roxels/interviewer/revisions/4ef48ed226e1/schema)
