---
title: "List project templates"
method: GET
path: "/v1/project_templates"
tags: ["Project Templates"]
---

# List project templates

`GET /v1/project_templates`

List project templates. Optionally filter by book_id to return templates usable for a specific book, including company-wide templates.

## Query parameters

- `book_id` string
- `projectable_kind` 'household' | 'contact' | 'business'
- `page` integer
- `per_page` integer

## Response `200`

project templates retrieved

- object
  - `data` ProjectTemplate[], required
    - `id` string, required — The project template ID
    - `guid` string — The project template GUID
    - `title` string, required — The template title
    - `description` string, nullable
    - `projectable_kind` 'household' | 'contact' | 'business' — The related record kind this template supports
    - `enable_kanban_view` boolean
    - `book_id` string, nullable — The owning book ID, or null for company-wide templates
    - `order_index` integer
    - `book_name` string, nullable
    - `book_initials` string, nullable
    - `attachments` ProjectAttachment[]
      - `file_name` string
      - `file_type` string
      - `file_size` integer
      - `source` string
      - `signed_id` string
      - `download_url` string, nullable
      - `view_url` string, nullable
    - `project_milestones` ProjectMilestone[], required
      - `id` string, required — The project milestone ID
      - `guid` string — The project milestone GUID
      - `title` string, required — The milestone title
      - `color` string, nullable — Milestone display color
      - `sort_order` integer, nullable — Milestone sort order
      - `auto_advance_trigger` 'all_tasks_completed' | 'meeting_scheduled' | 'meeting_completed'
      - `project_template_id` string, required — The project template ID
      - `created_at` string, date-time — When the milestone was created
      - `updated_at` string, date-time — When the milestone was last updated
      - `project_milestone_outcomes` ProjectMilestoneOutcome[]
        - `id` string, required — The milestone outcome ID
        - `label` string, required — The outcome label
        - `default_comment` string, nullable — Default comment for this outcome
        - `destination` 'next_milestone' | 'specific_milestone' | 'complete_project', required — Where this outcome moves the project
        - `sort_order` integer, nullable — Outcome sort order
        - `target_project_milestone_id` string, nullable — Target milestone ID for specific milestone outcomes
      - `project_milestone_form_fields` ProjectMilestoneFormField[]
        - `id` string, required — The form field ID
        - `guid` string — The form field GUID
        - `label` string, required — The field label
        - `field_type` 'text' | 'textarea' | 'number' | 'date' | 'select' | 'boolean' | 'currency' | 'household_record' | 'file_attachment', required
        - `required` boolean, required — Whether this field is required
        - `placeholder` string, nullable
        - `sort_order` integer — Field sort order
        - `household_record_source` string, nullable
        - `select_options` string[], nullable
    - `created_at` string, date-time
    - `updated_at` string, date-time
  - `pagination` object, required
    - `current_page` integer
    - `total_pages` integer
    - `total_count` integer
    - `per_page` integer

## Other responses

- `400` — invalid projectable kind
- `401` — unauthorized - missing or invalid token
- `403` — forbidden

---

[API](https://skmtc.net/slant/apis/slant-public-api-v1.md) · [All operations](https://skmtc.net/slant/apis/slant-public-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/slant/slant-public-api-v1/revisions/b56e0d137554/schema)
