--help.
Read
--cursor with next_cursor and unchanged filters to continue. Contact lists also accept --unsubscribed true or false. Sender data is stored metadata, inbox history is incomplete and analytics are all-time. Outcomes may return feature_unavailable.
Create or update
email; update cannot change it. Suppression sets unsubscribed=true and cannot undo an opt-out. A LinkedIn prospect file needs a resolved provider_id; an email audience file uses {"contact_ids":[789]}. Both attach only to inactive drafts and perform no provider lookup or send.
Pause
--yes or fail before HTTP. It cannot recall in-flight activity. Pausing a draft leaves it a draft. No resume command exists.
Templates and LinkedIn imports
Package 0.5.0 adds commands for saved template settings and bounded LinkedIn profile URL imports. Template reads requiretemplates:read; template creation and updates require templates:write. Saving template fields does not run prompts or approve generated content.
revision into import.json. Include the selected Emailx sender ID and 1 to 100 canonical HTTPS profile URLs. Configuration reads require campaigns:read; the import requires campaigns:import. The execution feature is disabled by default, and lookups can consume provider quota. The import itself does not activate or send.
operations:read and campaigns:read. Cancellation also requires operations:write and the original command grant: campaigns:import for an import or campaigns:launch for an activation. --yes makes the intent explicit in scripts. If a response is uncertain, inspect the operation and import row results when available. The CLI does not retry commands automatically. See templates and LinkedIn imports for JSON input shape and recovery rules.
Review and activate a LinkedIn campaign
Package 0.6.0 adds People eligibility preview and explicit activation for reviewed manual LinkedIn drafts. The People preview is read-only and does not enroll contacts. Review and launch writes requirecampaigns:launch and a ready unexpired review. Reading configuration and campaign progress requires campaigns:read; operation polling requires operations:read and campaigns:read. Check workspace capabilities; handle feature_unavailable as not enabled.
review-linkedin-resume and resume-linkedin for paused, previously launched manual campaigns. Resume needs its own review: a launch review is rejected. It keeps saved progress, runs no launch batch and never retries uncertain attempts. Scripts require --yes.
Use the latest configuration revision for the review. The command prompts before launch in an interactive shell; scripts require --yes. A successful operation receipt means local activation for the ordinary scheduled dispatcher, not delivery. If the launch outcome is uncertain, read the original operation and do not resubmit automatically. For stale or expired reviews, reconcile current state and request a fresh review. See review and launch for the complete workflow.
Draft preparation covers input and dry-run behavior. Scripting covers output and exit codes.
Email execution and People import
Package 0.8.0 adds separate preparation, generation, exact-message review, approval, and reviewed email launch commands, plus bounded CSV/XLSX People import. Use a matching API host and verify workspace capabilities.campaigns:generate, messages:write, messages:approve, and campaigns:launch-email are separate scopes. campaigns:launch-email is for email; LinkedIn activation still uses campaigns:launch.
expires_at is authoritative). A 202 operation schedules approved messages within configured windows and does not prove delivery. Poll the original operation; stop at awaiting_user_action, needs_reconciliation, or a terminal state. Unknown outcomes are never retried automatically. See email execution.
For People, use emailx contacts preview-import first with --file, --mapping or --mapping-file, and --channel email|linkedin. Confirm the exact preview fingerprint before calling emailx contacts import --expected-fingerprint ... --yes; inspect IDs with emailx contacts import-rows. Files are limited to 64 KiB and 1,000 rows. Import saves contacts only; it does not enroll them. LinkedIn-only rows may lack email, but direct contacts create still requires email. See People import.
