Skip to Content

Webhooks

Receive real-time HTTP notifications when events occur in your VoxBurst account.

Base URL

https://api.voxburst.io/v1/webhooks

Events

EventDescription
post.scheduledPost has been scheduled for future publishing
post.publishedPost was successfully published to all platforms
post.partialPost was published to some but not all platforms
post.failedPost failed to publish
account.connectedA new social account was connected
account.disconnectedA social account was disconnected
account.errorA 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=xxxxxxxxxxxxxxxx

Verify 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