Method
POST /v1/webhooks/subscriptions
Headers
string
Bearer token (requires
webhooks:write).string
application/jsonBody Parameters
Request Example
curl -X POST "https://api.voyantcloud.com/v1/webhooks/subscriptions" \
-H "Authorization: Bearer $VOYANT_API_KEY" \
-H "content-type: application/json" \
-d '{
"url": "https://example.com/webhooks/voyant",
"events": ["product.*", "booking.created"],
"headers": {"X-Env": "production"},
"maxRetries": 5,
"description": "Primary catalog listener"
}'
const payload = {
url: "https://example.com/webhooks/voyant",
events: ["*"],
maxRetries: 3,
}
const res = await fetch("https://api.voyantcloud.com/v1/webhooks/subscriptions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VOYANT_API_KEY}`,
"content-type": "application/json",
},
body: JSON.stringify(payload),
})
const { data } = await res.json()
// Store data.secret securely; it will not be returned again
import os, requests
payload = {
"url": "https://example.com/webhooks/voyant",
"events": ["booking.*"],
"maxRetries": 4
}
resp = requests.post(
"https://api.voyantcloud.com/v1/webhooks/subscriptions",
headers={
"Authorization": f"Bearer {os.environ['VOYANT_API_KEY']}",
"content-type": "application/json",
},
json=payload,
)
subscription = resp.json()["data"]
Response Example
{
"data": {
"subscription": {
"id": "whsub_01J0J3Y3TFX2V22Y7DQ0A6J5G5",
"workspace_id": "ws_4a82d5bd-3330-4ad3-bf46-1b6a9a5d5d6a",
"url": "https://example.com/webhooks/voyant",
"events": ["product.*", "booking.created"],
"active": true,
"max_retries": 5,
"headers": {"X-Env": "production"},
"description": "Primary catalog listener",
"created_at": "2025-03-01T09:12:33.000Z",
"updated_at": "2025-03-01T09:12:33.000Z",
"last_delivery_at": null,
"failure_count": 0
},
"secret": "f8c6d3fc4c7103f9a8043f08ff9347bd0f52d23941e874a28ea844e5a27a0ce2"
}
}
Voyant returns the generated secret only once. Store it immediately and delete it from logs. Subsequent GET requests do not expose the secret.