> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.awork.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.awork.com/_mcp/server.

# Project Templates

> Project Templates API Reference.

![awork project templates illustration](/_fern-img/191a8fe009a129b8d3f8d850f231271e2748ae2521616513c8bfefcb4eb6b845.webp)

Learn more about [project templates](https://support.awork.com/en/articles/project-templates-DhvJCSuVBExv).

## Workflows and project templates

Project templates can be connected to workflows so new projects created from that template use shared workflow statuses.

The flow is:

1. Create the project template.
2. Link the template to a workflow.

### Creating a project template

**`Create a project template`**

```sh title="Create a project template" {5}
curl -X POST https://api.awork.com/api/v1/projecttemplates \
-H "Authorization: Bearer {token}" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Client Delivery Template"
  }'
```

### Linking a project template to a workflow

**`Link template to workflow`**

```sh title="Link template to workflow" {5}
curl -X POST https://api.awork.com/api/v1/projecttemplates/123e4567-e89b-12d3-a456-426614174000/linkworkflow \
-H "Authorization: Bearer {token}" \
  -H 'Content-Type: application/json' \
  -d '{
    "workflowId": "223e4567-e89b-12d3-a456-426614174000",
    "projectStatusMapping": [
      {
        "oldProjectStatusId": "323e4567-e89b-12d3-a456-426614174000",
        "newProjectStatusId": "423e4567-e89b-12d3-a456-426614174000"
      }
    ],
    "taskStatusMapping": [
      {
        "oldTaskStatusId": "523e4567-e89b-12d3-a456-426614174000",
        "newTaskStatusId": "623e4567-e89b-12d3-a456-426614174000"
      }
    ],
    "keepCustomFields": true,
    "keepCustomAutomations": true
  }'
```

### Unlinking a project template from a workflow

**`Unlink template from workflow`**

```sh title="Unlink template from workflow"
curl -X POST https://api.awork.com/api/v1/projecttemplates/123e4567-e89b-12d3-a456-426614174000/unlinkworkflow \
-H "Authorization: Bearer {token}" \
  -H 'Content-Type: application/json'
```

## Task Bundles

**Task Bundles** (called "Task Templates" in the awork UI) are reusable containers that hold templates for tasks and task lists. They simplify recurring processes by allowing you to import a complete set of tasks and lists into projects.

Each Project Template has exactly one Task Bundle associated with it. However, Task Bundles can also exist independently and be used for importing into running projects.

**Three core concepts:**

* **Task Bundle**: Top-level container that can be global or private, holds task templates and task list templates
* **Task List Template**: Defines task lists (boards/columns) that will be created when the bundle is applied to a project
* **Task Template**: Defines individual tasks with properties like name, description, priority, planned duration, dependencies, and relative dates

When a task bundle is applied to a project, it creates actual task lists and tasks based on the templates.

### Creating a Task Bundle

The only required field for creating a task bundle is the `name`:

**`Create a new task bundle`**

```sh title="Create a new task bundle" {5}
curl -X POST https://api.awork.com/api/v1/taskbundles \
-H "Authorization: Bearer {token}" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Website Launch",
    "description": "Complete task bundle for launching a new website",
    "icon": "rocket"
  }'
```

### Creating a Task List Template

Once you have a task bundle, you can create task list templates within it:

**`Create a task list template`**

```sh title="Create a task list template" {5}
curl -X POST https://api.awork.com/api/v1/taskbundles/123e4567-e89b-12d3-a456-426614174000/tasklisttemplates \
-H "Authorization: Bearer {token}" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Design",
    "order": 1
  }'
```

### Creating a Task Template

Create task templates within a task bundle:

**`Create a task template`**

```sh title="Create a task template" {5-9}
curl -X POST https://api.awork.com/api/v1/taskbundles/123e4567-e89b-12d3-a456-426614174000/tasktemplates \
-H "Authorization: Bearer {token}" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Create wireframe mockups",
    "description": "Design initial wireframes for the homepage",
    "isPrio": false,
    "plannedDuration": 14400,
    "typeOfWorkId": "123e4567-e89b-12d3-a456-426614174000"
  }'
```

### Adding Task Templates to a Task List Template

Assign task templates to specific task list templates:

**`Assign task templates to a list`**

```sh title="Assign task templates to a list"
curl -X POST https://api.awork.com/api/v1/taskbundles/123e4567-e89b-12d3-a456-426614174000/tasklisttemplates/456e4567-e89b-12d3-a456-426614174000/addtasktemplates \
-H "Authorization: Bearer {token}" \
  -H 'Content-Type: application/json' \
  -d '[
    {
      "taskTemplateId": "789e4567-e89b-12d3-a456-426614174000"
    }
  ]'
```

### Applying a Task Bundle to a Project

Once your task bundle is set up, apply it to a project to create actual tasks and task lists.

When a task bundle is applied:

* **Tasks** are always created in the project
* **Task lists** are merged based on their name (existing lists with matching names are reused)

**`Apply task bundle to project`**

```sh title="Apply task bundle to project" {5}
curl -X POST https://api.awork.com/api/v1/projects/123e4567-e89b-12d3-a456-426614174000/addtaskbundle \
-H "Authorization: Bearer {token}" \
  -H 'Content-Type: application/json' \
  -d '{
    "taskBundleId": "123e4567-e89b-12d3-a456-426614174000"
  }'
```