Playbook · Resend
Draft a Resend Broadcast with an agent — you press Send
Create a Broadcast draft (subject, HTML, Segment) via API. Review it, then send it yourself.
2026-10-16
Who it’s for / not for
| For | Not for |
|---|---|
| People who already have (or will have) a verified domain + Contacts / Segments from Resend bilingual newsletter | Cold bulk / purchased lists (consent required — human must verify) |
| Agent-led ops: bot drafts issue HTML + creates an API draft; human owns the Send gate | Teams that only want the no-code Dashboard editor forever (that path is in the bilingual newsletter playbook) |
Operators who want reusable personalization ({{{contact.*}}}) and unsubscribe tokens in HTML | Anyone treating this as PDPO / spam-law advice or promising open-rate ROI |
Stack (spine only)
Also in the docs, when you need them later: Cancel / Duplicate, the Resend CLI, and MCP. This page stops at the draft you review.
- Resend Broadcasts API — create draft, update, list, retrieve, delete; separate send endpoint (compose & send with API)
- Create Broadcast —
POST /broadcasts;senddefaults tofalse= draft (create-broadcast) - Send Broadcast —
POST /broadcasts/{id}/send; only works for Broadcasts created via API (Dashboard-editor drafts cannot use this endpoint) (send-broadcast) - Segments (+ optional Topics) — a Contact must be in a Segment to receive a Broadcast (Contacts / Audiences)
- Verified domain + API key — prerequisites from the Resend intro; domain verify stays human
Bot vs human
| Bot does | Human must do |
|---|---|
| Draft issue outline + HTML/text (EN + 繁中 pattern) | Own Resend account, verified domain, API key in env (never paste secrets into chat/git) |
Call create with send omitted / false → draft ID | Review draft in Dashboard (or retrieve via API) before any send |
Suggest segment_id, from, subject, optional topic_id, display name | Confirm Segment membership + consent / Topic prefs |
Flag STOP before send: true or /send | Press Send in Dashboard or run send yourself after explicit OK |
| Recap delivery/open/click after you have real Dashboard numbers | You post, and you press Send |
| You press Send yourself | You confirm before the first live Broadcast to real subscribers |
Numbered steps
- Prerequisites. You need a verified sending domain, an API key stored in env you control, and at least one Segment with Contacts who opted in (docs, Contacts). Complements Resend bilingual newsletter. Human must verify domain DNS, consent wording, and which Segment gets this issue.
- Choose how you press Send. A (preferred): an agent creates an API draft → you open it in the Dashboard → test to yourself → Send / schedule in the UI. B: an agent creates a draft → you (or a script you run) call Send Broadcast with the draft ID. API
send()works only on Broadcasts created via the API; Dashboard-composer Broadcasts cannot be sent with the send endpoint (send-with-api). - Create a draft only (`send` false / omitted).
POST https://api.resend.com/broadcasts(create-broadcast). Required:segment_id,from(friendly name allowed),subject, andhtmland/ortext. Optional:name,reply_to,topic_id(omit to send to every subscribed contact in the Segment without checking topic preferences — human must verify). Omitsendor setsend: false. Response returns a broadcastid. Sketch from the docs — do not run with a live key in chat:resend.broadcasts.create({ segmentId, from, subject, html })withsendomitted. - Personalize and keep unsubscribe. Docs show
{{{contact.first_name|there}}}and{{{RESEND_UNSUBSCRIBE_URL}}}(create-broadcast). Bot drafts bilingual body (EN + 繁中 sections, or two Broadcasts / Topics — same as the newsletter playbook). Never strip unsubscribe footers. - Review before Send. You open the draft in the Resend Dashboard, send a test to yourself if available, and check Segment size, subject, links, and the 繁中 block. An agent may retrieve or list for notes. You press Send.
- STOP — human Send gate. When you are ready: Dashboard Send / schedule, or
POST /broadcasts/{BROADCAST_ID}/sendwith optionalscheduled_at(natural language such asin 1 min, or ISO 8601) (send-broadcast). Creating withsend: truealso sends or schedules immediately — the bot must not use that path. You press Send in the Dashboard. - After send — measure without lying. Use Dashboard delivery / open / click only when tracking is on and numbers are exported. No invented subscriber counts.
Failure modes / HK caveats
- `send: true` by accident — real subscribers get mail. Treat as STOP.
- Dashboard draft ≠ API send — the send endpoint does not apply to editor-created Broadcasts. Create via API if you want API send later.
- Wrong Segment / missing Topic — omitting
topic_idhits all subscribed contacts in the Segment. Human must verify. - Unverified / `resend.dev` misuse — use your verified domain for real lists.
- Secrets in chat/git — API keys in markdown or agent logs → rotate. Env only.
- Consent / PDPO — not legal advice; record opt-in; honor global unsubscribes.
- Warm-up / volume — sudden blasts to cold addresses hurt reputation; start small (human must verify plan quotas).
- Payment Link in the body — you add it only after you have checked the draft.
- You press Send.
Newsletter CTA
Review the draft, then send it yourself.
Human must verify
- Domain verified;
fromuses that domain; region / DNS still healthy. - API key scope and storage (env / Vercel Secret); never in repo.
- Correct
segment_id/ optionaltopic_id; Contact membership and opt-in source. - HTML includes a working unsubscribe token; bilingual strategy A vs B.
- Send a test to yourself before the list Send.
- Whether Send will be Dashboard vs API
/sendfor this issue. - Pricing / monthly quota on your Resend plan (not frozen here).
- You confirm before any
send: true,/send, or Dashboard Send to real subscribers. - You decide what goes in the body before you press Send.
Doc gaps
Exact free-tier / paid quotas were not copied (check Billing). Cancel / Duplicate / update Broadcast endpoints exist in product docs — not fully stepped here. PDPO marketing rules are outside Resend docs — confirm with counsel if you need to. Not legal advice.
Docs cited
- Compose and send Broadcasts with the API · 2026-10-16
- Create Broadcast API · 2026-10-16
- Send Broadcast API · 2026-10-16
- Sending Broadcasts (introduction) · 2026-10-16
- Contacts / Audiences introduction · 2026-10-16
- Resend docs home · 2026-10-16