---
title: "Quick search (tasks + projects)"
method: GET
path: "/search"
tags: ["Users"]
---

# Quick search (tasks + projects)

`GET /search`

## Request

- Base URL: `https://tasg.app/api/v1`
- URL: `https://tasg.app/api/v1/search`
- Auth: HTTP bearer

Title/name `contains` search within one workspace, limited to the caller's projects. Both parameters are effectively required: without them the result is empty.

## Query parameters

- `q` string, required
- `workspace_id` string, uuid, required

## Response `200`

Matches.

- SearchResults
  - `tasks` object[], required: Up to 8 top-level tasks, most recently updated first.
    - `id` string, uuid, required
    - `title` string, required
    - `status` 'not_started' | 'in_progress' | 'blocked' | 'completed', required: Lifecycle state. `blocked` is set automatically while a dependency is incomplete.
    - `priority` 'none' | 'low' | 'medium' | 'high' | 'urgent', required
    - `primary_project_id` string, uuid, required
    - `due_date` string, date-time, nullable
    - `project_name` string, required
    - `project_color` string, required
  - `projects` object[], required: Up to 5 projects.
    - `id` string, uuid, required
    - `name` string, required
    - `color` string, required
    - `task_count` integer, required

## Other responses

- `401`: Missing, invalid, expired or revoked credentials.
- `403`: Authenticated, but not allowed: not a member, insufficient project role or the API token lacks the required scope.
- `429`: Rate limited. Back off and retry after the window in the `RateLimit-*` headers.

---

[API](https://skmtc.dev/tasg/apis/tasg-api.md) · [All operations](https://skmtc.dev/tasg/apis/tasg-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tasg/apis/tasg-api/revisions/cd2a1dbaf5cf?raw)
