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

---

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