Install
Hosts
Every command takes--api <url> or reads $SALTY_API from the environment. Defaults: https://api.trysalty.com.
Login
$SALTY_API/oauth/authorize, and stores the resulting token. Storage prefers the OS keychain (macOS Keychain / Windows Credential Vault / libsecret on Linux); if the keychain isn’t available (headless, CI), it falls back to ~/.config/salty/credentials.json with 0600 perms.
salty logout forgets credentials for the current host.
Identity + usage
API keys
People, companies, deals
search takes a structured --filter (JSON): operators equals | not_equals | contains | gt | gte | lt | lte | is_null, combined with {"and":[…]} / {"or":[…]}; address custom attributes via custom_attributes.<key>. --limit, --sort, and --expand (people/deals) are also accepted.
notes, tasks, activities, and custom-objects follow the same REST shape via the SDK or curl.
Schema
--display-name defaults to a Title-Case version of --key.
Webhooks
salty webhooks add prints the whsec_… signing secret once — store it the same way you store an API key.
Logs
JSON output
Every command accepts--json to dump the raw response, useful for piping into jq: