curl --request GET \
--url https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}', 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.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}",
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.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}"
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.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}")
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{
"createdAt": "2026-02-18T09:30:00.000Z",
"delivery": {
"kind": "webhook",
"verification": {
"signatureHeader": "example",
"signaturePrefix": "example",
"signedParts": [
{
"kind": "body"
}
],
"type": "none",
"verificationCredential": {
"credentialId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"vaultId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
}
},
"verificationCredential": {
"credentialId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"vaultId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"webhookUrl": "example"
},
"displayName": "example",
"eventSourceId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"revision": 1,
"status": "paused",
"type": "slack_events_api",
"updatedAt": "2026-02-18T09:30:00.000Z"
}{
"code": "invalid_request",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "unauthorized",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "forbidden",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "not_found",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "rate_limit_exceeded",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "internal_error",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "event_sources_unconfigured",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}Get an event source
Returns non-secret source configuration with a strong revision ETag. If-None-Match may answer 304.
curl --request GET \
--url https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}', 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.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}",
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.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}"
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.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recursion.labelbox.com/managed-agents/v1/event-sources/{eventSourceId}")
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{
"createdAt": "2026-02-18T09:30:00.000Z",
"delivery": {
"kind": "webhook",
"verification": {
"signatureHeader": "example",
"signaturePrefix": "example",
"signedParts": [
{
"kind": "body"
}
],
"type": "none",
"verificationCredential": {
"credentialId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"vaultId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
}
},
"verificationCredential": {
"credentialId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"vaultId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d"
},
"webhookUrl": "example"
},
"displayName": "example",
"eventSourceId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
"revision": 1,
"status": "paused",
"type": "slack_events_api",
"updatedAt": "2026-02-18T09:30:00.000Z"
}{
"code": "invalid_request",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "unauthorized",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "forbidden",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "not_found",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "rate_limit_exceeded",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "internal_error",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "bad_gateway",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "event_sources_unconfigured",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}{
"code": "gateway_timeout",
"message": "<string>",
"details": {
"field": "<string>",
"issues": [
"<string>"
],
"requestId": "<string>",
"retryable": true
}
}Authorizations
A Recursion API key, created in the console under API keys.
Headers
Strong ETag from an earlier member read. A match returns 304 without a body.
Path Parameters
Stable event-source identifier.
Response
Configured inbound event source, including its verification policy and lifecycle state.
Configured inbound event source, including its verification policy and lifecycle state.
Time the event source was created.
Customer-owned webhook endpoint and its non-secret verification configuration.
- Option 1
- Option 2
Show child attributes
Show child attributes
{ "kind": "webhook", "verification": { "signatureHeader": "example", "signaturePrefix": "example", "signedParts": [{ "kind": "body" }], "type": "none", "verificationCredential": { "credentialId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "vaultId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d" } }, "verificationCredential": { "credentialId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d", "vaultId": "9f8b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d" }, "webhookUrl": "example" }
Human-readable source name shown in the automation catalog.
Stable identifier for the event source.
Monotonic revision represented by the response ETag.
x >= 1Lifecycle state. Custom webhook sources start paused; connection-managed sources start active.
paused, active Inbound provider protocol interpreted by this source.
slack_events_api, github_webhook, custom_webhook Time the event source was last changed.