Create Advanced Webhook Endpoint
curl --request POST \
--url https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"url": "<string>",
"description": "<string>",
"filterTypes": [
"<string>"
],
"channels": [
"<string>"
],
"disabled": true,
"rateLimit": 123,
"uid": "<string>",
"metadata": {}
}
}
'import requests
url = "https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create"
payload = { "data": {
"url": "<string>",
"description": "<string>",
"filterTypes": ["<string>"],
"channels": ["<string>"],
"disabled": True,
"rateLimit": 123,
"uid": "<string>",
"metadata": {}
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
url: '<string>',
description: '<string>',
filterTypes: ['<string>'],
channels: ['<string>'],
disabled: true,
rateLimit: 123,
uid: '<string>',
metadata: {}
}
})
};
fetch('https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'url' => '<string>',
'description' => '<string>',
'filterTypes' => [
'<string>'
],
'channels' => [
'<string>'
],
'disabled' => true,
'rateLimit' => 123,
'uid' => '<string>',
'metadata' => [
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create"
payload := strings.NewReader("{\n \"data\": {\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"filterTypes\": [\n \"<string>\"\n ],\n \"channels\": [\n \"<string>\"\n ],\n \"disabled\": true,\n \"rateLimit\": 123,\n \"uid\": \"<string>\",\n \"metadata\": {}\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"filterTypes\": [\n \"<string>\"\n ],\n \"channels\": [\n \"<string>\"\n ],\n \"disabled\": true,\n \"rateLimit\": 123,\n \"uid\": \"<string>\",\n \"metadata\": {}\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"filterTypes\": [\n \"<string>\"\n ],\n \"channels\": [\n \"<string>\"\n ],\n \"disabled\": true,\n \"rateLimit\": 123,\n \"uid\": \"<string>\",\n \"metadata\": {}\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Advanced webhook endpoint created successfully.",
"data": {
"id": "ep_2vK9mPzGqLxYwBnRtCdHsJfAeUo",
"url": "https://example.com/webhooks/velt",
"description": "Primary endpoint",
"filterTypes": ["comment.add", "comment.update"],
"channels": null,
"disabled": false,
"rateLimit": null,
"uid": null,
"createdAt": "2026-06-01T10:15:30.000Z",
"updatedAt": "2026-06-01T10:15:30.000Z"
}
}
}
Advanced Webhooks
Create Advanced Webhook Endpoint
POST
/
v2
/
workspace
/
advancedwebhook
/
endpoints
/
create
Create Advanced Webhook Endpoint
curl --request POST \
--url https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"url": "<string>",
"description": "<string>",
"filterTypes": [
"<string>"
],
"channels": [
"<string>"
],
"disabled": true,
"rateLimit": 123,
"uid": "<string>",
"metadata": {}
}
}
'import requests
url = "https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create"
payload = { "data": {
"url": "<string>",
"description": "<string>",
"filterTypes": ["<string>"],
"channels": ["<string>"],
"disabled": True,
"rateLimit": 123,
"uid": "<string>",
"metadata": {}
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
url: '<string>',
description: '<string>',
filterTypes: ['<string>'],
channels: ['<string>'],
disabled: true,
rateLimit: 123,
uid: '<string>',
metadata: {}
}
})
};
fetch('https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'url' => '<string>',
'description' => '<string>',
'filterTypes' => [
'<string>'
],
'channels' => [
'<string>'
],
'disabled' => true,
'rateLimit' => 123,
'uid' => '<string>',
'metadata' => [
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create"
payload := strings.NewReader("{\n \"data\": {\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"filterTypes\": [\n \"<string>\"\n ],\n \"channels\": [\n \"<string>\"\n ],\n \"disabled\": true,\n \"rateLimit\": 123,\n \"uid\": \"<string>\",\n \"metadata\": {}\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"filterTypes\": [\n \"<string>\"\n ],\n \"channels\": [\n \"<string>\"\n ],\n \"disabled\": true,\n \"rateLimit\": 123,\n \"uid\": \"<string>\",\n \"metadata\": {}\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"filterTypes\": [\n \"<string>\"\n ],\n \"channels\": [\n \"<string>\"\n ],\n \"disabled\": true,\n \"rateLimit\": 123,\n \"uid\": \"<string>\",\n \"metadata\": {}\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Advanced webhook endpoint created successfully.",
"data": {
"id": "ep_2vK9mPzGqLxYwBnRtCdHsJfAeUo",
"url": "https://example.com/webhooks/velt",
"description": "Primary endpoint",
"filterTypes": ["comment.add", "comment.update"],
"channels": null,
"disabled": false,
"rateLimit": null,
"uid": null,
"createdAt": "2026-06-01T10:15:30.000Z",
"updatedAt": "2026-06-01T10:15:30.000Z"
}
}
}
Use this API to create a new webhook delivery endpoint for a workspace.
This endpoint uses API-key-level auth: pass
x-velt-api-key and x-velt-auth-token as headers. You can obtain these from the Get Auth Tokens endpoint.Advanced webhooks must be enabled for the workspace first via Update Advanced Webhook Config with
{ "isEnabled": true }. Otherwise this endpoint returns a FAILED_PRECONDITION error.Signing secret. The endpoint’s signing secret is always generated server-side — it is never accepted from the request. Retrieve it after creation via Get Advanced Webhook Endpoint Secret and use it to verify webhook payload signatures.
Endpoint
POST https://api.velt.dev/v2/workspace/advancedwebhook/endpoints/create
Headers
string
required
Your API key.
string
required
Your Auth Token.
Body
Params
object
required
Show properties
Show properties
string
required
The URL that will receive webhook events. Must be a valid
http(s) URL.string
Human-readable description of the endpoint.
string[]
Event types this endpoint subscribes to (e.g.
["comment.add", "comment.update"]). If omitted, the endpoint receives all event types. Must be a non-empty array when provided. See Webhooks for the full list of event types.string[]
Channels this endpoint listens to. If omitted, the endpoint receives events from all channels. Must be a non-empty array when provided.
boolean
Whether the endpoint is created in a disabled state. Defaults to
false.number
Maximum deliveries per second for this endpoint. Positive integer.
string
Optional unique identifier you can assign to the endpoint.
object
Key-value pairs (string values) attached to the endpoint.
Example Request
{
"data": {
"url": "https://example.com/webhooks/velt",
"description": "Primary endpoint",
"filterTypes": ["comment.add", "comment.update"]
}
}
Example Response
Success Response
{
"result": {
"status": "success",
"message": "Advanced webhook endpoint created successfully.",
"data": {
"id": "ep_2vK9mPzGqLxYwBnRtCdHsJfAeUo",
"url": "https://example.com/webhooks/velt",
"description": "Primary endpoint",
"filterTypes": ["comment.add", "comment.update"],
"channels": null,
"disabled": false,
"rateLimit": null,
"uid": null,
"createdAt": "2026-06-01T10:15:30.000Z",
"updatedAt": "2026-06-01T10:15:30.000Z"
}
}
}
Failure Response
{
"error": {
"status": "INVALID_ARGUMENT",
"message": "url must be a valid http(s) URL."
}
}
Failure Response (advanced webhooks disabled)
{
"error": {
"status": "FAILED_PRECONDITION",
"message": "Advanced webhooks are disabled for this workspace. Enable them via POST /v2/workspace/advancedwebhookconfig/update with { \"isEnabled\": true }."
}
}
{
"result": {
"status": "success",
"message": "Advanced webhook endpoint created successfully.",
"data": {
"id": "ep_2vK9mPzGqLxYwBnRtCdHsJfAeUo",
"url": "https://example.com/webhooks/velt",
"description": "Primary endpoint",
"filterTypes": ["comment.add", "comment.update"],
"channels": null,
"disabled": false,
"rateLimit": null,
"uid": null,
"createdAt": "2026-06-01T10:15:30.000Z",
"updatedAt": "2026-06-01T10:15:30.000Z"
}
}
}
Was this page helpful?
⌘I

