Soda CLI reference
Manage your entire data quality lifecycle from the terminal or your pipeline.
Soda CLI (sodacli) is a single command-line tool for managing Soda Cloud. From your terminal or a CI/CD pipeline, you can connect data sources, onboard datasets, generate and verify contracts, configure monitors, review results, and manage runners, secrets, and access. All through one interface.
Soda CLI is a single Go binary with no dependencies. Every command is built to work the same way for a person typing in a terminal and for an AI agent or automation calling it programmatically: flags, exit codes and outputs are all machine- and human-readable.
Core CLI and Soda CLI are not the same.
Looking for local contract authoring and verification with Soda Core? See the Core CLI reference for the
sodacommand.
Which CLI should I use?
Soda has two command-line tools:
Core CLI (
soda) — a Python tool focused on data contracts, run locally. Create, test, publish, and verify contracts, with fine-grained check selection.Soda CLI (
sodacli) — a single Go binary that manages your entire Soda Cloud platform: datasources, datasets, contracts, monitors, results, incidents, IAM, runners, and secrets. Authenticate once and drive it from your terminal, CI/CD, or an AI agent.Use
sodaclito manage the full platform; usesodafor local, contract-only work. They work together:sodacli contract verify --localrunssodaunder the hood.
Soda CLI (sodacli)
Soda Core CLI (soda)
Language
Go single binary, no dependencies
Python (pip + data source connectors)
Execution
Cloud via Soda Runner, or local with --local
Local only
Scope
Full platform: datasources, datasets, contracts, monitors, results, runners, secrets, IAM, incidents
Contract verification and data source testing
Contract generation
contract create --mode copilot (AI) or skeleton
Manual authoring
CI/CD
--no-interactive, --output json, structured exit codes
Basic exit codes
Install
Download the latest .zip for your architecture from GitHub Releases, extract sodacli.exe, and add it to your PATH.
Requires Go 1.22+.
Verify the installation:
Quickstart
Global flags
These flags work on every command.
--output table|json|csv
-o
Output format. Auto-detects: a table in an interactive terminal, JSON when piped.
--profile <name>
Override the active auth profile.
--no-color
Disable color output.
--quiet
-q
Suppress non-essential output.
--verbose
-v
Show detailed output.
--no-interactive
Never prompt; fail with a clear error if required input is missing. Use in CI/CD and for AI agents.
Output formats
The CLI picks a format automatically: a human-readable, colored table in an interactive terminal, and JSON when output is piped. Override the format on any command with --output.
Essential Commands
This section covers the most common commands. For the complete command surface, see the soda-cli repository, or run sodacli <command> --help.
Authentication
Credentials are stored in ~/.soda/credentials. login runs an interactive wizard unless --no-interactive is set, in which case --api-key-id and --api-key-secret are required.
sodacli auth login
Authenticate with Soda Cloud. Add --host cloud.us.soda.io for the US region.
sodacli auth status
Check connection health for the active profile.
sodacli auth switch <profile>
Switch between saved profiles.
Datasources
Manage warehouse connections. Aliased to ds.
sodacli datasource list
List datasources.
sodacli datasource get <id>
Show a datasource's configuration.
sodacli datasource create <config.yml>
Register a datasource from a YAML config; returns its ID.
sodacli datasource onboard <config-or-id>
Guided end-to-end setup. Supports --monitoring, --profiling, and --contracts copilot|skeleton|none.
sodacli datasource update <id>
Update label, runner, or connection.
sodacli datasource test-connection <config.yml>
Async connection test via a Runner.
sodacli datasource diagnostics <id>
View or configure the diagnostics warehouse.
sodacli datasource delete <id>
Delete a datasource and its resources.
Datasets
Manage datasets, their configuration, and access.
sodacli dataset list
List datasets. Supports --datasource, --status, --limit.
sodacli dataset get <id>
Show dataset details.
sodacli dataset update <id>
Update tags or owner.
sodacli dataset attributes <id>
List a dataset's attributes.
sodacli dataset profiling <id>
View or configure profiling, e.g. --enable --schedule "0 6 * * *".
sodacli dataset time-partition <id>
Set or view the time-partition column.
sodacli dataset diagnostics <id>
View or configure dataset-level diagnostics.
sodacli dataset permissions list <id>
List role assignments on a dataset.
sodacli dataset permissions assign <id>
Assign a role to a user or group.
Contracts
Generate, validate, publish, and verify data contracts.
sodacli contract list
List all contracts.
sodacli contract create --dataset <dqn>
Generate a contract from a dataset schema. --mode skeleton|copilot.
sodacli contract pull <dqn>
Download a contract from Soda Cloud.
sodacli contract push <file>
Upload a local contract to Soda Cloud.
sodacli contract diff <file>
Show a local-vs-cloud diff.
sodacli contract lint <file...>
Validate contract syntax offline. Supports globs.
sodacli contract verify <file|dqn>
Run checks via a cloud Runner, or locally with --local --datasource <config>.
Monitors
Configure ML-based metric monitors (anomaly detection).
sodacli monitor list --dataset <id>
List a dataset's monitors.
sodacli monitor config <dataset-id>
View or set the monitoring schedule, e.g. --enable --schedule "0 */6 * * *".
sodacli monitor add --dataset <id>
Add a monitor: --type column (with --column, --metric) or --type custom (with --name, --sql).
sodacli monitor update <monitor-id>
Update a monitor.
sodacli monitor delete <monitor-id>
Delete a monitor.
Results
sodacli results list
List check results. Supports --dataset-name, --status, --from, --limit.
Jobs
Observe scans. Aliased to scan.
sodacli job status <scan-id>
Show a scan's state and check summary.
sodacli job logs <scan-id>
Show a scan's logs.
IAM
Manage users, groups, and roles.
sodacli iam user list
List users.
sodacli iam user invite --email <email>
Invite users (repeatable, up to 10).
sodacli iam group create --name <name>
Create a group; add members with --member.
sodacli iam group update <id>
Update membership, e.g. --add-member <email>.
sodacli iam role list
List roles. Supports --scope global|dataset.
Runners
sodacli runner list
List registered runners.
sodacli runner get <id>
Show a runner's details.
sodacli runner create --name <name>
Create runner credentials (shown once).
sodacli runner delete <id>
Delete a runner.
Secrets
Encrypted credentials referenced from datasource configs as ${secret.NAME}. Values are encrypted client-side before they leave your machine.
sodacli secret list
List secrets.
sodacli secret get <id>
Show a secret's details.
sodacli secret create --name <name>
Create a secret via masked prompt, --value, or stdin.
sodacli secret update <id>
Update a secret's value.
sodacli secret delete <id>
Delete a secret.
CI/CD integration
Every command runs non-interactively with --no-interactive, emits machine-readable output with --output json, and returns structured exit codes.
contract verify exit codes:
0
All checks passed.
1
One or more checks failed — fail the pipeline.
2
Execution error — retry or alert.
3
Authentication error — check credentials.
GitHub Actions example
Telemetry
Soda CLI collects anonymous usage data (command names, exit codes, duration, OS/arch) to help improve the tool. No personal information, API keys, file contents, or query data is collected. Opt out by setting an environment variable:
{% if (visitor.claims.plan === 'datasetStandard') %}
You are logged in to Soda and seeing the Dataset Standard license documentation. Learn more about Documentation access & licensing.
{% if (visitor.claims.plan === 'enterprise') %}
You are logged in to Soda and seeing the Team license documentation. Learn more about Documentation access & licensing.
{% if (visitor.claims.plan === 'enterpriseUserBased') %}
You are logged in to Soda and seeing the Enterprise license documentation. Learn more about Documentation access & licensing.
{% if !(visitor.claims.plan === 'enterprise' || visitor.claims.plan === 'enterpriseUserBased' || visitor.claims.plan === 'datasetStandard') %}
You are not logged in to Soda and are viewing the default public documentation. Learn more about Documentation access & licensing.
If you do have a Soda license, make sure to log in to Soda Cloud in this same browser.
Last updated
Was this helpful?

