---
title: "List a table's columns"
method: GET
path: "/tables/{tableId}/columns"
tags: ["Workspace"]
---

# List a table's columns

`GET /tables/{tableId}/columns`

## Response `200`

Column objects in the canonical list envelope. Not paginated —
`nextCursor` is always `null`.

- object — The canonical v2 list envelope. Every list endpoint returns this shape; per-endpoint `items` element types (and documented extras like `total`) are declared on each operation.
  - `object` 'list', required
  - `items` WorkspaceColumn[], required — The page of objects. Element type is per-endpoint.
    - `object` 'column', required
    - `id` string, uuid, required
    - `name` string, required
    - `slug` string, nullable, required — Stable url-safe slug, or null when the column has none.
    - `kind` 'input' | 'enrichment' | 'score' | 'sequence', required — Sequence-aware API classification of a column: * `input` — user-entered (`static`) column; the only kind writable via `POST /tables/{tableId}/rows/upsert`. * `enrichment` — `code` column that runs per row to fetch/compute a value. * `score` — relevance / fit-score column. * `sequence` — `code` column that drafts an outbound sequence (`ctx.upsertSequence(...)` / `.draftMessage(...)`, or one that already has sequences). List its sequences via `GET /tables/{tableId}/sequences`. Created via the agent or column code only — never via the upsert API.
    - `autoTrigger` boolean, required — True when the column runs automatically on new leads.
  - `nextCursor` string, nullable, required — Cursor for the next page; `null` means this is the last page.
  - `url` string, required — The path this list was fetched from (query string excluded).

## Other responses

- `404` — TABLE_NOT_FOUND.

---

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