Skip to content
StackQuay

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

ForNot for
People who already have (or will have) a verified domain + Contacts / Segments from Resend bilingual newsletterCold bulk / purchased lists (consent required — human must verify)
Agent-led ops: bot drafts issue HTML + creates an API draft; human owns the Send gateTeams 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 HTMLAnyone 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; send defaults to false = 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 doesHuman 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 IDReview draft in Dashboard (or retrieve via API) before any send
Suggest segment_id, from, subject, optional topic_id, display nameConfirm Segment membership + consent / Topic prefs
Flag STOP before send: true or /sendPress Send in Dashboard or run send yourself after explicit OK
Recap delivery/open/click after you have real Dashboard numbersYou post, and you press Send
You press Send yourselfYou confirm before the first live Broadcast to real subscribers

Numbered steps

  1. 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.
  2. 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).
  3. Create a draft only (`send` false / omitted). POST https://api.resend.com/broadcasts (create-broadcast). Required: segment_id, from (friendly name allowed), subject, and html and/or text. Optional: name, reply_to, topic_id (omit to send to every subscribed contact in the Segment without checking topic preferences — human must verify). Omit send or set send: false. Response returns a broadcast id. Sketch from the docs — do not run with a live key in chat: resend.broadcasts.create({ segmentId, from, subject, html }) with send omitted.
  4. 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.
  5. 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.
  6. STOP — human Send gate. When you are ready: Dashboard Send / schedule, or POST /broadcasts/{BROADCAST_ID}/send with optional scheduled_at (natural language such as in 1 min, or ISO 8601) (send-broadcast). Creating with send: true also sends or schedules immediately — the bot must not use that path. You press Send in the Dashboard.
  7. 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_id hits 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

  1. Domain verified; from uses that domain; region / DNS still healthy.
  2. API key scope and storage (env / Vercel Secret); never in repo.
  3. Correct segment_id / optional topic_id; Contact membership and opt-in source.
  4. HTML includes a working unsubscribe token; bilingual strategy A vs B.
  5. Send a test to yourself before the list Send.
  6. Whether Send will be Dashboard vs API /send for this issue.
  7. Pricing / monthly quota on your Resend plan (not frozen here).
  8. You confirm before any send: true, /send, or Dashboard Send to real subscribers.
  9. 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

Related playbooks