curl --request GET \
--url https://api.arize.com/v2/webhook-subscriptions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arize.com/v2/webhook-subscriptions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arize.com/v2/webhook-subscriptions', 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.arize.com/v2/webhook-subscriptions",
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://api.arize.com/v2/webhook-subscriptions"
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://api.arize.com/v2/webhook-subscriptions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/webhook-subscriptions")
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{
"subscriptions": [
{
"id": "V2ViaG9va1N1YnNjcmlwdGlvbjoxMjM0Ng==",
"webhook_id": "V2ViaG9vazoxMjM0NQ==",
"source_type": "PROMPT",
"source_id": "UHJvbXB0OjEyMzQ1",
"event": "PROMPT_VERSION_LABELED",
"created_at": "2026-08-02T12:00:00Z"
},
{
"id": "V2ViaG9va1N1YnNjcmlwdGlvbjoxMjM0NQ==",
"webhook_id": "V2ViaG9vazoxMjM0NQ==",
"source_type": "PROMPT",
"source_id": "UHJvbXB0OjEyMzQ1",
"event": "PROMPT_VERSION_CREATED",
"created_at": "2026-08-01T12:00:00Z"
}
],
"pagination": {
"has_more": false
}
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 403,
"title": "Access forbidden",
"detail": "You do not have permission to access this resource.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#access-forbidden"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}List webhook subscriptions
List webhook subscriptions attached to prompts and evaluators the caller
can read, most recently created first. To list one source, provide both
source_type and source_id; providing only one returns a 400. An
unfiltered list returns a 403 when the caller can read no prompt or
evaluator at all.
Each subscription delivers one event to one webhook, so a webhook that
receives several events from the source appears once per event.
Subscriptions whose webhook has since been deleted are omitted after
the page is read, so a page may hold fewer than limit items, or none,
while has_more is still true. Keep paging until has_more is
false.
When filtering by source, a 404 is returned when the source does not exist or is not readable.
curl --request GET \
--url https://api.arize.com/v2/webhook-subscriptions \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arize.com/v2/webhook-subscriptions"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arize.com/v2/webhook-subscriptions', 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.arize.com/v2/webhook-subscriptions",
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://api.arize.com/v2/webhook-subscriptions"
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://api.arize.com/v2/webhook-subscriptions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/webhook-subscriptions")
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{
"subscriptions": [
{
"id": "V2ViaG9va1N1YnNjcmlwdGlvbjoxMjM0Ng==",
"webhook_id": "V2ViaG9vazoxMjM0NQ==",
"source_type": "PROMPT",
"source_id": "UHJvbXB0OjEyMzQ1",
"event": "PROMPT_VERSION_LABELED",
"created_at": "2026-08-02T12:00:00Z"
},
{
"id": "V2ViaG9va1N1YnNjcmlwdGlvbjoxMjM0NQ==",
"webhook_id": "V2ViaG9vazoxMjM0NQ==",
"source_type": "PROMPT",
"source_id": "UHJvbXB0OjEyMzQ1",
"event": "PROMPT_VERSION_CREATED",
"created_at": "2026-08-01T12:00:00Z"
}
],
"pagination": {
"has_more": false
}
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 403,
"title": "Access forbidden",
"detail": "You do not have permission to access this resource.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#access-forbidden"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Authorizations
Most Arize AI endpoints require authentication. For those endpoints that require authentication, include your API key in the request header using the format
Query Parameters
Filter subscriptions to one kind of source. Must be paired with
source_id. When both filters are omitted, subscriptions from every
supported source type are returned.
The kind of resource a webhook subscription is attached to.
PROMPT—source_idis a prompt id. Prompt events apply.EVALUATOR—source_idis an evaluator id. Evaluator events apply.
PROMPT, EVALUATOR Filter subscriptions to one prompt or evaluator. Must be paired with
source_type. When both filters are omitted, subscriptions from every
readable supported source are returned.
A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Maximum items to return. Defaults to 50 if omitted; maximum is 100.
1 <= x <= 100Opaque pagination cursor returned from a previous response
(pagination.next_cursor). Treat it as an unreadable token; do not
attempt to parse or construct it.
Was this page helpful?