curl -X POST https://api.60db.ai/webhooks \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhook",
"events": ["tts.completed", "stt.completed"],
"secret": "your-webhook-secret"
}'
const webhook = await client.createWebhook({
url: "https://example.com/webhook",
events: ["tts.completed", "stt.completed"],
secret: "your-webhook-secret",
});
webhook = client.create_webhook(
url='https://example.com/webhook',
events=['tts.completed', 'stt.completed'],
secret='your-webhook-secret'
)
{
"id": "wh-456",
"url": "https://example.com/webhook",
"events": ["tts.completed", "stt.completed"],
"status": "active",
"created_at": "2026-01-29T11:35:00Z"
}
Webhooks
Create Webhook
Create a new webhook
POST
/
webhooks
curl -X POST https://api.60db.ai/webhooks \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhook",
"events": ["tts.completed", "stt.completed"],
"secret": "your-webhook-secret"
}'
const webhook = await client.createWebhook({
url: "https://example.com/webhook",
events: ["tts.completed", "stt.completed"],
secret: "your-webhook-secret",
});
webhook = client.create_webhook(
url='https://example.com/webhook',
events=['tts.completed', 'stt.completed'],
secret='your-webhook-secret'
)
{
"id": "wh-456",
"url": "https://example.com/webhook",
"events": ["tts.completed", "stt.completed"],
"status": "active",
"created_at": "2026-01-29T11:35:00Z"
}
Request
Headers
string
required
Bearer token with your API key
string
required
application/json
Body
string
required
Webhook URL (must be HTTPS)
array
required
Array of event types to subscribe to
string
Optional secret for webhook signature verification
Available Events
tts.completed- Text-to-speech generation completedtts.failed- Text-to-speech generation failedstt.completed- Speech-to-text transcription completedstt.failed- Speech-to-text transcription failedvoice.created- Custom voice createdvoice.ready- Custom voice processing completedvoice.failed- Custom voice processing failed
Response
string
Webhook ID
string
Webhook URL
array
Subscribed events
string
Webhook status
string
Creation timestamp
curl -X POST https://api.60db.ai/webhooks \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhook",
"events": ["tts.completed", "stt.completed"],
"secret": "your-webhook-secret"
}'
const webhook = await client.createWebhook({
url: "https://example.com/webhook",
events: ["tts.completed", "stt.completed"],
secret: "your-webhook-secret",
});
webhook = client.create_webhook(
url='https://example.com/webhook',
events=['tts.completed', 'stt.completed'],
secret='your-webhook-secret'
)
{
"id": "wh-456",
"url": "https://example.com/webhook",
"events": ["tts.completed", "stt.completed"],
"status": "active",
"created_at": "2026-01-29T11:35:00Z"
}
Webhook Payload
When an event occurs, we’ll send a POST request to your webhook URL:{
"event": "tts.completed",
"timestamp": "2026-01-29T11:35:00Z",
"data": {
"id": "tts-123",
"text": "Hello, world!",
"voice_id": "default-voice",
"audio_url": "https://cdn.60db.com/audio/tts-123.mp3",
"duration": 2.5
}
}