---
title: "List all intents for the authenticated workspace, optionally filtered by status, ordered by updated_at descending."
method: GET
path: "/api/v1/intents"
tags: ["intents"]
---

# List all intents for the authenticated workspace, optionally filtered by status, ordered by updated_at descending.

`GET /api/v1/intents`

List path uses INTENT_LIST_SELECT which does NOT join edge cases or evidence: edgeCases and evidenceIds always come back as empty arrays [] here (populate them via the detail endpoint GET /api/v1/intents/:id). relations IS populated on the list path. Rows that fail apiIntentSchema.parse are silently skipped (logged), so count may be less than the raw row count. Default order: updated_at descending. No rate limiting on this GET.

## Query parameters

- `status` string
- `workspace_id` string

## Response `200`

OK — returns { intents, count }

- object

## Other responses

- `400` — Cookie-session auth only: workspace_id query param missing
- `401` — Invalid/expired API key, or no Bearer key and no valid session cookie
- `403` — Authenticated but lacks read scope (or, for cookie auth, not a member of the workspace)
- `500` — DB error fetching intents or unexpected internal error

## Changes

> 5 revisions in range; 2 could not be searched.

- **2026-08-23** `155c812b368b` — 4 info
  - added the optional property `details` to the response with the `400` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `details` to the response with the `403` status
  - added the optional property `details` to the response with the `500` status

[Change history](https://skmtc.dev/pathmode/apis/pathmode-api/changes/api/v1/intents/get.md)

---

[API](https://skmtc.dev/pathmode/apis/pathmode-api.md) · [All operations](https://skmtc.dev/pathmode/apis/pathmode-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/pathmode/pathmode-api/revisions/e419abb0a327/schema)
