koala73/worldmonitor · error · Error

[sendProLaunchBroadcast] Resend

Error message

[sendProLaunchBroadcast] Resend ${res.status}: ${errBody}

What it means

Resend API rejection while sending (or scheduling) a broadcast: the POST to /broadcasts/{id}/send returned non-OK, with status and body embedded. Common causes are an unknown or deleted broadcastId, an already-sent broadcast, an invalid scheduled_at value, or rate limiting.

Solutions

  1. Read the embedded status and body: for 404 verify the broadcastId exists in Resend; for 429/5xx retry with backoff
  2. If already sent, treat as idempotent success and record the send instead of retrying
  3. Validate the scheduled_at format before retrying a scheduled send
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at convex/broadcast/sendBroadcast.ts:174 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of koala73/worldmonitor@eeab0a219f (2026-08-21). Data as JSON: /api/errors/1dd6e12e6971255f. Report an issue: GitHub.

Appendix: source

Thrown at convex/broadcast/sendBroadcast.ts:174

    const body: Record<string, unknown> = {};
    if (scheduledAt) body.scheduled_at = scheduledAt;

    const res = await fetch(
      `${RESEND_API_BASE}/broadcasts/${encodeURIComponent(broadcastId)}/send`,
      {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: `Bearer ${apiKey}`,
          "User-Agent": USER_AGENT,
        },
        body: JSON.stringify(body),
      },
    );

    if (!res.ok) {
      const errBody = await res.text().catch(() => "<no body>");
      throw new Error(
        `[sendProLaunchBroadcast] Resend ${res.status}: ${errBody}`,
      );
    }

    return {
      broadcastId,
      status: scheduledAt ? "scheduled" : "queued",
      scheduledAt: scheduledAt ?? null,
    };
  },
});

View on GitHub (pinned to eeab0a219f)