curl --request POST \
--url https://mcp.arlohealth.ai/api/webhook \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"webhookUrl": "<string>",
"webhookToken": "<string>",
"deliveryContext": {},
"conversationSessionKey": "<string>",
"sessionKey": "<string>"
}
'import requests
url = "https://mcp.arlohealth.ai/api/webhook"
payload = {
"webhookUrl": "<string>",
"webhookToken": "<string>",
"deliveryContext": {},
"conversationSessionKey": "<string>",
"sessionKey": "<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({
webhookUrl: '<string>',
webhookToken: '<string>',
deliveryContext: {},
conversationSessionKey: '<string>',
sessionKey: '<string>'
})
};
fetch('https://mcp.arlohealth.ai/api/webhook', 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://mcp.arlohealth.ai/api/webhook",
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([
'webhookUrl' => '<string>',
'webhookToken' => '<string>',
'deliveryContext' => [
],
'conversationSessionKey' => '<string>',
'sessionKey' => '<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://mcp.arlohealth.ai/api/webhook"
payload := strings.NewReader("{\n \"webhookUrl\": \"<string>\",\n \"webhookToken\": \"<string>\",\n \"deliveryContext\": {},\n \"conversationSessionKey\": \"<string>\",\n \"sessionKey\": \"<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://mcp.arlohealth.ai/api/webhook")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"webhookUrl\": \"<string>\",\n \"webhookToken\": \"<string>\",\n \"deliveryContext\": {},\n \"conversationSessionKey\": \"<string>\",\n \"sessionKey\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mcp.arlohealth.ai/api/webhook")
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 \"webhookUrl\": \"<string>\",\n \"webhookToken\": \"<string>\",\n \"deliveryContext\": {},\n \"conversationSessionKey\": \"<string>\",\n \"sessionKey\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"webhookUrl": "<string>",
"hasSecret": true,
"hasDeliveryContext": true,
"conversationSessionKey": "<string>"
}{
"error": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"error": "<string>",
"needsAuth": true
}Register Webhook
Registers a webhook URL for receiving account notifications: conversation
activity (triage replies, provider messages, status changes), prescription
order updates, and care job updates (approved, declined, expired, each
care-team step, executed, failed). Payloads carry a typed event, an
optional status, and the consultationId or jobId they relate to,
never message content.
Validates the URL pattern (no private IPs) and tests connectivity before saving.
Supports PATCH semantics - only provided fields are updated.
curl --request POST \
--url https://mcp.arlohealth.ai/api/webhook \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"webhookUrl": "<string>",
"webhookToken": "<string>",
"deliveryContext": {},
"conversationSessionKey": "<string>",
"sessionKey": "<string>"
}
'import requests
url = "https://mcp.arlohealth.ai/api/webhook"
payload = {
"webhookUrl": "<string>",
"webhookToken": "<string>",
"deliveryContext": {},
"conversationSessionKey": "<string>",
"sessionKey": "<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({
webhookUrl: '<string>',
webhookToken: '<string>',
deliveryContext: {},
conversationSessionKey: '<string>',
sessionKey: '<string>'
})
};
fetch('https://mcp.arlohealth.ai/api/webhook', 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://mcp.arlohealth.ai/api/webhook",
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([
'webhookUrl' => '<string>',
'webhookToken' => '<string>',
'deliveryContext' => [
],
'conversationSessionKey' => '<string>',
'sessionKey' => '<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://mcp.arlohealth.ai/api/webhook"
payload := strings.NewReader("{\n \"webhookUrl\": \"<string>\",\n \"webhookToken\": \"<string>\",\n \"deliveryContext\": {},\n \"conversationSessionKey\": \"<string>\",\n \"sessionKey\": \"<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://mcp.arlohealth.ai/api/webhook")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"webhookUrl\": \"<string>\",\n \"webhookToken\": \"<string>\",\n \"deliveryContext\": {},\n \"conversationSessionKey\": \"<string>\",\n \"sessionKey\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mcp.arlohealth.ai/api/webhook")
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 \"webhookUrl\": \"<string>\",\n \"webhookToken\": \"<string>\",\n \"deliveryContext\": {},\n \"conversationSessionKey\": \"<string>\",\n \"sessionKey\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"webhookUrl": "<string>",
"hasSecret": true,
"hasDeliveryContext": true,
"conversationSessionKey": "<string>"
}{
"error": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"error": "<string>",
"needsAuth": true
}Authorizations
OAuth 2.1 with PKCE
Body
Publicly accessible URL to receive POST notifications
Bearer token sent with webhook requests
Platform-specific delivery context (e.g. channel, thread)
Session key for threading notifications
Custom session key (defaults to rest-api:{accountId})
Was this page helpful?