curl --request POST \
--url https://api.omegas.dev/v1/webhook_endpoints \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"description": "<string>",
"event_types": [
"<string>"
],
"space_id": "<string>"
}
'import requests
url = "https://api.omegas.dev/v1/webhook_endpoints"
payload = {
"url": "<string>",
"description": "<string>",
"event_types": ["<string>"],
"space_id": "<string>"
}
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>',
description: '<string>',
event_types: ['<string>'],
space_id: '<string>'
})
};
fetch('https://api.omegas.dev/v1/webhook_endpoints', 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.omegas.dev/v1/webhook_endpoints",
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>',
'description' => '<string>',
'event_types' => [
'<string>'
],
'space_id' => '<string>'
]),
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.omegas.dev/v1/webhook_endpoints"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"event_types\": [\n \"<string>\"\n ],\n \"space_id\": \"<string>\"\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.omegas.dev/v1/webhook_endpoints")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"event_types\": [\n \"<string>\"\n ],\n \"space_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omegas.dev/v1/webhook_endpoints")
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 \"description\": \"<string>\",\n \"event_types\": [\n \"<string>\"\n ],\n \"space_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created_at": "<string>",
"enabled": true,
"event_types": [
"<string>"
],
"failure_count": 123,
"id": "<string>",
"object": "<string>",
"updated_at": "<string>",
"url": "<string>",
"secret": "<string>",
"description": "<string>",
"disabled_at": "<string>",
"last_error": "<string>",
"last_success_at": "<string>",
"space_id": "<string>"
}Create endpoint
Register a webhook endpoint (201). The response carries the signing secret ONCE.
curl --request POST \
--url https://api.omegas.dev/v1/webhook_endpoints \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"description": "<string>",
"event_types": [
"<string>"
],
"space_id": "<string>"
}
'import requests
url = "https://api.omegas.dev/v1/webhook_endpoints"
payload = {
"url": "<string>",
"description": "<string>",
"event_types": ["<string>"],
"space_id": "<string>"
}
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>',
description: '<string>',
event_types: ['<string>'],
space_id: '<string>'
})
};
fetch('https://api.omegas.dev/v1/webhook_endpoints', 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.omegas.dev/v1/webhook_endpoints",
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>',
'description' => '<string>',
'event_types' => [
'<string>'
],
'space_id' => '<string>'
]),
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.omegas.dev/v1/webhook_endpoints"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"event_types\": [\n \"<string>\"\n ],\n \"space_id\": \"<string>\"\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.omegas.dev/v1/webhook_endpoints")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"description\": \"<string>\",\n \"event_types\": [\n \"<string>\"\n ],\n \"space_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omegas.dev/v1/webhook_endpoints")
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 \"description\": \"<string>\",\n \"event_types\": [\n \"<string>\"\n ],\n \"space_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created_at": "<string>",
"enabled": true,
"event_types": [
"<string>"
],
"failure_count": 123,
"id": "<string>",
"object": "<string>",
"updated_at": "<string>",
"url": "<string>",
"secret": "<string>",
"description": "<string>",
"disabled_at": "<string>",
"last_error": "<string>",
"last_success_at": "<string>",
"space_id": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
https://…, publicly resolvable. Rejected otherwise.
Free-text label for humans reading the settings list.
Event types to receive. Omit or leave empty for ALL of them.
Raw uuid of the Space to scope deliveries to. Omit for org-wide (every Space).
Response
The endpoint, with its signing secret (shown once)
A freshly created endpoint. secret appears HERE and nowhere else, ever.
Empty = every event type.
Consecutive failed delivery attempts since the last success.
whe_<uuid>.
Discriminator for polymorphic SDK decoders. Always "webhook_endpoint".
The signing key, whsec_…. Store it now: it is not recoverable, and rotation means creating
a new endpoint.
A clamped failure summary — a status code or transport class, never a response body.
null = org-wide.