Skip to main content

Global flags

Command groups

The CLI registry is committed at data/cli-commands.json and is used to keep docs aligned with implementation. Launch groups include:
  • whoami, doctor
  • orgs, organizations, workspaces
  • campaigns
  • contacts, contact-lists, contact-tags, contact-imports, contact-exports, contact-fields
  • deals, pipelines
  • companies
  • activities
  • inbox
  • connectors
  • kb
  • offerings
  • tracking-domains
  • email-auth
  • sequences
  • learning
  • alerts
  • warmup
  • billing
  • members, invitations, groups, domains
  • api-keys
  • teams, usage, dashboard
  • copilot

Dry run

--dry-run works on named commands and on the raw api command. The CLI prints the request and exits without making any network call. No API key is needed for a dry run.
The authorization header keeps only the public fs-key- prefix of the key. Any other key value shows [redacted], and a missing key shows [missing]. The raw key is never printed.

Headless data commands

Available in 0.1.8:
  • --include-list and --sender repeat. Mixing them with --data fails with ambiguous_body.
  • A path value of . or .. fails with invalid_flag_value (exit code 2).
The routes, scopes and error codes for these commands are on Headless operations. connectors create cal-com reads the Cal.com key only from FIRSTSALES_CAL_COM_API_KEY; passing it as a flag fails.

Examples

Campaign activation

Version 0.1.10 adds the following campaign controls. They require the accompanying public API deployment; publishing the CLI alone does not make these routes available. Each command requires --org, --workspace, and --campaign. The three preparation/send commands require a JSON body. Use --data-file to preserve the exact server-issued versions and confirmation instead of reconstructing them.
Test preparation requires connectorId, savedCampaignVersion, and readinessVersion, with an optional recipientMemberId. The recipient must be a verified workspace member; arbitrary recipient email addresses are not accepted. Test sending also requires a body idempotencyKey and the exact confirmation returned by preparation. The global idempotency header does not replace that body field. Launch preparation requires savedVersionId and readinessVersion. Preparation does not launch the campaign: the existing campaigns start command consumes the server-issued confirmation. Readiness, sender eligibility, audience, schedule and durable receipt checks remain authoritative on the server. The canonical CLI release contract owns the complete command registry. These API/CLI additions do not imply new Product MCP activation tools. CLI account acquisition through GitHub, Google or email remains pending; existing CLI profiles use Developer API keys. Account login is separate from connecting an email sender or another Connector.

Testimonials and inbox assistance

Version 0.1.11 adds five commands, bringing the CLI to 159 commands. All require --org and --workspace; the API deployment controls route availability. Use --data-file for JSON bodies. Scoring and drafting do not send an email. Inspect requests without making network calls:
Install the published version with npm install -g @firstsales.io/cli@0.1.19.

Signals, changelog and inbox templates

Version 0.1.12 adds 18 commands, bringing the CLI to 177 commands. All require --org and --workspace; the API deployment controls route availability. alerts list also accepts --category, --severity, --status, --limit and --skip. Inspect requests without making network calls:

Meetings

Version 0.1.15 adds 26 meetings commands, bringing the CLI to 203 commands. All require --org and --workspace; the API deployment controls route availability. Write commands take --data or --data-file.
Meetings is in early access. For an account without it, these commands return 403 with the message Meetings is coming soon.
Inspect requests without making network calls:

Fallback emails, Meetings payments and imports, and bulk approve

Version 0.1.16 adds 21 commands, bringing the CLI to 224 commands. Version 0.1.17 adds inbox bulk-approve, bringing it to 225. All require --org and --workspace. Write commands take --data or --data-file. 0.1.16 also adds seven Meetings commands for routing forms, templates, schedules and the organization profile: meetings routing-form-publish, meetings schedules, meetings template-preview, meetings template-apply, meetings template-publish, meetings organization-profile and meetings organization-catalog.

Campaign email state

Version 0.1.18 adds campaigns email-state, bringing the CLI to 226 commands. It reads where one campaign email is in its life, so you can tell an email that is waiting for approval from one that is scheduled or sent. It requires --org, --workspace and --campaign-email.
The command calls GET /api/v1/organizations/{organizationId}/workspaces/{workspaceId}/campaign-emails/{campaignEmailId}/state. scheduledAt and sentAt are null until the email is scheduled or sent.

Campaign email preview

Version 0.1.19 adds campaigns email-preview, bringing the CLI to 227 commands. It shows one campaign email as it will be sent: subject, body, sender and recipients, status, whether it waits for approval, lifecycle state, schedule and quality history. It requires --org, --workspace and --campaign-email.
The command calls GET /api/v1/organizations/{organizationId}/workspaces/{workspaceId}/campaign-emails/{campaignEmailId}/preview. It needs the same campaign:view permission as the app. An email you cannot see returns 404, and a malformed ID returns 400. cc, bcc, scheduledAt and sentAt appear only when set.