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

# Search projects

`GET /projects/search`

Search and filter projects using various criteria

## Query parameters

- `query` string
- `archived` 'true' | 'false'
- `watching` 'true' | 'false'
- `tag` string
- `project_status_id` integer
- `firm_user` integer
- `sort` 'name' | 'user' | 'due_date' | 'complete_num' | 'updated_at' | 'pending_tasks_count' | 'completed_tasks_count' | 'client' | 'action_items' | 'last_uploaded' | 'last_visited' | 'project_status_position' | 'first_sent_for_review_at'
- `direction` 'asc' | 'desc'
- `query_type` 'and' | 'or'
- `filters` object[]
  - `type` 'enum' | 'string' | 'date' | 'number', required — Data type - 'enum' for array fields, 'string' for text, 'date' for dates, 'number' for numeric
  - `field` 'project_status' | 'tags' | 'contact_tags' | 'entity_tags' | 'owner' | 'watcher' | 'tasks_completion_percentage' | 'name' | 'due_date' | 'created_at' | 'updated_at', required — Field to filter on
  - `criteria` 'has_any_of' | 'has_all_of' | 'has_none_of' | 'equals' | 'not_equals' | 'less_than' | 'less_than_or_equal_to' | 'greater_than' | 'greater_than_or_equal_to' | 'between' | 'not_between' | 'contains' | 'starts_with' | 'ends_with' | 'does_not_equal' | 'does_not_contain' | 'does_not_start_with' | 'does_not_end_with' | 'before' | 'on_or_before' | 'after' | 'on_or_after' | 'never', required — Filter criteria (depends on field and type)
  - `value` union — Single value for string, numeric, or date filters. For tasks_completion_percentage, value is 0-100 (percentage)
    - string
    - number
  - `values` union[] — Array of values for multi-value filters (use value OR values, not both). For between/not_between criteria, provide [start, end] values.
    - union
      - string
      - integer

## Response `200`

Successful response with filtered projects

- object
  - `data` Project[]
    - `id` integer
    - `name` string
    - `tax_year` integer, nullable — Four-digit year parsed from the project name, or null if the name contains no recent year.
    - `idempotency_key` string, nullable
    - `metadata` object
    - `last_uploaded` string, date-time, nullable — When a file was last uploaded to this project, or null if none has been.
    - `updated_at` string, date-time
    - `archived_at` string, date-time, nullable — When the project was archived, or null if it is active.
    - `user` User
      - `id` integer
      - `email` string
      - `first_name` string
      - `last_name` string
      - `idempotency_key` string, nullable
    - `project_status` ProjectStatus
      - `id` integer
      - `name` string
      - `position` integer

---

[API](https://skmtc.net/gettruss/apis/api-v1.md) · [All operations](https://skmtc.net/gettruss/apis/api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gettruss/api-v1/versions/7c956b3d1bdf/schema)
