Webhooks
Receive real-time HTTP notifications when events occur in your VoxBurst account.
Base URL
https://api.voxburst.io/v1/webhooksEvents
| Event | Description |
|---|---|
post.scheduled | Post has been scheduled for future publishing |
post.published | Post was successfully published to all platforms |
post.partial | Post was published to some but not all platforms |
post.failed | Post failed to publish |
account.connected | A new social account was connected |
account.disconnected | A social account was disconnected |
account.error | A connected account has an error (e.g. token expired) |
Webhook Payload
All webhook events share this envelope format:
{
"id": "evt_abc123",
"type": "post.published",
"createdAt": "2026-02-20T14:00:00Z",
"data": {
"postId": "post_xyz789",
"platforms": ["TWITTER", "LINKEDIN"],
"publishedAt": "2026-02-20T14:00:00Z"
}
}Signature Verification
All webhook requests include a signature header for verification:
X-VoxBurst-Signature: sha256=xxxxxxxxxxxxxxxxVerify signatures to ensure requests come from VoxBurst:
import { createHmac } from 'crypto'
function verifyWebhookSignature(
payload: string,
signature: string,
secret: string
): boolean {
const expected = createHmac('sha256', secret)
.update(payload)
.digest('hex')
return `sha256=${expected}` === signature
}
// In your webhook handler:
app.post('/webhook', (req, res) => {
const signature = req.headers['x-voxburst-signature']
const isValid = verifyWebhookSignature(
req.rawBody,
signature,
process.env.WEBHOOK_SECRET
)
if (!isValid) return res.status(401).send('Invalid signature')
const event = req.body
console.log(`Received event: ${event.type}`)
res.status(200).send('OK')
})Always verify webhook signatures in production to prevent spoofed requests.
List Webhooks
GET /v1/webhooks
Required scopes: webhooks:read
curl https://api.voxburst.io/v1/webhooks \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxx"Create Webhook
POST /v1/webhooks
Required scopes: webhooks:write
curl -X POST https://api.voxburst.io/v1/webhooks \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"url": "https://yourapp.com/webhooks/voxburst",
"events": ["post.published", "post.failed"],
"secret": "your_webhook_secret"
}'Response
{
"id": "wh_abc123",
"url": "https://yourapp.com/webhooks/voxburst",
"events": ["post.published", "post.failed"],
"status": "ACTIVE",
"createdAt": "2026-02-20T10:00:00Z"
}Get Webhook
GET /v1/webhooks/:id
Required scopes: webhooks:read
curl https://api.voxburst.io/v1/webhooks/wh_abc123 \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxx"Update Webhook
PATCH /v1/webhooks/:id
Update webhook URL, events, or status.
Required scopes: webhooks:write
curl -X PATCH https://api.voxburst.io/v1/webhooks/wh_abc123 \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"events": ["post.published", "post.failed", "account.error"]
}'Delete Webhook
DELETE /v1/webhooks/:id
Required scopes: webhooks:write
curl -X DELETE https://api.voxburst.io/v1/webhooks/wh_abc123 \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxx"Last updated on