# `frontline campaigns`

Create, deliver, and report on campaigns

```bash
frontline campaigns [options] [command]
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns list`

List campaigns

```bash
frontline campaigns list [options]
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--page <n>` | Page number | `1` |
| `--page-size <n>` | Page size | `50` |
| `--status <status>` | Campaign status |  |
| `--channel <EMAIL | WHATSAPP>` | Campaign channel |
| `--search <text>` | Search campaign names |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns get`

Get a campaign

```bash
frontline campaigns get [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns create`

Create a campaign draft

```bash
frontline campaigns create [options]
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--data <json>` | Complete campaign payload as JSON |  |
| `--name <name>` | Campaign name |  |
| `--channel <EMAIL | WHATSAPP>` | Campaign channel |
| `--purpose <MARKETING | TRANSACTIONAL>` | Campaign purpose |
| `--audience <audienceId>` | Audience ID |  |
| `--subject <subject>` | Email subject |  |
| `--content <html>` | Email HTML content |  |
| `--scheduled-at <iso>` | Scheduled delivery date/time |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns update`

Update a campaign draft

```bash
frontline campaigns update [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--data <json>` | Fields to update as JSON |  |
| `--name <name>` | Campaign name |  |
| `--channel <EMAIL | WHATSAPP>` | Campaign channel |
| `--purpose <MARKETING | TRANSACTIONAL>` | Campaign purpose |
| `--audience <audienceId>` | Audience ID |  |
| `--subject <subject>` | Email subject |  |
| `--content <html>` | Email HTML content |  |
| `--scheduled-at <iso>` | Scheduled delivery date/time |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns preview`

Preview personalized campaign content

```bash
frontline campaigns preview [options]
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--data <json>` | JSON payload |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns preflight`

Validate a saved campaign before submission

```bash
frontline campaigns preflight [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns preflight-new`

Validate an audience/channel combination

```bash
frontline campaigns preflight-new [options]
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--data <json>` | JSON payload |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns test`

Send a campaign test

```bash
frontline campaigns test [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--data <json>` | JSON payload |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns submit`

Submit a campaign for asynchronous preparation

```bash
frontline campaigns submit [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--wait` | Poll until preparation finishes |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns pause`

Pause a scheduled or running campaign

```bash
frontline campaigns pause [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns resume`

Resume a paused campaign

```bash
frontline campaigns resume [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns cancel`

Cancel a campaign

```bash
frontline campaigns cancel [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns overview`

Get the 30-day campaign overview

```bash
frontline campaigns overview [options]
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns stats`

Get campaign statistics

```bash
frontline campaigns stats [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns recipients`

List campaign recipients

```bash
frontline campaigns recipients [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--page <n>` | Page number | `1` |
| `--page-size <n>` | Page size | `50` |
| `--status <status>` | Operational recipient status |  |
| `--activity <activity>` | OPENED, CLICKED, REPLIED, or UNSUBSCRIBED |  |
| `--search <text>` | Search recipients |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns events`

List campaign tracking events

```bash
frontline campaigns events [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--page <n>` | Page number | `1` |
| `--page-size <n>` | Page size | `50` |
| `--type <type>` | Event type |  |
| `--recipient <recipientId>` | Campaign recipient ID |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns links`

List campaign link performance

```bash
frontline campaigns links [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--page <n>` | Page number | `1` |
| `--page-size <n>` | Page size | `50` |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns export`

Export campaign recipients as CSV

```bash
frontline campaigns export [options] <campaignId>
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--output <path>` | Output file path |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns email-domains`

List campaign email-domains

```bash
frontline campaigns email-domains [options]
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns whatsapp-senders`

List campaign whatsapp-senders

```bash
frontline campaigns whatsapp-senders [options]
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |


## `frontline campaigns whatsapp-templates`

List approved WhatsApp campaign templates

```bash
frontline campaigns whatsapp-templates [options]
```

**Options**

| Flag | Description | Default |
|  --- | --- | --- |
| `--phone-number-id <id>` | WhatsApp phone number ID |  |
| `--api-key <key>` | Override API key for this run (else FRONTLINE_API_KEY env, else stored profile key) |  |
| `--base-url <url>` | Advanced: override Public API base URL for this run |  |
| `--profile <name>` | Credentials profile: uses that profile's saved API key and Public API base URL (see `frontline auth profiles list`) |  |
| `--debug` | Show debug info on stderr (token is redacted) |  |
| `--pretty` | Pretty-print human-readable output (instead of default JSON) |  |
| `--table` | Render list results as a table (implies --pretty) |  |
| `--json` | Output raw JSON (default behavior — accepted as a no-op) |  |