curl --request POST \
--url https://app.xosum.am/your-analysis-webhook-url \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"event_type": "analysis_ready",
"secret": "<string>",
"docId": "<string>",
"analysisId": "<string>",
"metadata": {},
"checklistId": "<string>",
"checklistName": "<string>",
"results": {},
"link": "<string>"
}
'import requests
url = "https://app.xosum.am/your-analysis-webhook-url"
payload = {
"event_type": "analysis_ready",
"secret": "<string>",
"docId": "<string>",
"analysisId": "<string>",
"metadata": {},
"checklistId": "<string>",
"checklistName": "<string>",
"results": {},
"link": "<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({
event_type: 'analysis_ready',
secret: '<string>',
docId: '<string>',
analysisId: '<string>',
metadata: {},
checklistId: '<string>',
checklistName: '<string>',
results: {},
link: '<string>'
})
};
fetch('https://app.xosum.am/your-analysis-webhook-url', 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.xosum.am/your-analysis-webhook-url",
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([
'event_type' => 'analysis_ready',
'secret' => '<string>',
'docId' => '<string>',
'analysisId' => '<string>',
'metadata' => [
],
'checklistId' => '<string>',
'checklistName' => '<string>',
'results' => [
],
'link' => '<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://app.xosum.am/your-analysis-webhook-url"
payload := strings.NewReader("{\n \"event_type\": \"analysis_ready\",\n \"secret\": \"<string>\",\n \"docId\": \"<string>\",\n \"analysisId\": \"<string>\",\n \"metadata\": {},\n \"checklistId\": \"<string>\",\n \"checklistName\": \"<string>\",\n \"results\": {},\n \"link\": \"<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://app.xosum.am/your-analysis-webhook-url")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"event_type\": \"analysis_ready\",\n \"secret\": \"<string>\",\n \"docId\": \"<string>\",\n \"analysisId\": \"<string>\",\n \"metadata\": {},\n \"checklistId\": \"<string>\",\n \"checklistName\": \"<string>\",\n \"results\": {},\n \"link\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.xosum.am/your-analysis-webhook-url")
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 \"event_type\": \"analysis_ready\",\n \"secret\": \"<string>\",\n \"docId\": \"<string>\",\n \"analysisId\": \"<string>\",\n \"metadata\": {},\n \"checklistId\": \"<string>\",\n \"checklistName\": \"<string>\",\n \"results\": {},\n \"link\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyReceive Analysis
Xosum.am will send a POST request to this URL once a checklist-based analysis is complete. This endpoint does not require any Authorization header. Use the secret field to verify the source.
Note: This is a callback URL provided by the user and is not part of the public Xosum.am API.
curl --request POST \
--url https://app.xosum.am/your-analysis-webhook-url \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"event_type": "analysis_ready",
"secret": "<string>",
"docId": "<string>",
"analysisId": "<string>",
"metadata": {},
"checklistId": "<string>",
"checklistName": "<string>",
"results": {},
"link": "<string>"
}
'import requests
url = "https://app.xosum.am/your-analysis-webhook-url"
payload = {
"event_type": "analysis_ready",
"secret": "<string>",
"docId": "<string>",
"analysisId": "<string>",
"metadata": {},
"checklistId": "<string>",
"checklistName": "<string>",
"results": {},
"link": "<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({
event_type: 'analysis_ready',
secret: '<string>',
docId: '<string>',
analysisId: '<string>',
metadata: {},
checklistId: '<string>',
checklistName: '<string>',
results: {},
link: '<string>'
})
};
fetch('https://app.xosum.am/your-analysis-webhook-url', 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.xosum.am/your-analysis-webhook-url",
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([
'event_type' => 'analysis_ready',
'secret' => '<string>',
'docId' => '<string>',
'analysisId' => '<string>',
'metadata' => [
],
'checklistId' => '<string>',
'checklistName' => '<string>',
'results' => [
],
'link' => '<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://app.xosum.am/your-analysis-webhook-url"
payload := strings.NewReader("{\n \"event_type\": \"analysis_ready\",\n \"secret\": \"<string>\",\n \"docId\": \"<string>\",\n \"analysisId\": \"<string>\",\n \"metadata\": {},\n \"checklistId\": \"<string>\",\n \"checklistName\": \"<string>\",\n \"results\": {},\n \"link\": \"<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://app.xosum.am/your-analysis-webhook-url")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"event_type\": \"analysis_ready\",\n \"secret\": \"<string>\",\n \"docId\": \"<string>\",\n \"analysisId\": \"<string>\",\n \"metadata\": {},\n \"checklistId\": \"<string>\",\n \"checklistName\": \"<string>\",\n \"results\": {},\n \"link\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.xosum.am/your-analysis-webhook-url")
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 \"event_type\": \"analysis_ready\",\n \"secret\": \"<string>\",\n \"docId\": \"<string>\",\n \"analysisId\": \"<string>\",\n \"metadata\": {},\n \"checklistId\": \"<string>\",\n \"checklistName\": \"<string>\",\n \"results\": {},\n \"link\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodychecklistId. The path /your-analysis-webhook-url is a placeholder for whatever publicly-reachable URL you configure in your account.secret field matches your webhookSecret, return 200 OK quickly, and process the results map asynchronously. Each entry in results is keyed by the checklist question ID; see AnalysisResultEntry in the schema below for the per-question shape.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Event type for checklist analysis completion.
analysis_ready Webhook secret to validate authenticity.
Transcription/recording job ID.
Analysis document ID.
Metadata passed during creation.
Checklist ID used for this analysis (if present).
Checklist name snapshot captured at analysis time (if present).
Map keyed by checklist question ID, where each value contains the analysis result.
Show child attributes
Show child attributes
Direct URL to the recording details inside Xosum.am.
Response
Webhook received and acknowledged.
Was this page helpful?
