Webhooks
Cadastre uma URL, veja as últimas entregas e dispare um evento de teste.
POST/v1/webhooks
Criar webhook
O secret é exibido apenas nesta resposta. Use-o para verificar X-SMSKit-Signature.
Corpo · WebhookIn
descriptionstring- até 200 caracteres
eventsWebhookEventType[]obrigatório- valores: message.sent, message.delivered, message.failed, message.replied, sms.completed, webhook.test
urlstringobrigatório- até 500 caracteres
Respostas
201ObjetoWebhookOutactive, created_at, description, events, id, object, secret, url401Credencial ausente, inválida ou expirada422validation_error429rate_limited — respeite Retry-After
curl -X POST https://api.smskit.dev/v1/webhooks \
-H "Authorization: Bearer $SMSKIT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhooks/smskit",
"events": [
"message.delivered",
"sms.completed"
]
}'
const response = await fetch("https://api.smskit.dev/v1/webhooks", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://example.com/webhooks/smskit",
events: ["message.delivered", "sms.completed"],
}),
});
const data = await response.json();
import httpx
response = httpx.post(
"https://api.smskit.dev/v1/webhooks",
headers={"Authorization": f"Bearer {token}"},
json={
"url": "https://example.com/webhooks/smskit",
"events": [
"message.delivered",
"sms.completed",
],
},
)
data = response.json()
{
"id": "wh_4d8q1z",
"object": "webhook",
"url": "https://example.com/webhooks/smskit",
"events": [
"message.delivered",
"sms.completed"
],
"active": true,
"created_at": "2026-09-11T14:03:00Z",
"description": "Entregas em produção",
"secret": "whsec_6k2p9v4d1z8m"
}
GET/v1/webhooks
Listar webhooks
Respostas
200ObjetoWebhookListdata, object401Credencial ausente, inválida ou expirada422validation_error429rate_limited — respeite Retry-After
curl https://api.smskit.dev/v1/webhooks \
-H "Authorization: Bearer $SMSKIT_TOKEN"
const response = await fetch("https://api.smskit.dev/v1/webhooks", {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
},
});
const data = await response.json();
import httpx
response = httpx.get(
"https://api.smskit.dev/v1/webhooks",
headers={"Authorization": f"Bearer {token}"},
)
data = response.json()
{
"object": "list",
"data": [
{
"id": "wh_4d8q1z",
"object": "webhook",
"url": "https://example.com/webhooks/smskit",
"events": [
"message.delivered",
"sms.completed"
],
"active": true,
"created_at": "2026-09-11T14:03:00Z",
"description": "Entregas em produção",
"secret": "whsec_6k2p9v4d1z8m"
}
]
}
DELETE/v1/webhooks/{webhook_id}
Remover webhook
Parâmetros
webhook_idstringobrigatório
Respostas
204Sucesso401Credencial ausente, inválida ou expirada404not_found422validation_error429rate_limited — respeite Retry-After
curl -X DELETE https://api.smskit.dev/v1/webhooks/wh_4d8q1z \
-H "Authorization: Bearer $SMSKIT_TOKEN"
const response = await fetch("https://api.smskit.dev/v1/webhooks/wh_4d8q1z", {
method: "DELETE",
headers: {
Authorization: `Bearer ${token}`,
},
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
import httpx
response = httpx.delete(
"https://api.smskit.dev/v1/webhooks/wh_4d8q1z",
headers={"Authorization": f"Bearer {token}"},
)
response.raise_for_status()
GET/v1/webhooks/{webhook_id}/deliveries
Entregas recentes de um webhook
Parâmetros
webhook_idstringobrigatório
Respostas
200ObjetoWebhookDeliveryListdata, object401Credencial ausente, inválida ou expirada422validation_error429rate_limited — respeite Retry-After
curl https://api.smskit.dev/v1/webhooks/wh_4d8q1z/deliveries \
-H "Authorization: Bearer $SMSKIT_TOKEN"
const response = await fetch("https://api.smskit.dev/v1/webhooks/wh_4d8q1z/deliveries", {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
},
});
const data = await response.json();
import httpx
response = httpx.get(
"https://api.smskit.dev/v1/webhooks/wh_4d8q1z/deliveries",
headers={"Authorization": f"Bearer {token}"},
)
data = response.json()
{
"object": "list",
"data": [
{
"id": "whd_9k2p7r",
"object": "webhook_delivery",
"status": "pending",
"attempts": 1,
"created_at": "2026-09-11T14:03:00Z",
"event_id": "evt_8n3v5t",
"event_type": "message.delivered",
"delivered_at": "2026-09-11T14:03:05Z",
"last_error": null,
"last_status_code": 200,
"next_attempt_at": null,
"test": false
}
]
}
POST/v1/webhooks/{webhook_id}/test
Disparar um evento webhook.test
Parâmetros
webhook_idstringobrigatório
Respostas
202Sucesso401Credencial ausente, inválida ou expirada422validation_error429rate_limited — respeite Retry-After
curl -X POST https://api.smskit.dev/v1/webhooks/wh_4d8q1z/test \
-H "Authorization: Bearer $SMSKIT_TOKEN"
const response = await fetch("https://api.smskit.dev/v1/webhooks/wh_4d8q1z/test", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
},
});
const data = await response.json();
import httpx
response = httpx.post(
"https://api.smskit.dev/v1/webhooks/wh_4d8q1z/test",
headers={"Authorization": f"Bearer {token}"},
)
data = response.json()