/api/v2/templates

POST
Core Resources • Templates

Create a template

Description

Create a new template. The attributes.target_type field is a discriminator that selects one of four creation paths, each with its own required model_attributes shape and permission check.

target_type Creates Required model_attributes keys Permission
project Empty workspace (no copy support — see /projects/copy) client_id, project_manager_id, project_type_id, workflow_id projects.manage (project manager)
budget New quote (or copies one when target_id is set) none required; optional editor_config, tracking_type_id, color_id can_manage_budgets?
deal New quote (or copies one when target_id is set) none required; optional editor_config, color_id, retainer_interval / retainer_interval_count (retainer feature only) can_manage_deals?
page New page (or copies one when target_id is set); supports copy_attributes.copy_memberships and copy_attributes.copy_subpages none can_manage_docs?

Create a project template (fresh workspace)

{
  "data": {
    "type": "templates",
    "attributes": {
      "name": "Onboarding playbook",
      "description": "Standard intake project for new clients.",
      "target_type": "project",
      "model_attributes": {
        "client_id": 412,
        "project_manager_id": 13,
        "project_type_id": 2,
        "workflow_id": 1,
        "project_color_id": 5
      }
    }
  }
}

Create a budget template (fresh quote)

{
  "data": {
    "type": "templates",
    "attributes": {
      "name": "Standard retainer scaffold",
      "target_type": "budget",
      "model_attributes": {
        "tracking_type_id": 1,
        "color_id": 5
      }
    }
  }
}

Create a budget template by copying an existing budget

{
  "data": {
    "type": "templates",
    "attributes": {
      "name": "Q3 enterprise migration template",
      "target_type": "budget",
      "target_id": "98231",
      "model_attributes": { "color_id": 5 }
    }
  }
}

Create a deal template

{
  "data": {
    "type": "templates",
    "attributes": {
      "name": "Standard outbound deal",
      "target_type": "deal",
      "model_attributes": {
        "color_id": 5,
        "retainer_interval": "month",
        "retainer_interval_count": 12
      }
    }
  }
}

Create a page template by copying an existing page

{
  "data": {
    "type": "templates",
    "attributes": {
      "name": "Engineering RFC template",
      "target_type": "page",
      "target_id": "55421",
      "copy_attributes": { "copy_memberships": false, "copy_subpages": true }
    }
  }
}

Save as Template — to create a project template from an existing project (boards, tasks, settings copied), use POST /projects/copy with attributes.copy_as_template: true. The target_type=project path on this endpoint only creates a fresh, empty template.

Loading parameters…
Loading request bodies…
Loading responses…