---
title: "List Specs"
method: GET
path: "/v1/specs"
tags: ["Specs"]
---

# List Specs

`GET /v1/specs`

## Request

- Base URL: `https://api.talonic.com`
- URL: `https://api.talonic.com/v1/specs`
- Auth: HTTP bearer

Every Spec in the workspace. A Spec is the authoring document behind
`/specs/{id}` in the app; running it materializes onto a schema, and
`schema_id` on each row is that schema — a **different** id from the
Spec's own. Pair with `spec_id` on `GET /v1/schemas` to cross in the
other direction.

## Query parameters

- `limit` integer
- `cursor` string
- `order` 'asc' | 'desc'
- `search` string

## Response `200`

Paginated list of Specs.

- object
  - `data` SpecSummary[]
    - `id` string, uuid, required: The Spec id — the one in the `/specs/{id}` editor URL.
    - `name` string, required
    - `description` string, nullable
    - `schema_id` string, uuid, nullable: The schema this Spec is materialized onto — a DIFFERENT record from the Spec. `null` until the Spec is first published. Use it against `/v1/schemas/{schema_id}` and its sub-resources.
    - `version` integer, nullable: Published head version — what the editor shows. `null` if never published.
    - `materialized_version` integer, nullable: The version whose configuration is live on the schema — what a run executes. Normally equal to `version`; it lags when a publish was refused by the acknowledgement gate or a stale activation no-opped.
    - `materialized_at` string, date-time, nullable
    - `field_count` integer: Fields declared by the Spec.
    - `node_count` integer: Stages in the rail — the `nodes` count on the detail route. NOT the number of executable phases: a Source or Data Product marker compiles to no phase and a validation checkpoint expands to one per gate, so read `phases` on `GET /v1/specs/{id}` for the executable plan.
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `links` object
      - `self` string
      - `versions` string
      - `schema` string: Present only once the Spec has a schema.
      - `rail` string: Present only once the Spec has a schema.
      - `dashboard` string, uri
  - `pagination` object
    - `total` integer, required: Total number of matching records.
    - `limit` integer, required: Requested page size.
    - `has_more` boolean, required: Whether more pages exist.
    - `next_cursor` string, nullable, required: Cursor to pass for the next page. Null if no more pages.

## Other responses

- `401`: Missing or invalid API key.
- `429`: Daily rate limit exceeded.

---

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