Skip to main content
List a table’s columns with just their id, name, type, last-updated time, and — on source columns — per-source record counts. For basic and action columns’ full settings, use clay tables columns get.
clay tables columns list <tableId>

Arguments

ArgumentDescription
tableIdThe id of the table whose columns to list. Required.

Output

Each column is discriminated on type. The sources array is present only on source columns, with one entry per attached source and its imported-record count.
{
  "data": [
    {
      "type": "basic",
      "id": "col_abc",
      "name": "Email",
      "updatedAt": "2026-01-01T00:00:00.000Z"
    },
    {
      "type": "source",
      "id": "col_src",
      "name": "Imported CSV",
      "updatedAt": "2026-01-01T00:00:00.000Z",
      "sources": [{ "id": "src_1", "name": "leads.csv", "numSourceRecords": 500 }]
    }
  ]
}
FieldTypeDescription
data[].type"basic" | "action" | "source"Column kind. Discriminates the shape.
data[].idstringColumn id.
data[].namestringDisplay name.
data[].updatedAtstringLast-updated timestamp.
data[].sourcesarraySource columns only. One entry per attached source.
data[].sources[].numSourceRecordsnumberNumber of records imported from that source.
Column types: basic is a plain data column (optionally formula-backed), action runs an action or enrichment to populate the column, and source represents attached data source(s) and carries no settings.

Errors

CodeExitNotes
validation_error2The tableId argument is required, or the table is an archive table.
not_found6No table with that id in the workspace.
auth_forbidden3The API key lacks the cli:all scope, or you cannot read this table.

Examples

clay tables columns list tbl_123
clay tables columns list tbl_123 | jq -r '.data[].name'
clay tables columns list tbl_123 | jq -r '.data[] | select(.type == "source") | .sources[].numSourceRecords'