March CLI
Manage your March campaigns and outputs from the terminal.
Installation
Section titled “Installation”npm install -g @marchtech/cliAuthentication
Section titled “Authentication”march loginOpens your browser to authenticate with your March account. Once approved, credentials are stored locally at ~/.march/credentials.json.
Logout
Section titled “Logout”march logoutCheck auth status
Section titled “Check auth status”march statusShows current auth state and user email.
For non-interactive environments, set the MARCH_API_KEY environment variable. Create an API key at Settings > API Keys in the web app.
export MARCH_API_KEY=march_...The environment variable takes priority over stored credentials.
Calendar
Section titled “Calendar”View your marketing calendar with scheduling gaps and summary stats.
march calendarmarch calendar --campaign CAM-abc123march calendar --from 2026-04-01 --weeks 2march calendar --json| Flag | Description | Default |
|---|---|---|
--campaign <id> | Filter to one campaign | All campaigns |
--from <YYYY-MM-DD> | Start date | Today |
--to <YYYY-MM-DD> | End date | from + 4 weeks |
--weeks <n> | Show next N weeks (alternative to --to) | 4 |
Example output:
Marketing Calendar: Apr 1 - Apr 29
* Apr 1 - Changelog launchWed, Apr 1 [draft] changelog "CLI now available" (Changelog)
Thu, Apr 2 [draft] blog "Announcing Product" (Product launch) [draft] social/twitter "Launch thread" (Product launch)
Fri, Apr 3 [draft] email "Early access invite" (Product launch)
Sun, Apr 5 - Tue, Apr 7 (3 days, no outputs)
Summary: 6 outputs across 2 campaigns | 24 gap days | Busiest: Apr 2 (2)Status: 6 draftThe --json response includes days (outputs grouped by date), markers (campaign launches), gaps (unscheduled days), and summary (aggregate stats), designed for agent and pipeline consumption.
Campaigns
Section titled “Campaigns”List campaigns
Section titled “List campaigns”march campaigns listmarch campaigns list --archivedGet campaign details
Section titled “Get campaign details”march campaigns get CAM-abc123Create a campaign
Section titled “Create a campaign”march campaigns create --name "Product Launch Q1"march campaigns create --name "Holiday Campaign" --brief "Target early adopters" --launch 2026-06-01| Flag | Required | Description |
|---|---|---|
--name <name> | Yes | Campaign name |
--brief <text> | No | Campaign brief |
--launch <YYYY-MM-DD> | No | Launch date |
Update a campaign
Section titled “Update a campaign”march campaigns update CAM-abc123 --launch 2026-07-01march campaigns update CAM-abc123 --name "Renamed Campaign" --brief "Updated brief"| Flag | Description |
|---|---|
--name <name> | New name |
--brief <text> | New brief |
--description <text> | New description |
--launch <YYYY-MM-DD> | Launch date |
Archive a campaign
Section titled “Archive a campaign”march campaigns archive CAM-abc123Campaign Plans
Section titled “Campaign Plans”Display, update, or re-extract a campaign’s structured plan (audience, pillars, tone, channels).
Show plan
Section titled “Show plan”march campaigns plan show CAM-abc123Update plan
Section titled “Update plan”march campaigns plan update CAM-abc123 --input "Updated plan text..."echo "Plan from stdin" | march campaigns plan update CAM-abc123Extract plan
Section titled “Extract plan”Re-run extraction from the campaign brief or custom input:
march campaigns plan extract CAM-abc123march campaigns plan extract CAM-abc123 --input "Custom brief text"march campaigns plan extract CAM-abc123 --file brief.mdOutputs
Section titled “Outputs”List outputs
Section titled “List outputs”march outputs listmarch outputs list --campaign CAM-abc123march outputs list --type social --status draft| Flag | Description |
|---|---|
--campaign <id> | Filter by campaign ID |
--type <type> | Filter by type (social, email, blog, ad, internal, changelog, newsletter, other) |
--status <status> | Filter by status (draft, ready, published) |
Get output details
Section titled “Get output details”march outputs get OUT-xyz789Create an output
Section titled “Create an output”march outputs create --campaign CAM-abc123 --title "Launch tweet" --type socialmarch outputs create --campaign CAM-abc123 --title "Blog post" --type blog --date 2026-06-01 --description "Deep dive on the new feature"| Flag | Required | Description |
|---|---|---|
--campaign <id> | Yes | Campaign public ID |
--title <title> | Yes | Output title |
--type <type> | Yes | Type (social, email, blog, ad, etc.) |
--channel <channel> | No | Channel (twitter, linkedin, instagram, etc.) |
--date <YYYY-MM-DD> | No | Target date |
--description <text> | No | Description |
Batch create outputs
Section titled “Batch create outputs”Bulk-create up to 20 outputs for a campaign from JSON:
march outputs batch CAM-abc123 --file outputs.jsonmarch outputs batch CAM-abc123 --activitiesecho '[{"title":"Post","type":"social"}]' | march outputs batch CAM-abc123Update an output
Section titled “Update an output”march outputs update OUT-xyz789 --status readymarch outputs update OUT-xyz789 --date 2026-04-15 --title "Updated title"march outputs update OUT-xyz789 --content "Full markdown content body here"| Flag | Description |
|---|---|
--status <status> | draft, ready, or published |
--title <title> | New title |
--type <type> | New type |
--channel <channel> | New channel |
--date <YYYY-MM-DD> | Target date |
--description <text> | Description |
--content <text> | Content body (markdown) |
JSON mode
Section titled “JSON mode”Add --json to any command for structured output, suitable for scripting, CI/CD pipelines, and AI agents:
march --json campaigns listmarch --json calendar | jq '.summary'march --json outputs list --campaign CAM-abc123 | jq '.[].title'Configuration
Section titled “Configuration”| Variable | Description | Default |
|---|---|---|
MARCH_API_KEY | API key (overrides march login) | - |
MARCH_API_URL | API base URL | https://app.march.tech |