Commands that return structured API data support four formats. JSON is the default.
Select a format for one command, save a default, or use an environment variable:
--output can appear before or after the command. Commands use it when their action supports formatted output; the exceptions are listed below.
What each format emits
JSON and YAML
Machine formats preserve API values: a duration remains 1500, rather than the display string "1.5s". Single-resource API responses are unwrapped from their outer data envelope. Cursor-paginated results retain rows under data and the continuation under nextCursor:
Read rows with jq '.data[]' and check .nextCursor for continuation. A null cursor means pagination is finished; inspect any command-specific truncation flags or notices too. See Pagination for limits and memory behavior.
Tables and text
Tables show UTC timestamps without milliseconds, formatted sizes, yes/no booleans, and formatted monetary amounts. Each command's reference specifies its units. Long table cells are clipped to one line; use JSON or YAML to inspect the returned value in full.
Text uses the same formatted cells, flattened to one line and separated by tabs. Lists have no header or color; single records use a label and value on each line. Text values are not clipped to the table's column width:
An absent value displays as an em dash in a table and an empty field in text. Use JSON when field types or empty-field positions matter.
Separate results and diagnostics
Results go to stdout. Errors, progress, update notices, and operational notes go to stderr, so this pipe receives only the result:
In JSON/YAML mode, API errors use an error object on stderr with code, message, and optional details. Configuration errors, argument-parser errors, and some command outcome messages remain text. See Exit codes before branching on a command's outcome.
Reading a run in detail
In table mode, sim logs get prints a summary. Add --trace to print recursive spans with inputs, outputs, errors, timing, and cost:
JSON and YAML include the returned trace without --trace; the flag does not change those formats:
Exceptions
File downloads refuse binary content on an interactive terminal. Pipe stdout or use --output-file; overwriting an existing output file requires --force.
Workflow import accepts JSON. Pin that format when exporting a file you plan to import, even if your profile prefers YAML: