resend-cli 2.15.0 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "resend-cli",
3
- "version": "2.15.0",
3
+ "version": "2.17.0",
4
4
  "description": "The official CLI for Resend",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -46,7 +46,7 @@
46
46
  "esbuild": "0.28.1",
47
47
  "esbuild-wasm": "0.28.0",
48
48
  "picocolors": "1.1.1",
49
- "resend": "6.21.0"
49
+ "resend": "6.23.0"
50
50
  },
51
51
  "pkg": {
52
52
  "scripts": [
@@ -141,7 +141,7 @@ Auth resolves: `--api-key` flag > `RESEND_API_KEY` env > config file (`resend lo
141
141
 
142
142
  | Command Group | What it does |
143
143
  |--------------|-------------|
144
- | `emails` | send, get, list, batch, cancel, update |
144
+ | `emails` | send, get, list, batch, cancel, update, metrics |
145
145
  | `emails receiving` | list, get, attachments, forward, listen |
146
146
  | `domains` | create, verify, get, claim, update, delete, list |
147
147
  | `logs` | list, get, open |
@@ -150,10 +150,10 @@ Auth resolves: `--api-key` flag > `RESEND_API_KEY` env > config file (`resend lo
150
150
  | `api-keys` | create, list, update, delete |
151
151
  | `automations` | create, get, list, update, delete, duplicate, stop, open, runs |
152
152
  | `events` | create, get, list, update, delete, send, open |
153
- | `broadcasts` | create, send, update, delete, list |
153
+ | `broadcasts` | create, send, get, update, delete, list, cancel, open, clicked-links, recipients |
154
154
  | `contacts` | create, update, delete, segments, topics, imports |
155
155
  | `contact-properties` | create, update, delete, list |
156
- | `segments` | create, get, list, delete, contacts |
156
+ | `segments` | create, get, list, update, delete, contacts |
157
157
  | `templates` | create, publish, duplicate, delete, list |
158
158
  | `topics` | create, update, delete, list |
159
159
  | `webhooks` | create, update, listen, delete, list |
@@ -43,6 +43,25 @@ Returns full object with html/text, from, subject, status (`draft`|`queued`|`sen
43
43
 
44
44
  ---
45
45
 
46
+ ## broadcasts recipients
47
+
48
+ **Argument:** `[id]` — Broadcast ID
49
+
50
+ | Flag | Type | Required | Description |
51
+ |------|------|----------|-------------|
52
+ | `--type <type>` | string | Yes (non-interactive) | Event to filter by: `sent`, `delivered`, `opened`, `clicked`, `bounced`, `complained`, `unsubscribed`, `suppressed` |
53
+ | `--email <email>` | string | No | Substring filter on recipient email |
54
+ | `--bounce-type <type>` | string | No | Bounce classification: `permanent`, `transient`, `undetermined` — only meaningful when `--type bounced` |
55
+ | `--limit <n>` | number | No | Max results (1-100, default 20) |
56
+ | `--after <cursor>` | string | No | Forward pagination |
57
+ | `--before <cursor>` | string | No | Backward pagination |
58
+
59
+ Returns `id` (opaque pagination cursor), `contact_id` (nullable), `email`, and, depending on `--type`: `count` (`opened`/`clicked`), `bounce_type` (`bounced`), `clicked_links` (`clicked`).
60
+
61
+ **Note:** Responses are cached for up to 15 minutes, so requesting the same page again may return slightly stale data within that window.
62
+
63
+ ---
64
+
46
65
  ## broadcasts send
47
66
 
48
67
  Send a draft broadcast.
@@ -100,3 +119,17 @@ Cancelling a queued broadcast stops it mid-send — emails already sent are not
100
119
  Open a broadcast (or the broadcasts list) in the Resend dashboard.
101
120
 
102
121
  **Argument:** `[id]` — Broadcast ID (omit to open the list)
122
+
123
+ ---
124
+
125
+ ## broadcasts clicked-links
126
+
127
+ List the links clicked in a broadcast, ranked by total clicks.
128
+
129
+ **Argument:** `[id]` — Broadcast ID
130
+
131
+ | Flag | Type | Default | Description |
132
+ |------|------|---------|-------------|
133
+ | `--limit <n>` | number | 10 | Max results (1-100) |
134
+ | `--after <cursor>` | string | — | Forward pagination |
135
+ | `--before <cursor>` | string | — | Backward pagination |
@@ -138,6 +138,28 @@ Update a scheduled email.
138
138
 
139
139
  ---
140
140
 
141
+ ## emails metrics
142
+
143
+ Retrieve account-level email metrics for a date range, with optional breakdowns.
144
+
145
+ | Flag | Type | Default | Description |
146
+ |------|------|---------|-------------|
147
+ | `--start-date <date>` | string | 6 days before `--end-date` | ISO 8601 date or datetime |
148
+ | `--end-date <date>` | string | now | ISO 8601 date or datetime |
149
+ | `--timezone <tz>` | string | UTC | IANA timezone used to bucket periods |
150
+ | `--granularity <granularity>` | string | daily | `hourly`, `daily`, `weekly`, or `monthly` |
151
+ | `--metrics <list>` | string | all | Comma-separated metrics to include |
152
+ | `--dimensions <list>` | string | — | Comma-separated breakdowns: `period`, `domain`, `email`, `broadcast` |
153
+ | `--domain-id <list>` | string | — | Comma-separated sending domain IDs (max 100) |
154
+ | `--email-id <list>` | string | — | Comma-separated email IDs (max 100) |
155
+ | `--broadcast-id <list>` | string | — | Comma-separated broadcast IDs (max 100) |
156
+
157
+ The `email` and `broadcast` dimensions/filters cannot be combined. Without `--dimensions`, the response has totals only and no `data` array.
158
+
159
+ **Output:** `{"object":"metrics","start_date":"...","end_date":"...","metrics":["sent",...],"dimensions":["period"],"granularity":"daily","totals":{"sent":100,...},"data":[{"period":"2026-07-01","sent":10,...}]}`
160
+
161
+ ---
162
+
141
163
  ## emails receiving list
142
164
 
143
165
  List received (inbound) emails. Requires domain receiving enabled.
@@ -28,6 +28,20 @@ Detailed flag specifications for `resend segments` commands.
28
28
 
29
29
  ---
30
30
 
31
+ ## segments update
32
+
33
+ Rename a segment.
34
+
35
+ **Argument:** `[id]` — Segment UUID (interactive picker if omitted)
36
+
37
+ | Flag | Type | Required | Description |
38
+ |------|------|----------|-------------|
39
+ | `--name <name>` | string | Yes (non-interactive) | New segment name |
40
+
41
+ **Output:** `{"object":"segment","id":"..."}`
42
+
43
+ ---
44
+
31
45
  ## segments delete
32
46
 
33
47
  **Argument:** `<id>` — Segment UUID