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

# Create template

> Create a new template from an agent, workflow, or entire workspace via the Nedzo REST API. Snapshots configuration for sharing or reuse.

Create a new template. Specify `templateType` as `"agent"`, `"workflow"`, or `"workspace"`. For `agent`/`workflow` provide the corresponding `agentId`/`workflowId`. For `workspace`, the entire workspace is snapshotted (all agents, workflows, custom fields, and tags; contacts and conversations are excluded).

<Tip>
  `workspaceId` is required for **account-scoped** API keys and inferred from the key for **workspace-scoped** keys. See [Workspace ID and Request Scope](/authentication#workspace-id-and-request-scope).
</Tip>

## Body Parameters

<ParamField body="workspaceId" type="string" optional>
  Source workspace. For `agent`/`workflow` templates: the workspace containing the source entity. For `workspace` templates: the workspace to snapshot. Required for account-scoped API keys, inferred from workspace-scoped keys if omitted.
</ParamField>

<ParamField body="templateType" type="string" required>
  Type of template to create. One of `agent`, `workflow`, or `workspace`.
</ParamField>

<ParamField body="agentId" type="string">
  Agent ID to create template from. Required when `templateType` is `"agent"`.
</ParamField>

<ParamField body="workflowId" type="string">
  Workflow ID to create template from. Required when `templateType` is `"workflow"`.
</ParamField>

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

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

<RequestExample>
  ```bash Agent theme={null}
  curl -X POST "https://api.nedzo.ai/v1/templates" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "workspaceId": "789e4567-e89b-12d3-a456-426614174000",
        "templateType": "agent",
        "agentId": "456e4567-e89b-12d3-a456-426614174000",
        "name": "Customer Onboarding Agent",
        "description": "A voice agent template for onboarding"
      }'
  ```

  ```bash Workflow theme={null}
  curl -X POST "https://api.nedzo.ai/v1/templates" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "workspaceId": "789e4567-e89b-12d3-a456-426614174000",
        "templateType": "workflow",
        "workflowId": "456e4567-e89b-12d3-a456-426614174000",
        "name": "Lead Qualification Workflow"
      }'
  ```

  ```bash Workspace theme={null}
  curl -X POST "https://api.nedzo.ai/v1/templates" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "workspaceId": "789e4567-e89b-12d3-a456-426614174000",
        "templateType": "workspace",
        "name": "Sales Team Starter",
        "description": "Full workspace setup — agents, workflows, custom fields, and tags"
      }'
  ```
</RequestExample>

<ResponseExample>
  ```json Response (201) theme={null}
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "Customer Onboarding Agent",
    "description": "A voice agent template for onboarding",
    "templateType": "agent",
    "visibility": "private",
    "schemaVersion": "1.0.0",
    "snapshotSizeBytes": 15240,

    "createdAt": "2026-01-15T10:30:00Z",
    "updatedAt": "2026-01-15T10:30:00Z"
  }
  ```
</ResponseExample>
