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

# Create Survey Template

> Create a new survey template for your organization

# Create Survey Template

Create a new survey template with a custom configuration of questions, work mode, and optional custom fields.

<Note>
  **Work Mode Validation**: The backend validates that all required steps for the selected work mode are enabled. For example, `hybrid` requires `telecommute`, `weekly_travels`, `daily_trips`, `total_km`, and `transport` to be enabled.
</Note>

## Request

### Headers

<ParamField header="x-api-key" type="string" required>
  Your API key for authentication
</ParamField>

<ParamField header="x-organization-id" type="string" required>
  Your organization UUID
</ParamField>

### Body Parameters

<ParamField body="name" type="string" required>
  Template name (1-255 characters)

  **Example:** `"Remote Team Survey"`
</ParamField>

<ParamField body="description" type="string">
  Template description (max 1000 characters)

  **Example:** `"Survey template for fully remote employees"`
</ParamField>

<ParamField body="config" type="object" required>
  Template configuration containing work mode, steps, custom fields, and branding
</ParamField>

<ParamField body="config.work_mode" type="string" required>
  Work mode that determines which questions are shown

  **Available values:** `hybrid`, `in_person_only`, `remote_only`
</ParamField>

<ParamField body="config.steps" type="array" required>
  Array of step configurations. Each step has `key`, `enabled`, `required`, `order`, and optionally `default_value` and `description`.
</ParamField>

<ParamField body="config.custom_fields" type="array">
  Array of custom field definitions (optional)
</ParamField>

<ParamField body="status" type="string">
  Template status

  **Default:** `"active"`

  **Available values:** `draft`, `active`, `archived`
</ParamField>

<ParamField body="is_default" type="boolean">
  Whether this should be the organization's default template

  **Default:** `false`
</ParamField>

## Response

Returns the created template object.

<RequestExample>
  ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "name": "Remote Team Survey",
    "description": "Survey for fully remote employees",
    "config": {
      "version": 1,
      "work_mode": "remote_only",
      "steps": [
        { "key": "start_date", "enabled": true, "required": true, "order": 1 },
        { "key": "name", "enabled": true, "required": false, "order": 2 },
        { "key": "hours_worked_per_day", "enabled": true, "required": true, "default_value": 8, "order": 3 },
        { "key": "telecommute", "enabled": false, "required": false, "order": 4 },
        { "key": "weekly_travels", "enabled": false, "required": false, "order": 5 },
        { "key": "weekly_telecommuting", "enabled": true, "required": true, "order": 6 },
        { "key": "daily_trips", "enabled": false, "required": false, "order": 7 },
        { "key": "total_km", "enabled": false, "required": false, "order": 8 },
        { "key": "transport", "enabled": false, "required": false, "order": 9 },
        { "key": "fuel_type", "enabled": false, "required": false, "order": 10 },
        { "key": "carpooling", "enabled": false, "required": false, "order": 11 },
        { "key": "commuting_address", "enabled": false, "required": false, "order": 12 }
      ],
      "custom_fields": [],
      "branding": {}
    },
    "status": "active",
    "is_default": false
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "id": "770e8400-e29b-41d4-a716-446655440000",
    "organization_id": "a8315ef3-dd50-43f8-b7ce-d839e68d51fa",
    "name": "Remote Team Survey",
    "description": "Survey for fully remote employees",
    "is_default": false,
    "status": "active",
    "version": 1,
    "config": { "..." : "..." },
    "created_by": "user-uuid",
    "created_at": "2024-07-15T10:30:00Z",
    "updated_at": "2024-07-15T10:30:00Z"
  }
  ```
</ResponseExample>
