Create webhook
Creates a new webhook endpoint. If secret is not provided, a random 32-byte hex secret is generated.
Defaults: retryAttempts = 3, timeoutMs = 10000.
curl -X POST "https://api.sendkit.ai/v1/webhooks" \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"name": "CRM Sync",
"url": "https://crm.example.com/webhooks/sendkit",
"events": [
"email.replied",
"email.positive_reply"
]
}'
import requests
import json
url = "https://api.sendkit.ai/v1/webhooks"
headers = {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"name": "CRM Sync",
"url": "https://crm.example.com/webhooks/sendkit",
"events": [
"email.replied",
"email.positive_reply"
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.sendkit.ai/v1/webhooks", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"name": "CRM Sync",
"url": "https://crm.example.com/webhooks/sendkit",
"events": [
"email.replied",
"email.positive_reply"
]
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"name": "CRM Sync",
"url": "https://crm.example.com/webhooks/sendkit",
"events": [
"email.replied",
"email.positive_reply"
]
}`)
req, err := http.NewRequest("POST", "https://api.sendkit.ai/v1/webhooks", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.sendkit.ai/v1/webhooks')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['X-Api-Key'] = 'YOUR_API_KEY'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request.body = '{
"name": "CRM Sync",
"url": "https://crm.example.com/webhooks/sendkit",
"events": [
"email.replied",
"email.positive_reply"
]
}'
response = http.request(request)
puts response.body
{
"success": true,
"data": {
"_id": "664a1b2c3d4e5f6a7b8c9d0e",
"workspaceId": "ws_123",
"name": "CRM Sync",
"url": "https://crm.example.com/webhooks/sendkit",
"events": [
"email.replied",
"email.positive_reply"
],
"secret": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",
"retryAttempts": 3,
"timeoutMs": 10000,
"status": "active",
"createdBy": "user_123",
"createdAt": "2024-06-01T10:00:00.000Z",
"updatedAt": "2024-06-01T10:00:00.000Z"
}
}
/v1/webhooks
Platform API key (sk_user_...) or Workspace API key (sk_...)
The media type of the request body
Webhook name (trimmed)
Endpoint URL to receive webhook payloads
Events to subscribe to
HMAC signing secret. Auto-generated if omitted.
Number of retry attempts on failure (default 3)
Request timeout in milliseconds (default 10000)
Request Preview
Response
Response will appear here after sending the request
Authentication
API Key for authentication. Platform API key (sk_user_...) or Workspace API key (sk_...)
Bearer token. API key as Bearer token
Body
Webhook name (trimmed)
Endpoint URL to receive webhook payloads
Events to subscribe to
HMAC signing secret. Auto-generated if omitted.
Number of retry attempts on failure (default 3)
Request timeout in milliseconds (default 10000)
Responses
Last updated today
Built with Documentation.AI