List Specs
List every Spec in your workspace with its schema, published version, and links. A Spec and the schema it runs on are two records with two different IDs.
A Spec is the authoring document behind /specs/{id} in the app. Publishing a Spec *materializes* it onto a schema, which is what pipelines actually run. The two are separate records with separate IDs: the ID in the Spec editor URL is not the schema ID, and vice versa.
/specs/... browser URL and look it up under /v1/schemas/{id}, you will get a 404 — not because the Spec is missing, but because that endpoint is keyed on schema IDs. Use schema_id below to cross over, or spec_id on GET /v1/schemas to cross back.search filters by name, case-insensitively; % and _ in the query are treated literally, so searching order_ matches only names containing that exact text. Pagination is keyset-based: the opaque cursor encodes the last row's creation time and id, keeping pages stable while Specs are being created, and pagination.total reflects the filtered count before the cursor is applied, so it stays constant across pages.
/v1/specsQuery parameters
List Specs
curl -H "Authorization: Bearer $TALONIC_API_KEY" \
"https://api.talonic.com/v1/specs?limit=20"Response
Response fields
Response
{
"data": [
{
"id": "e2144027-39c0-44e8-a196-72be1e360749",
"name": "Order Intake V25",
"description": null,
"schema_id": "2e3ddf8c-b9ab-4934-bb11-a371e9c5d7a8",
"version": 3,
"materialized_version": 3,
"materialized_at": "2026-04-25T14:30:00.000Z",
"field_count": 60,
"node_count": 7,
"created_at": "2026-04-20T09:12:00.000Z",
"updated_at": "2026-04-25T14:30:00.000Z",
"links": {
"self": "/v1/specs/e2144027-39c0-44e8-a196-72be1e360749",
"versions": "/v1/specs/e2144027-39c0-44e8-a196-72be1e360749/versions",
"schema": "/v1/schemas/2e3ddf8c-b9ab-4934-bb11-a371e9c5d7a8",
"rail": "/v1/schemas/2e3ddf8c-b9ab-4934-bb11-a371e9c5d7a8/rail",
"dashboard": "https://app.talonic.com/specs/e2144027-39c0-44e8-a196-72be1e360749"
}
}
],
"pagination": { "total": 6, "limit": 20, "has_more": false, "next_cursor": null }
}Each row's links object carries the useful next hops: versions for the publish history and — once the Spec has been published — schema and rail on the schema-keyed side of the API, plus dashboard, a deep link into the Spec editor for humans. field_count and node_count are cheap summary counters; node_count counts rail stages as authored, which is not the number of executable phases — the compiled plan lives on [Get a Spec](get-spec).
Specs are read-only over the API. Authoring happens in the Spec editor, which re-converges the live schema on every publish — an API write would be overwritten by the next one.