Output formats

Commands that return structured API data support four output formats.

FormatFor
tablereading (default)
jsonpiping into jq
yamlpiping into anything that reads YAML
textshell loops — tab-separated, no header, no colour

Select one per command, save it to the profile, or set it in the environment:

studio tables get tbl_9f3c1a05d4b7426e8c2f0917ab35de64 --output json
studio configure --set-output json
STUDIO_OUTPUT=yaml studio logs list > logs.yaml

--output works before or after the command.

What each format emits

json and yaml emit the API's raw values, not the table's formatting — a duration stays 1500, not "1.5s".

Paginated lists include the rows under data and the continuation cursor under nextCursor. A null cursor means no pages remain:

{ "data": [{ "runId": "9c4f0b7e-2d81-4a35-b6e9-70f1c8a2d543" }], "nextCursor": null }

Read list rows with jq '.data[]' and check for more pages with jq '.nextCursor'.

table formats for reading: timestamps without milliseconds, sizes as 4.2 MB, booleans as yes/no, costs as $0.0142. Long cells are clipped to keep rows on one line; switch to json for the full value.

text uses the rendered cells, tab-separated, with no header or colour:

STUDIO_OUTPUT=text studio files list | while IFS=$'\t' read -r id name folder size type uploader uploaded; do
  echo "$id $name"
done

An absent value is an em-dash in table and an empty field in text.

Reading a run in detail

studio logs get prints a concise summary. Add --trace for the recursive trace with span inputs, outputs, errors, timing, and cost:

studio logs get 9c4f0b7e-2d81-4a35-b6e9-70f1c8a2d543 --trace

json and yaml always carry the complete response, so --trace is a no-op there:

studio logs get 9c4f0b7e-2d81-4a35-b6e9-70f1c8a2d543 --output json | jq '.traceSpans'

Exceptions

studio profiles and studio configure print local configuration for humans. studio files get writes the file’s raw content to stdout or --output-file.

studio chat streams reply text in table and text modes. In json or yaml mode it waits for the finished result and includes the conversation ID.

studio workflows export always emits raw JSON, or YAML when the profile says so, so that it round-trips through import:

studio workflows export 3a9e21d8-5f47-4c0b-b2ea-91d7c6034ef8 > wf.json
studio workflows import --workflow @wf.json