Overview
Dispatch researches your space, writes every PR asset in your brand voice, and distributes it — on a schedule. Set your brand once; everything else runs on autopilot.
Content types
Dispatch produces six content types from one brand profile:
- Blog articles — researched, written, webhook-delivered on schedule.
- Press releases — headline, subhead, dateline, lede, spokesperson quote, boilerplate, media contact.
- Media advisories — short notices flagging an insight or development to journalists.
- Announcements — benefit-led product/business news for your own site.
- Thought leadership — first-person op-eds in your voice, backed by cited facts.
- Case studies — customer stories built strictly from facts you provide.
- Social posts — LinkedIn and X posts and threads derived from each piece.
Brand profile
In Brand settings you set your company name, voice, spokesperson, media contact, boilerplate, and product facts. Every piece Dispatch writes uses this. Quotes are never invented — they're templated around your spokesperson. Case studies require product facts you provide.
Press room
Every release, advisory, and announcement is published to your public press room at /press/:your-slug. The room shows your boilerplate and media contact. Share the link with journalists instead of attaching files.
Coverage briefs
Daily, Dispatch searches for recent coverage and mentions of your company and summarizes what's happening in your space, plus next steps. Run one any time from the Outreach page.
Webhook delivery
For blog articles and CMS integration, Dispatch POSTs each piece to your webhook URL. Payload is JSON with event = "{content_type}.created".
{
"event": "press_release.created",
"project_id": "65f2…ab9",
"post": {
"title": "The title",
"headline": "PR headline",
"subhead": "Supporting line",
"excerpt": "Two to three sentence summary",
"body_html": "<h2>Section</h2><p>Full HTML…</p>",
"tags": ["pr", "ai"],
"category": "ai",
"date": "2026-09-15T08:00:00.000Z",
"sources": [{ "title": "Source", "url": "https://…" }],
"keywords": ["pr autopilot"],
"pr": { "headline": "…", "boilerplate": "…", "contactBlock": "…" }
}
}
Authenticating requests
Protect your webhook endpoint with a custom header. Configure header name and value in your campaign settings.
// Example: verifying a request header in Express
if (req.headers['x-dispatch-key'] !== process.env.DISPATCH_KEY) {
return res.status(401).json({ error: 'unauthorized' });
}
Using the API
Manage campaigns, media, and posts programmatically. Authenticate with your API key (Authorization: Bearer <key>).
curl -X POST https://dispatch.neoned71.com/api/generate \
-H "Authorization: Bearer ab_…" \
-H "Content-Type: application/json" \
-d '{ "contentType": "press_release", "title": "Vector databases in 2026" }'