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

# List projects

`GET /projects`

## Request

- Base URL: `https://api.pipelinecrm.com/api/v3`
- URL: `https://api.pipelinecrm.com/api/v3/projects`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer and API key in header `app-key`
  - API key in query parameter `api_key` and API key in query parameter `app_key`

**Filtered request example** — Open projects owned by one user that started this quarter:

```
curl -g -H "Authorization: Bearer pcrm_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  "https://api.pipelinecrm.com/api/v3/projects.json?conditions[project_status]=open&conditions[project_owner]=13&conditions[project_start_date][selection]=this_quarter&per_page=50"
```

## Query parameters

- `conditions` ProjectConditions
  - `project_id` string: Comma-separated list of project IDs to return
  - `project_name` string: Returns records that match a `LIKE` query on the `name` field
  - `project_owner` integer: Returns records owned by the [User](#tag/users) with this ID
  - `project_status` 'open' | 'closed': Returns records with the given status
  - `project_is_archived` 'Yes' | 'No': Returns records with the given archived status
  - `project_start_date` union: A date or datetime filter. Send ONE of the forms below (see the Filtering guide): a single day `2026-01-15`; a bounded range `[from_date]=2026-01-01&[to_date]=2026-03-31` (either side optional); a relative period `[selection]=last_30` or `[selection]=this_quarter`; or a relative count `[selection]=last_x_days&[duration]=14`.
    - string: A single day (`YYYY-MM-DD`) or a relative period keyword such as `today`, `yesterday`, `this_week`, `last_week`, `next_week`, `this_month`, `last_month`, `next_month`, `this_quarter`, `last_quarter`, `next_quarter`, `this_year`, `last_year`, `year_to_date`, `last_7`, `last_30`, `last_60`, `last_90`, `next_7`, `next_30`, `next_60`, `next_90`, `last_3_months`, `next_3_months`, `last_6_months`, `next_6_months`, `last_12_months`, `next_12_months`, `past_due`, `future`.
    - object: An explicit range. Either bound may be omitted.
      - `from_date` string, date
      - `to_date` string, date
    - object: A relative period counted in whole units.
      - `selection` 'last_x_days' | 'next_x_days' | 'last_x_weeks' | 'next_x_weeks' | 'last_x_months' | 'next_x_months' | 'last_x_quarters' | 'next_x_quarters' | 'last_x_years' | 'next_x_years' | 'older_than', required
      - `duration` integer, required
  - `project_end_date` union: A date or datetime filter. Send ONE of the forms below (see the Filtering guide): a single day `2026-01-15`; a bounded range `[from_date]=2026-01-01&[to_date]=2026-03-31` (either side optional); a relative period `[selection]=last_30` or `[selection]=this_quarter`; or a relative count `[selection]=last_x_days&[duration]=14`.
    - string: A single day (`YYYY-MM-DD`) or a relative period keyword such as `today`, `yesterday`, `this_week`, `last_week`, `next_week`, `this_month`, `last_month`, `next_month`, `this_quarter`, `last_quarter`, `next_quarter`, `this_year`, `last_year`, `year_to_date`, `last_7`, `last_30`, `last_60`, `last_90`, `next_7`, `next_30`, `next_60`, `next_90`, `last_3_months`, `next_3_months`, `last_6_months`, `next_6_months`, `last_12_months`, `next_12_months`, `past_due`, `future`.
    - object: An explicit range. Either bound may be omitted.
      - `from_date` string, date
      - `to_date` string, date
    - object: A relative period counted in whole units.
      - `selection` 'last_x_days' | 'next_x_days' | 'last_x_weeks' | 'next_x_weeks' | 'last_x_months' | 'next_x_months' | 'last_x_quarters' | 'next_x_quarters' | 'last_x_years' | 'next_x_years' | 'older_than', required
      - `duration` integer, required
  - `project_created_at` union: A date or datetime filter. Send ONE of the forms below (see the Filtering guide): a single day `2026-01-15`; a bounded range `[from_date]=2026-01-01&[to_date]=2026-03-31` (either side optional); a relative period `[selection]=last_30` or `[selection]=this_quarter`; or a relative count `[selection]=last_x_days&[duration]=14`.
    - string: A single day (`YYYY-MM-DD`) or a relative period keyword such as `today`, `yesterday`, `this_week`, `last_week`, `next_week`, `this_month`, `last_month`, `next_month`, `this_quarter`, `last_quarter`, `next_quarter`, `this_year`, `last_year`, `year_to_date`, `last_7`, `last_30`, `last_60`, `last_90`, `next_7`, `next_30`, `next_60`, `next_90`, `last_3_months`, `next_3_months`, `last_6_months`, `next_6_months`, `last_12_months`, `next_12_months`, `past_due`, `future`.
    - object: An explicit range. Either bound may be omitted.
      - `from_date` string, date
      - `to_date` string, date
    - object: A relative period counted in whole units.
      - `selection` 'last_x_days' | 'next_x_days' | 'last_x_weeks' | 'next_x_weeks' | 'last_x_months' | 'next_x_months' | 'last_x_quarters' | 'next_x_quarters' | 'last_x_years' | 'next_x_years' | 'older_than', required
      - `duration` integer, required
  - `project_updated_at` union: A date or datetime filter. Send ONE of the forms below (see the Filtering guide): a single day `2026-01-15`; a bounded range `[from_date]=2026-01-01&[to_date]=2026-03-31` (either side optional); a relative period `[selection]=last_30` or `[selection]=this_quarter`; or a relative count `[selection]=last_x_days&[duration]=14`.
    - string: A single day (`YYYY-MM-DD`) or a relative period keyword such as `today`, `yesterday`, `this_week`, `last_week`, `next_week`, `this_month`, `last_month`, `next_month`, `this_quarter`, `last_quarter`, `next_quarter`, `this_year`, `last_year`, `year_to_date`, `last_7`, `last_30`, `last_60`, `last_90`, `next_7`, `next_30`, `next_60`, `next_90`, `last_3_months`, `next_3_months`, `last_6_months`, `next_6_months`, `last_12_months`, `next_12_months`, `past_due`, `future`.
    - object: An explicit range. Either bound may be omitted.
      - `from_date` string, date
      - `to_date` string, date
    - object: A relative period counted in whole units.
      - `selection` 'last_x_days' | 'next_x_days' | 'last_x_weeks' | 'next_x_weeks' | 'last_x_months' | 'next_x_months' | 'last_x_quarters' | 'next_x_quarters' | 'last_x_years' | 'next_x_years' | 'older_than', required
      - `duration` integer, required

## Response `200`

Successful Response

- object
  - `entries` ProjectAll[], required
    - `id` integer: Unique identifier
    - `archived_at` string, nullable: Timestamp when the project was archived, or null if active
    - `is_sample` boolean: Whether this project was created from sample data seeded for the account
    - `is_archived` boolean: Whether the project is currently archived
    - `is_active` boolean: Whether the project is currently active (not archived)
    - `created_by_user_id` integer, nullable: The ID of the [user](#tag/users) who created this project
    - `owner` object, nullable: A convenience object for the project [owner](#tag/users)
      - `id` integer
      - `first_name` string
      - `last_name` string
      - `email` string
    - `created_by_user` object, nullable: A convenience object for the [user](#tag/users) who created this project
      - `id` integer
      - `first_name` string
      - `last_name` string
    - `counts` object: Count of associated records
      - `collaborators` integer
      - `milestones` integer
      - `deals` integer
      - `companies` integer
      - `people` integer
    - `stats` object: Project progress statistics
      - `milestones_completed` integer
      - `todos_completed` integer
      - `todos_total` integer
      - `overdue_tasks` integer
      - `days_left` integer, nullable
      - `days_planned` integer, nullable
    - `deals` object[]: Associated [deals](#tag/deals) with summary info (show endpoint only)
      - `id` integer
      - `name` string
      - `value` number, float, nullable
      - `stage` string, nullable
      - `owner` string, nullable
      - `company` string, nullable
      - `expected_close_date` string, nullable
      - `status` string, nullable
    - `companies` object[]: Associated [companies](#tag/companies) with summary info (show endpoint only)
      - `id` integer
      - `name` string
      - `owner` string, nullable
      - `city` string
      - `state` string
      - `country` string
    - `people` object[]: Associated [people](#tag/people) with summary info (show endpoint only)
      - `id` integer
      - `first_name` string
      - `last_name` string
      - `full_name` string
      - `email` string
      - `phone` string
      - `company` string, nullable
      - `owner` string, nullable
    - `collaborators` object[]: Project collaborators (show endpoint only)
      - `id` integer
      - `collaborator_type` 'User' | 'Team'
      - `collaborator_id` integer
      - `collaborator_name` string
      - `created_at` string
    - `milestones` object[]: Summary of associated [milestones](#tag/project-milestones) (show endpoint only)
      - `id` integer
      - `name` string
      - `status` string
      - `status_color` string
      - `created_at` string
      - `updated_at` string
    - `project_milestones` object[]: Detailed milestones with nested tasks for form support (show endpoint only)
      - `id` integer
      - `name` string
      - `project_milestone_status_id` integer
      - `project_milestone_status` object
        - `id` integer
        - `name` string
        - `hex_color` string
      - `start_date` string
      - `end_date` string
      - `created_at` string
      - `updated_at` string
      - `tasks` object[]
        - `id` integer
        - `name` string
        - `due_date` string
        - `completed` boolean
        - `owner_id` integer
        - `recurrence_frequency` string
        - `owner` object
          - `id` integer
          - `full_name` string
          - `avatar_url` string
          - `avatar_file_file_name` string
        - `priority` object
          - `id` integer
          - `name` string
          - `hex_color` string
        - `category` object
          - `id` integer
          - `name` string
        - `calendar_entry_status` object: Included only when the task has a calendar entry status set
          - `id` integer
          - `name` string
          - `hex_color` string
    - `deal_ids` integer[]: IDs of [Deals](#tag/deals) to associate with this project
    - `person_ids` integer[]: IDs of [People](#tag/people) to associate with this project
    - `company_ids` integer[]: IDs of [Companies](#tag/companies) to associate with this project
    - `custom_fields` object: Custom fields for the project. See [custom fields](#tag/custom-fields) section for more info.
    - `created_at` string: Timestamp when the record was created (time zone in user's time zone).
    - `updated_at` string: Timestamp when the record was last touched (time zone in user's time zone).
    - `name` string: The name of the project. Must be unique within the account (among non-archived projects).
    - `description` string, nullable: Explanatory or descriptive text about the project
    - `status` 'open' | 'closed': The status of the project: - `open`: Active project - `closed`: Completed project
    - `start_date` string, nullable: The start date of the project (YYYY-MM-DD format)
    - `end_date` string, nullable: The end date of the project (YYYY-MM-DD format). Must be after start_date.
    - `owner_id` integer: The ID of the [user](#tag/users) who owns this project. Cannot be an external user.
    - `hex_color` string, nullable: The color associated with the project (hex code)
    - `user_ids` integer[]: IDs of [Users](#tag/users) to add as collaborators on this project
    - `team_ids` integer[]: IDs of [Teams](#tag/teams) to add as collaborators on this project
    - `project_milestones_attributes` object[]: Nested milestone attributes for creating/updating milestones inline with the project
      - `id` integer: Milestone ID (required for updates, omit for new milestones)
      - `name` string
      - `project_milestone_status_id` integer
      - `start_date` string
      - `end_date` string
      - `_destroy` boolean: Set to true to remove this milestone
    - `project_template_id` integer: Create-only. The ID of the [project template](#tag/project-templates) to seed this project from. Provided as a property of the `project` object on create. Ignored on update.
    - `source_deal_id` integer: Create-only. The ID of the [deal](#tag/deals) to source initial project data from. Provided as a property of the `project` object on create. Ignored on update.
  - `pagination` Pagination, required: Paging details returned alongside `entries` on every paginated list.
    - `page` integer: The page returned. Request another with `?page=N`.
    - `per_page` integer: Page size. `?per_page=N`, capped at 200.
    - `total` integer: Total number of records matching the request across all pages.
    - `pages` integer: Number of pages at this `per_page`.
    - `total_in_account` integer, nullable: Total number of records of this type visible to you before filters were applied. Null when not computed for the endpoint.
    - `page_var` string: Name of the query parameter that selects the page. Always `page`.
    - `url` string, nullable: Path of the request, when the endpoint reports it.

## Other responses

- `401`: Missing, invalid, expired or revoked credentials.
- `403`: The credentials are valid but this user may not perform the action (permissions, a read-only token, or API access switched off).

---

[API](https://skmtc.dev/pipelinecrm/apis/pipeline-crm-api.md) · [All operations](https://skmtc.dev/pipelinecrm/apis/pipeline-crm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pipelinecrm/apis/pipeline-crm-api/revisions/53ebfcc83597?raw)
