---
title: "List projects"
method: GET
path: "/v1/projects"
tags: ["Projects"]
---

# List projects

`GET /v1/projects`

List active projects. Pass include_inactive=true or a status filter to include completed or cancelled projects.

## Query parameters

- `book_id` string
- `status` 'in_progress' | 'overdue' | 'completed' | 'cancelled'
- `household_id` string
- `projectable_type` 'Household' | 'Contact' | 'Business'
- `projectable_id` string
- `project_template_id` string
- `project_milestone_id` string
- `assigned_to_id` string
- `updated_since` string, date-time
- `without_projectable` 'true' | 'false'
- `include_inactive` 'true' | 'false'
- `page` integer
- `per_page` integer

## Response `200`

inactive projects included

- object
  - `data` Project[], required
    - `id` string, required — The project ID
    - `name` string, required — The project name
    - `status` 'in_progress' | 'overdue' | 'completed' | 'cancelled', required — Project status
    - `milestone_progress` integer, nullable — Percent complete for the current milestone
    - `overall_progress` integer, nullable — Percent complete for the whole project
    - `milestone_updated_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `book_id` string, required — The book ID
    - `project_template_id` string — The project template ID
    - `project_milestone_id` string — The current project milestone ID
    - `assigned_to_id` string, nullable — Assigned user ID
    - `created_by_id` string, nullable — Creator user ID
    - `household_id` string, nullable — Attached household ID for household projects
    - `projectable_type` 'Household' | 'Contact' | 'Business', nullable — Related record model type, or null for ownerless projects
    - `projectable_id` string, nullable — Related record ID, or null for ownerless projects
    - `description` object
      - `html` string, nullable
      - `markdown` string, nullable
      - `nodes` unknown
      - `preferred_format` string
    - `comments_count` integer — Active comment count
    - `milestone_progresses` object[]
    - `visited_project_milestone_ids` string[]
    - `attachments` ProjectAttachment[]
      - `file_name` string
      - `file_type` string
      - `file_size` integer
      - `source` string
      - `signed_id` string
      - `download_url` string, nullable
      - `view_url` string, nullable
    - `household` object, nullable
      - `id` string
      - `name` string
      - `type` 'Client' | 'Prospect' | 'PastClient'
    - `projectable` ProjectProjectable
      - `id` string, required — The related record ID
      - `type` 'Client' | 'Prospect' | 'PastClient' | 'Contact' | 'Business', required — The related record type
      - `name` string, required — The related record display name
      - `person` Person
        - `id` string, required — The person ID
        - `book_id` string, required — The book ID
        - `household_id` string, nullable — The household ID
        - `contact_id` string, nullable — The contact ID (present when person belongs to a contact)
        - `role_type` 'client' | 'prospect' | 'contact' | 'past_client', nullable — The entity type this person belongs to
        - `first_name` string, required
        - `middle_name` string, nullable
        - `last_name` string, required
        - `salutation` string, nullable
        - `suffix` string, nullable
        - `maiden_name` string, nullable
        - `gender` 'female' | 'male' | 'nonbinary' | 'other' | 'prefer_not_to_say', nullable
        - `designations` string, nullable
        - `household_role` 'head_of_household' | 'partner' | 'spouse' | 'dependent_child' | 'other_adult' | 'other_dependent' | 'unknown' | 'deceased' | 'non_dependent_child' | 'grandchild', nullable — Only present when person belongs to a household
        - `preferred_name` string, nullable
        - `date_of_birth` string, date, nullable — Date of birth
        - `job_title` string, nullable — Job title
        - `ssn` string, nullable — Obfuscated social security number
        - `drivers_license_number` string, nullable — Obfuscated driver's license number
        - `email_addresses` Email[] — Array of email addresses with primary designation
          - `email` string, email, required
          - `email_type` 'personal' | 'business' | 'school' | 'other', required
          - `is_primary` boolean, required
        - `phone_numbers` PhoneNumber[] — Array of phone numbers with primary designation
          - `phone_number` string, required
          - `extension` string, nullable
          - `phone_type` 'mobile' | 'work' | 'home' | 'fax' | 'other', required
          - `is_primary` boolean, required
        - `addresses` Address[] — Array of addresses with primary designation
          - `line1` string, nullable
          - `line2` string, nullable
          - `city` string, nullable
          - `state` string, nullable
          - `zip` string, nullable
          - `country_code` string, nullable
          - `address_type` 'home' | 'work' | 'mailing' | 'other', required
          - `is_primary` boolean, required
        - `employments` Employment[] — Array of employment records
          - `id` string — The employment ID
          - `person_id` string — The person ID
          - `business_name` string, required
          - `role` string, nullable
          - `start_date` string, date, nullable
          - `end_date` string, date, nullable
          - `actively_employed` boolean
        - `custom_fields` object — Custom field values as key-value pairs
    - `assigned_to` User
      - `id` string, required — The ID of the user
      - `email` string, email, required — Email address of the user
      - `first_name` string, nullable, required — First name of the user
      - `last_name` string, nullable, required — Last name of the user
      - `api_access` object — Authentication details for the current personal access token. Only present on /v1/me when authenticating with a PAT.
        - `auth_type` 'personal_access_token'
        - `scope` 'read_only' | 'read_write'
    - `created_by` User
      - `id` string, required — The ID of the user
      - `email` string, email, required — Email address of the user
      - `first_name` string, nullable, required — First name of the user
      - `last_name` string, nullable, required — Last name of the user
      - `api_access` object — Authentication details for the current personal access token. Only present on /v1/me when authenticating with a PAT.
        - `auth_type` 'personal_access_token'
        - `scope` 'read_only' | 'read_write'
    - `project_milestone` 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
    - `project_template` 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
    - `project_form_field_responses` ProjectFormFieldResponse[]
      - `id` string, required — The form field response ID
      - `project_milestone_form_field_id` string, required — The form field ID
      - `value` unknown
      - `display_value` string, nullable — Display value for household record or file attachment fields
    - `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 status

---

[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)
