Command-Line Interface (CLI)
The official Simply360 CLI: install with npm, authenticate with set-key, and manage collections, records, API keys, webhooks, and more from your terminal.
Installation
The Simply360 CLI ships as the @simply360/cli package and installs a single binary named s360. It requires Node.js 22 or newer. The CLI is currently in developer preview and is not yet published to the public npm registry — contact developers@simply360.app for access, and watch the API Changelog for the public release announcement. Once the package is available in your registry, install it globally:
npm install -g @simply360/cli
Verify the installation:
s360 --version
Authentication
The CLI authenticates with a Simply360 API key (see Authentication). You can either store the key on disk or pass it through an environment variable.
Save the Key on Disk
s360 auth set-key s360_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
This writes the key to ~/.s360/config.json. Subsequent commands read it from that file. To check what is configured, run:
s360 auth status
The CLI never echoes the key value back — it only reports which source the key was loaded from (environment vs. config file).
Use an Environment Variable (Recommended for CI)
Set SIMPLY360_API_KEY. When this variable is set, it takes precedence over the config file. This keeps the key out of disk for ephemeral environments.
export SIMPLY360_API_KEY="s360_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
s360 collections list
Override the API URL
To target an enabled non-production environment, set its API URL explicitly:
# Staging
s360 auth set-url https://api.staging.simply360.app
# Development
s360 auth set-url https://api.dev.simply360.app
# Or select an environment without changing the saved URL
export SIMPLY360_API_URL="https://api.staging.simply360.app"
Staging is a paid add-on or an included offer benefit. Development is a separate, limited preview add-on or beta grant; Staging access does not include Development. Configure an API key created in the same environment as the selected URL. See Environments for the access and credential boundaries.
Output Formats
Most commands accept -f / --format to control the output. Supported values are table (default for list commands), json (default for single-resource commands), and csv.
s360 collections list # table
s360 collections list -f json # JSON
s360 records list -c XXXX-XXXX-XXXX -f csv > records.csv
Working with Collections
# List all collections in the team
s360 collections list
# Show full collection schema (fields included)
s360 collections get XXXX-XXXX-XXXX
Working with Records
# List records in a collection (-c is required)
s360 records list -c XXXX-XXXX-XXXX
# Pagination and sorting
s360 records list -c XXXX-XXXX-XXXX -l 50 -o 100 -s "-createdAt"
# Get a single record by simplyId
s360 records get WXYZ-5678-IJKL
# Create a new record (fields as JSON)
s360 records create -c XXXX-XXXX-XXXX -d '{"FLDS-FRST-NAME":"Jane","FLDS-LAST-NAME":"Doe"}'
# Update a record (partial update)
s360 records update WXYZ-5678-IJKL -d '{"FLDS-EMAL-ADDR":"jane@example.com"}'
# Delete a record
s360 records delete WXYZ-5678-IJKL
# Search with filters
s360 records search -c XXXX-XXXX-XXXX \
--filter '[{"field":"FLDS-EMAL-ADDR","operator":"contains","value":"@example.com"}]' \
-l 25
Working with Views
# List data views
s360 views list
# Execute a saved view (returns its records)
s360 views execute VIEW-1234-ABCD -l 50
Working with Wizards
# List data wizards
s360 wizards list
# Show a wizard's input schema (steps, required fields, types)
s360 wizards schema WIZD-1234-ABCD
Working with Messages
# List outgoing messages
s360 messages list
# Filter by status
s360 messages list --status DELIVERED -l 50
API Key Management
These commands call admin endpoints, so the configured credential needs API-key administration permissions. Creating a key is audited to an authenticated user, so api-keys create requires user credentials — an API-key credential cannot mint new keys. Most teams create keys in the Simply360 webapp and use the CLI to list and rotate them. A key's record-level data access comes from its assigned Data Role — see API Reference: API Keys.
# List API keys (the secret values are masked)
s360 api-keys list
# Create a new API key — the full secret is printed once
s360 api-keys create -n "CRM Integration" -p TEAM_ADMIN_DC_SCHEMA
# Rotate an existing key — generates a new secret
s360 api-keys rotate AKEY-1234-ABCD
Webhooks
# List webhook subscriptions
s360 webhooks list
# Create a webhook subscription (one event type per subscription)
s360 webhooks create -u https://example.com/hooks/s360 -e DATA_RECORD_CREATED
The signing secret for the new subscription is printed once at creation. See API Reference: Webhooks for event types and delivery verification.
Scripting with the CLI
The CLI works well in shell pipelines — combine it with jq and other UNIX tools by selecting -f json. Note that the JSON output is the resource data itself (an array for list commands); the REST API's { data, meta } envelope — including pagination totals — is not part of CLI output, so page explicitly with -l and -o.
# Count the records returned by a query
COUNT=$(s360 records list -c XXXX-XXXX-XXXX -l 100 -f json | jq 'length')
echo "Records returned: $COUNT"
# Extract email addresses
s360 records list -c XXXX-XXXX-XXXX -f json | jq -r '.[].fields["FLDS-EMAL-ADDR"]' > emails.txt
Error Handling
The CLI prints Error: <message> to stderr and exits with a non-zero status when an API call fails. Standard shell exit-code checks work:
if ! s360 records get WXYZ-5678-IJKL > /dev/null 2>&1; then
echo "Record fetch failed"
exit 1
fi