Skip to main content
The formo charts command group manages charts within dashboard boards. Every chart command is scoped to a board with --board-id.

formo charts list

List charts for a board, including executed results when available.
Requires boards:read scope on your API key.
OptionTypeRequiredDescription
--board-idstringBoard ID to list charts from
--pagenumberPage number, 1-indexed
--sizenumberPage size
formo charts list --board-id board_abc123 --size 25

formo charts meta

List lightweight chart metadata for a board without query results.
Requires boards:read scope on your API key.
formo charts meta --board-id board_abc123

formo charts get <chartId>

Get a single chart by ID.
Requires boards:read scope on your API key.
formo charts get chart_abc123 --board-id board_abc123

formo charts query <chartId>

Execute a saved chart query after substituting {{date_from}} and {{date_to}}.
Requires boards:read scope and a chart query that uses both date variables.
OptionTypeRequiredDescription
--board-idstringBoard ID the chart belongs to
--date-fromstringDate variable value, YYYY-MM-DD
--date-tostringDate variable value, YYYY-MM-DD
formo charts query chart_abc123 --board-id board_abc123 --date-from 2026-04-01 --date-to 2026-04-30

formo charts create

Create a chart from typed flags or a raw JSON body.
Requires boards:write scope on your API key.

Options

OptionTypeRequiredDescription
--board-idstringBoard ID to add the chart to
--bodystringRaw JSON chart body. Typed flags override matching keys.
--titlestringChart title
--descriptionstringOptional chart description
--chart-typeenumtable, number, funnel, bar, line, area, pie, stacked, user_paths, or retention
--querystringSQL query for SQL-backed charts
--x-axisstringColumn used as the x-axis
--y-axisstringComma-separated or JSON array of y-axis columns
--group-bystringColumn used to group or stack series
--stepsstringJSON array of funnel/user-path step objects
--settingsstringJSON object of chart settings
Provide either --body or typed chart fields such as --title, --chart-type, and --query.

Examples

# Create a line chart from typed flags
formo charts create \
  --board-id board_abc123 \
  --title "Daily active users" \
  --chart-type line \
  --query "SELECT toDate(timestamp) AS date, countDistinct(address) AS users FROM events GROUP BY date ORDER BY date" \
  --x-axis date \
  --y-axis users

# Create from raw JSON
formo charts create \
  --board-id board_abc123 \
  --body '{"title":"Recent events","chart_type":"table","query":"SELECT * FROM events LIMIT 10"}'

formo charts update <chartId>

Update an existing chart. You can pass partial typed fields; the CLI fetches the current chart and sends the full body required by the API.
Requires boards:write scope on your API key.
formo charts update chart_abc123 --board-id board_abc123 --title "Updated chart name"
The same typed options as create are available.

formo charts move <chartId>

Move a chart to another board.
Requires boards:write scope on your API key.
formo charts move chart_abc123 --board-id source_board --target-board-id target_board

formo charts duplicate <chartId>

Duplicate a chart within its board. The CLI returns the new chart ID.
Requires boards:write scope on your API key.
formo charts duplicate chart_abc123 --board-id board_abc123

formo charts reorder

Reorder charts in a board.
Requires boards:write scope on your API key.
formo charts reorder --board-id board_abc123 --chart-ids chart_a,chart_b,chart_c
--chart-ids may be comma-separated text or a JSON array.

formo charts delete <chartId>

Delete a chart.
Requires boards:write scope on your API key.
formo charts delete chart_abc123 --board-id board_abc123
Deleting a chart is permanent.