curl --request GET \
--url https://mcp.arlohealth.ai/api/consultations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://mcp.arlohealth.ai/api/consultations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://mcp.arlohealth.ai/api/consultations/{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://mcp.arlohealth.ai/api/consultations/{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://mcp.arlohealth.ai/api/consultations/{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://mcp.arlohealth.ai/api/consultations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mcp.arlohealth.ai/api/consultations/{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{
"conversationId": "<string>",
"status": "IDLE",
"statusDescription": "<string>",
"region": "<string>",
"providerVisit": {
"active": true,
"providerName": "<string>",
"consultId": "<string>"
},
"pastVisits": [
{
"consultId": "<string>",
"closedAt": "<string>",
"hasNotes": true
}
],
"messages": [
{
"id": "<string>",
"type": "text",
"content": "<string>",
"sender": "user",
"timestamp": "2023-11-07T05:31:56Z",
"senderId": "<string>"
}
],
"omittedOlderMessages": 123,
"lastActivityAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"informationNeed": [
{
"prompt": "<string>",
"why": "<string>",
"priority": "required",
"redFlagGate": true
}
],
"informationNeedAsOfMessageId": "<string>",
"paymentGate": {
"consultationSummary": "<string>",
"ctaText": "<string>",
"gateType": "NONE",
"isLoading": true,
"paymentType": "pay_per_use"
},
"nextSteps": [
"<string>"
]
}{
"error": "<string>",
"needsAuth": true
}Get Conversation
Returns the current status, messages, and payment gate info for a consultation.
curl --request GET \
--url https://mcp.arlohealth.ai/api/consultations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://mcp.arlohealth.ai/api/consultations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://mcp.arlohealth.ai/api/consultations/{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://mcp.arlohealth.ai/api/consultations/{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://mcp.arlohealth.ai/api/consultations/{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://mcp.arlohealth.ai/api/consultations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mcp.arlohealth.ai/api/consultations/{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{
"conversationId": "<string>",
"status": "IDLE",
"statusDescription": "<string>",
"region": "<string>",
"providerVisit": {
"active": true,
"providerName": "<string>",
"consultId": "<string>"
},
"pastVisits": [
{
"consultId": "<string>",
"closedAt": "<string>",
"hasNotes": true
}
],
"messages": [
{
"id": "<string>",
"type": "text",
"content": "<string>",
"sender": "user",
"timestamp": "2023-11-07T05:31:56Z",
"senderId": "<string>"
}
],
"omittedOlderMessages": 123,
"lastActivityAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"informationNeed": [
{
"prompt": "<string>",
"why": "<string>",
"priority": "required",
"redFlagGate": true
}
],
"informationNeedAsOfMessageId": "<string>",
"paymentGate": {
"consultationSummary": "<string>",
"ctaText": "<string>",
"gateType": "NONE",
"isLoading": true,
"paymentType": "pay_per_use"
},
"nextSteps": [
"<string>"
]
}{
"error": "<string>",
"needsAuth": true
}Authorizations
OAuth 2.1 with PKCE
Path Parameters
Consultation/conversation ID
Query Parameters
Whether to include message history
Response
Consultation details
Full conversation details with messages
A conversation is a continuous thread — it never "closes." There is no terminal CLOSED/CANCELED status: a finished or canceled request simply leaves the conversation IDLE with its visit history intact.
- IDLE: AI-only, nothing in progress. Re-engageable — sending a message re-runs triage
- TRIAGING: AI is gathering symptom information on a live request
- PAYMENT_REQUIRED: Triage complete, awaiting payment confirmation (or dismissal)
- MATCHING: Being matched with a healthcare provider
- WITH_PROVIDER: A provider is connected (messaging is asynchronous)
- EMERGENCY: Urgent care advised — user should call 911 (not re-engageable)
IDLE, TRIAGING, PAYMENT_REQUIRED, MATCHING, WITH_PROVIDER, EMERGENCY ISO 3166-2 region this conversation is licensed for
Present when a provider is in seat
Show child attributes
Show child attributes
Prior provider visits on this conversation
Show child attributes
Show child attributes
Windowed to the newest messages by default to keep long threads manageable; omittedOlderMessages reports how many older messages exist beyond the window.
Show child attributes
Show child attributes
Present when the message window truncated older messages
Timestamp of the newest message
Timestamp of the last status or lifecycle change; messages do not move it
While TRIAGING, the shortlist of what triage would most like to learn next. Gather the answers and send them in one message. Withheld when the patient's own message is newest on the thread.
Show child attributes
Show child attributes
The AI message informationNeed was computed on
Payment gate information when triage is complete
Show child attributes
Show child attributes
Suggested actions based on current status
Was this page helpful?