curl --request GET \
--url https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}', 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://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <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"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"activated_at": "2026-10-04T19:25:39.423Z",
"consecutive_failed_deliveries": 0,
"created_date": "2026-10-04T19:25:34.260Z",
"description": "Provisioning",
"health": "healthy",
"id": "6ac2a82edfafd1b6c6a9c27d",
"last_success_at": "2026-10-05T13:23:36.743Z",
"selected_event_types": [
"app.created.v1",
"app.deleted.v1"
],
"state": "active",
"target_url": "https://hooks.example.com/base44"
}{
"error": {
"code": "invalid_request",
"details": {
"fields": [
{
"field": "target_url",
"problem": "Field required"
}
]
},
"message": "The request is invalid."
}
}{
"error": {
"code": "unauthenticated",
"details": {},
"message": "Invalid workspace API key."
}
}{
"error": {
"code": "permission_denied",
"details": {},
"message": "This workspace API key is not permitted to manage outbound webhooks. Needed: [outbound_webhooks:write]"
}
}{
"error": {
"code": "not_found",
"details": {},
"message": "Webhook endpoint not found."
}
}{
"error": {
"code": "limit_exceeded",
"details": {
"max_endpoints": 10
},
"message": "A workspace may have at most 10 webhook endpoints."
}
}{
"error": {
"code": "rate_limited",
"details": {
"retry_after_seconds": 42
},
"message": "Rate limit exceeded. Retry after the interval in the Retry-After header."
}
}{
"error": {
"code": "internal_error",
"details": {},
"message": "An internal error occurred. Retry with exponential backoff."
}
}Get an endpoint
Returns one endpoint, including its state and delivery health.
curl --request GET \
--url https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}', 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://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <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"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/v1/outbound-webhooks/endpoints/{endpoint_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"activated_at": "2026-10-04T19:25:39.423Z",
"consecutive_failed_deliveries": 0,
"created_date": "2026-10-04T19:25:34.260Z",
"description": "Provisioning",
"health": "healthy",
"id": "6ac2a82edfafd1b6c6a9c27d",
"last_success_at": "2026-10-05T13:23:36.743Z",
"selected_event_types": [
"app.created.v1",
"app.deleted.v1"
],
"state": "active",
"target_url": "https://hooks.example.com/base44"
}{
"error": {
"code": "invalid_request",
"details": {
"fields": [
{
"field": "target_url",
"problem": "Field required"
}
]
},
"message": "The request is invalid."
}
}{
"error": {
"code": "unauthenticated",
"details": {},
"message": "Invalid workspace API key."
}
}{
"error": {
"code": "permission_denied",
"details": {},
"message": "This workspace API key is not permitted to manage outbound webhooks. Needed: [outbound_webhooks:write]"
}
}{
"error": {
"code": "not_found",
"details": {},
"message": "Webhook endpoint not found."
}
}{
"error": {
"code": "limit_exceeded",
"details": {
"max_endpoints": 10
},
"message": "A workspace may have at most 10 webhook endpoints."
}
}{
"error": {
"code": "rate_limited",
"details": {
"retry_after_seconds": 42
},
"message": "Rate limit exceeded. Retry after the interval in the Retry-After header."
}
}{
"error": {
"code": "internal_error",
"details": {},
"message": "An internal error occurred. Retry with exponential backoff."
}
}Authorizations
A workspace API key with the outbound_webhooks:write scope, sent as Authorization: Bearer <key>.
Path Parameters
The endpoint's ID.
"6ac2a82edfafd1b6c6a9c27d"
Response
Successful Response
A note for your own reference, up to 200 characters.
How recent deliveries went. unknown before the first delivery, healthy after a success, failing after 3 failed deliveries in a row. degraded is reserved.
unknown, healthy, degraded, failing The endpoint's ID.
The event types sent to this endpoint.
pending until it passes the activation test, then active. paused when you paused it, auto_paused when Base44 paused it after 10 failed deliveries in a row over at least 5 days. Only active endpoints receive events.
pending, active, paused, auto_paused The URL that receives events.
When the endpoint first became active at its current URL, in UTC. Events from before this time aren't sent to it.
Deliveries in a row that ran out of attempts. A success resets it to 0.
When the endpoint was registered, in UTC.
When a delivery last ran out of attempts. In UTC. Absent until it first happens.
When a delivery last succeeded. In UTC. Absent until it first happens.
Was this page helpful?