<essential_principles>
- •Broadcast is a self-hosted email marketing platform at sendbroadcast.net
- •All API requests require Bearer token authentication
- •Base URL is your Broadcast instance domain (not sendbroadcast.net)
- •API responses use standard HTTP status codes </essential_principles>
<quick_reference>
Authentication:
Authorization: Bearer YOUR_ACCESS_TOKEN
Base endpoints:
- •
GET /api/v1/broadcasts- List broadcasts - •
POST /api/v1/broadcasts- Create broadcast - •
GET /api/v1/broadcasts/:id- Get broadcast - •
PATCH /api/v1/broadcasts/:id- Update broadcast - •
DELETE /api/v1/broadcasts/:id- Delete broadcast - •
POST /api/v1/broadcasts/:id/send_broadcast- Send broadcast - •
GET /api/v1/subscribers.json- List subscribers - •
GET /api/v1/subscribers/find.json?email=- Find subscriber - •
POST /api/v1/subscribers.json- Create subscriber - •
PATCH /api/v1/subscribers.json- Update subscriber - •
POST /api/v1/subscribers/unsubscribe.json- Unsubscribe - •
POST /api/v1/subscribers/resubscribe.json- Resubscribe
Broadcast statuses:
draft | scheduled | queueing | sending | sent | failed | partial_failure | aborted | paused
</quick_reference>
Read the appropriate reference file based on what you're working on. </routing>
<common_issues>
401 Unauthorized:
- •Token expired or revoked
- •Token lacks required permissions (Read vs Write)
- •Missing
Bearerprefix in Authorization header
404 Not Found:
- •Broadcast/subscriber doesn't exist
- •Wrong base URL (using sendbroadcast.net instead of your instance)
422 Unprocessable Entity:
- •Missing required fields (subject, body for broadcasts)
- •Invalid email format for subscribers
- •Trying to update a sent broadcast
Body format for broadcasts:
- •Must be valid HTML
- •Use
<br>for line breaks,<p>for paragraphs - •Don't include
<html>,<head>,<body>tags - Broadcast wraps content automatically </common_issues>
<integration_notes>
In this plugin, the Broadcast provider is at src/providers/broadcast/broadcast.ts
Key configuration:
{
baseUrl: 'https://your-broadcast-instance.com',
token: 'your_access_token',
fromEmail: 'newsletter@yourdomain.com',
fromName: 'Your Name',
replyTo: 'reply@yourdomain.com'
}
The plugin creates broadcasts in Payload first, then syncs to Broadcast on first update with content (subject + body). </integration_notes>
<success_criteria>
- •API calls use correct endpoints and methods
- •Authentication header is properly formatted
- •Request bodies match expected schema
- •Error responses are handled appropriately </success_criteria>