Skip to content

March CLI

Manage your March campaigns and outputs from the terminal.

Terminal window
npm install -g @marchtech/cli
Terminal window
march login

Opens your browser to authenticate with your March account. Once approved, credentials are stored locally at ~/.march/credentials.json.

Terminal window
march logout
Terminal window
march status

Shows 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.

Terminal window
export MARCH_API_KEY=march_...

The environment variable takes priority over stored credentials.

View your marketing calendar with scheduling gaps and summary stats.

Terminal window
march calendar
march calendar --campaign CAM-abc123
march calendar --from 2026-04-01 --weeks 2
march calendar --json
FlagDescriptionDefault
--campaign <id>Filter to one campaignAll campaigns
--from <YYYY-MM-DD>Start dateToday
--to <YYYY-MM-DD>End datefrom + 4 weeks
--weeks <n>Show next N weeks (alternative to --to)4

Example output:

Marketing Calendar: Apr 1 - Apr 29
* Apr 1 - Changelog launch
Wed, 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 draft

The --json response includes days (outputs grouped by date), markers (campaign launches), gaps (unscheduled days), and summary (aggregate stats), designed for agent and pipeline consumption.

Terminal window
march campaigns list
march campaigns list --archived
Terminal window
march campaigns get CAM-abc123
Terminal window
march campaigns create --name "Product Launch Q1"
march campaigns create --name "Holiday Campaign" --brief "Target early adopters" --launch 2026-06-01
FlagRequiredDescription
--name <name>YesCampaign name
--brief <text>NoCampaign brief
--launch <YYYY-MM-DD>NoLaunch date
Terminal window
march campaigns update CAM-abc123 --launch 2026-07-01
march campaigns update CAM-abc123 --name "Renamed Campaign" --brief "Updated brief"
FlagDescription
--name <name>New name
--brief <text>New brief
--description <text>New description
--launch <YYYY-MM-DD>Launch date
Terminal window
march campaigns archive CAM-abc123

Display, update, or re-extract a campaign’s structured plan (audience, pillars, tone, channels).

Terminal window
march campaigns plan show CAM-abc123
Terminal window
march campaigns plan update CAM-abc123 --input "Updated plan text..."
echo "Plan from stdin" | march campaigns plan update CAM-abc123

Re-run extraction from the campaign brief or custom input:

Terminal window
march campaigns plan extract CAM-abc123
march campaigns plan extract CAM-abc123 --input "Custom brief text"
march campaigns plan extract CAM-abc123 --file brief.md
Terminal window
march outputs list
march outputs list --campaign CAM-abc123
march outputs list --type social --status draft
FlagDescription
--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)
Terminal window
march outputs get OUT-xyz789
Terminal window
march outputs create --campaign CAM-abc123 --title "Launch tweet" --type social
march outputs create --campaign CAM-abc123 --title "Blog post" --type blog --date 2026-06-01 --description "Deep dive on the new feature"
FlagRequiredDescription
--campaign <id>YesCampaign public ID
--title <title>YesOutput title
--type <type>YesType (social, email, blog, ad, etc.)
--channel <channel>NoChannel (twitter, linkedin, instagram, etc.)
--date <YYYY-MM-DD>NoTarget date
--description <text>NoDescription

Bulk-create up to 20 outputs for a campaign from JSON:

Terminal window
march outputs batch CAM-abc123 --file outputs.json
march outputs batch CAM-abc123 --activities
echo '[{"title":"Post","type":"social"}]' | march outputs batch CAM-abc123
Terminal window
march outputs update OUT-xyz789 --status ready
march outputs update OUT-xyz789 --date 2026-04-15 --title "Updated title"
march outputs update OUT-xyz789 --content "Full markdown content body here"
FlagDescription
--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)

Add --json to any command for structured output, suitable for scripting, CI/CD pipelines, and AI agents:

Terminal window
march --json campaigns list
march --json calendar | jq '.summary'
march --json outputs list --campaign CAM-abc123 | jq '.[].title'
VariableDescriptionDefault
MARCH_API_KEYAPI key (overrides march login)-
MARCH_API_URLAPI base URLhttps://app.march.tech