Create an endpoint
POST /webhooks
Subscribe a URL to the events you care about.
Body
endpointstringRequiredAn absolute
httpsURL. Redirects are never followed, so give the final one.eventsstring[]RequiredAt least one event type from the Events list. An unknown type is refused.
Request
curl -X POST "https://api.rasket.com/webhooks" \
-H "Authorization: Bearer $RASKET_API_KEY" \
-H "User-Agent: acme-billing/1.0" \
-H "Content-Type: application/json" \
-d '{
"endpoint": "https://acme.example.com/hooks/rasket",
"events": ["email.delivered", "email.bounced", "email.complained"]
}'const response = await fetch("https://api.rasket.com/webhooks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
"User-Agent": "acme-billing/1.0",
"Content-Type": "application/json",
},
body: JSON.stringify({
endpoint: "https://acme.example.com/hooks/rasket",
events: ["email.delivered", "email.bounced", "email.complained"]
}),
});
const { id } = await response.json();import os
import requests
response = requests.post(
"https://api.rasket.com/webhooks",
headers={
"Authorization": f"Bearer {os.environ['RASKET_API_KEY']}",
"User-Agent": "acme-billing/1.0",
},
json={
"endpoint": "https://acme.example.com/hooks/rasket",
"events": ["email.delivered", "email.bounced", "email.complained"]
},
)
id = response.json()["id"]Response 201
{
"object": "webhook",
"id": "3b7f21c0-d9a4-4e8b-b6c2-7a1f5d0e9c38",
"signing_secret": "whsec_5+7nYV7zXzDkm0guFcrnUAcgHhJhew/t"
}signing_secretis returned by this response and never again in full. Every later read shows it masked.- The URL is checked against blocked (private and internal) address ranges when you create it, and again on every delivery.
- How many endpoints a team may have depends on its plan.