Create API keys in Soda Cloud under your Profile > API Keys; the key ID and secret are used as HTTP Basic Auth credentials (key ID as username, secret as password)
POST to https://cloud.soda.io/api/v1/scans with a JSON body specifying the dataSourceName and checkConfigurationId (the scan definition configured in Soda Cloud); the response returns a scanId
Poll GET https://cloud.soda.io/api/v1/scans/{scanId} at intervals (30 seconds recommended); the response includes a status field — continue polling until status is 'completed', 'completedWithErrors', or 'failed'
On completion, retrieve quality results via GET https://cloud.soda.io/api/v1/quality?datasetId=... or inspect the scan detail in Soda Cloud UI which shows pass/warn/fail per check
Integrate the polling loop into your orchestration DAG (Airflow, Prefect, or Dagster) to gate downstream tasks on data quality status before proceeding with transformations or serving
Known gotchas
The Soda Cloud scan API triggers scans that run on a connected Soda Agent; if no Soda Agent is running in your environment, the scan will be accepted by the API but will never transition out of queued status
checkConfigurationId refers to a scan definition pre-configured in Soda Cloud, not a local SodaCL file; local checks must be pushed to Soda Cloud via the soda update-scan-definition CLI command before they can be triggered via API
Soda Cloud API authentication uses HTTP Basic Auth with the key ID and secret — do not pass them as bearer tokens; wrapping them in an Authorization: Bearer header will return a 401 error
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp