curl --request POST \
--url https://api-prod.studio.getsupervisor.ai/v1/webhooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"isActive": true,
"headers": {},
"secret": "<string>",
"method": "POST"
}
'import requests
url = "https://api-prod.studio.getsupervisor.ai/v1/webhooks"
payload = {
"url": "<string>",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"isActive": True,
"headers": {},
"secret": "<string>",
"method": "POST"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
agentId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
description: '<string>',
isActive: true,
headers: {},
secret: '<string>',
method: 'POST'
})
};
fetch('https://api-prod.studio.getsupervisor.ai/v1/webhooks', 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-prod.studio.getsupervisor.ai/v1/webhooks",
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([
'url' => '<string>',
'agentId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'description' => '<string>',
'isActive' => true,
'headers' => [
],
'secret' => '<string>',
'method' => 'POST'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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-prod.studio.getsupervisor.ai/v1/webhooks"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"agentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"description\": \"<string>\",\n \"isActive\": true,\n \"headers\": {},\n \"secret\": \"<string>\",\n \"method\": \"POST\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <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-prod.studio.getsupervisor.ai/v1/webhooks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"agentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"description\": \"<string>\",\n \"isActive\": true,\n \"headers\": {},\n \"secret\": \"<string>\",\n \"method\": \"POST\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.studio.getsupervisor.ai/v1/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"agentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"description\": \"<string>\",\n \"isActive\": true,\n \"headers\": {},\n \"secret\": \"<string>\",\n \"method\": \"POST\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"isActive": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"method": "POST",
"secretPreview": "<string>",
"lastDeliveryAt": "2023-11-07T05:31:56Z",
"headers": {},
"successCount": 1,
"failureCount": 1
}Crear webhook
Crea un webhook permitiendo asociar opcionalmente un agente y reutilizar URLs existentes.
curl --request POST \
--url https://api-prod.studio.getsupervisor.ai/v1/webhooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"isActive": true,
"headers": {},
"secret": "<string>",
"method": "POST"
}
'import requests
url = "https://api-prod.studio.getsupervisor.ai/v1/webhooks"
payload = {
"url": "<string>",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"isActive": True,
"headers": {},
"secret": "<string>",
"method": "POST"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
agentId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
description: '<string>',
isActive: true,
headers: {},
secret: '<string>',
method: 'POST'
})
};
fetch('https://api-prod.studio.getsupervisor.ai/v1/webhooks', 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-prod.studio.getsupervisor.ai/v1/webhooks",
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([
'url' => '<string>',
'agentId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'description' => '<string>',
'isActive' => true,
'headers' => [
],
'secret' => '<string>',
'method' => 'POST'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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-prod.studio.getsupervisor.ai/v1/webhooks"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"agentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"description\": \"<string>\",\n \"isActive\": true,\n \"headers\": {},\n \"secret\": \"<string>\",\n \"method\": \"POST\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <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-prod.studio.getsupervisor.ai/v1/webhooks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"agentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"description\": \"<string>\",\n \"isActive\": true,\n \"headers\": {},\n \"secret\": \"<string>\",\n \"method\": \"POST\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-prod.studio.getsupervisor.ai/v1/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"agentId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"description\": \"<string>\",\n \"isActive\": true,\n \"headers\": {},\n \"secret\": \"<string>\",\n \"method\": \"POST\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"isActive": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"method": "POST",
"secretPreview": "<string>",
"lastDeliveryAt": "2023-11-07T05:31:56Z",
"headers": {},
"successCount": 1,
"failureCount": 1
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Identificador del workspace multi-tenant. Obligatorio al autenticar con Authorization: Bearer, donde su ausencia devuelve 400 Workspace context is required. Con x-api-key es opcional: la llave ya identifica a su workspace y lo que mandes aquí se ignora.
Body
Debe ser https.
Identificador del agente asociado cuando aplica.
500Headers adicionales. Si incluye Authorization, se persiste cifrado y nunca se devuelve en WebhookDetail.headers.
Show child attributes
Show child attributes
Secreto HMAC opcional proporcionado por el cliente. Si se omite, el backend genera uno.
Método HTTP para entregar eventos del webhook
GET, POST Response
Created
Debe ser https.
Identificador del agente asociado cuando aplica.
500Método HTTP para entregar eventos del webhook
GET, POST Vista previa enmascarada del secreto (prefix...suffix).
Headers permitidos (allowlist).
Si existe Authorization, se persiste cifrado por separado y se devuelve redacted (p.ej. ********). El valor real nunca se devuelve.
Si el cliente reenvía el valor redacted, el backend lo trata como "sin cambios".
Show child attributes
Show child attributes
x >= 0x >= 0