List messages
curl --request GET \
--url https://api.phylo.bio/api/v1/messages \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.phylo.bio/api/v1/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.phylo.bio/api/v1/messages', 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.phylo.bio/api/v1/messages",
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.phylo.bio/api/v1/messages"
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.phylo.bio/api/v1/messages")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phylo.bio/api/v1/messages")
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{
"object": "list",
"data": [
{
"id": "msg_a4f9b5cc30d8",
"object": "message",
"task_id": "sess_d9711ec9b477",
"created": 1779132780,
"role": "user",
"content": [
{
"type": "text",
"text": "I'm a clinical genomics analyst working up Patient001. There are 3 BRCA1 pathogenic-flagged variants in the attached VCF. For each variant: describe ClinVar significance, flag PARP inhibitor eligibility, note any conflicts in the literature. Cite ClinVar VCV/RCV IDs and PMIDs."
}
],
"metadata": {},
"platform": "api"
},
{
"id": "msg_1a0ef0fa8e26",
"object": "message",
"task_id": "sess_d9711ec9b477",
"created": 1779132785,
"role": "assistant",
"status": "completed",
"completed_at": 1779133414,
"content": [
{
"type": "text",
"text": "Loaded the genetic-variant-annotation skill. For these 3 BRCA1 variants I'll (1) query ClinVar's REST API directly for each rsID to get current assertions, review status, star ratings, and conditions, and (2) cross-reference NCBI's ClinVar records for conflicting submissions and literature PMIDs."
},
{
"type": "tool_use",
"id": "toolu_01RkjLRcNtbVHBBwWDDk7gmF",
"name": "Skill",
"input": {
"action": "load",
"name": "genetic-variant-annotation"
}
},
{
"type": "tool_result",
"tool_use_id": "toolu_01RkjLRcNtbVHBBwWDDk7gmF",
"content": "# Skill: genetic-variant-annotation\n\n**Category**: genomics_genetics\n\n**Description**: Annotate genomic variants in VCF files with functional effects, clinical significance, and pathogenicity predictions. … (truncated)"
},
{
"type": "text",
"text": "Here is the full structured report. Two deliverables are saved: `report_Patient001_BRCA1_variants.md` and `Patient001_BRCA1_variant_report.json`. All three variants are confirmed pathogenic by ClinVar (3-star review); PARP inhibitor eligibility applies for HBOC and ovarian indications. … (truncated; real response has 61 content blocks)"
}
],
"metadata": {},
"platform": "api",
"input": {
"user_message_id": "msg_a4f9b5cc30d8",
"file_ids": []
}
}
],
"has_more": false,
"total": 2
}Messages
List messages
See the full back-and-forth of a Task — everything you asked and everything the agent replied, in order.
GET
/
messages
List messages
curl --request GET \
--url https://api.phylo.bio/api/v1/messages \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.phylo.bio/api/v1/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.phylo.bio/api/v1/messages', 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.phylo.bio/api/v1/messages",
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.phylo.bio/api/v1/messages"
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.phylo.bio/api/v1/messages")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phylo.bio/api/v1/messages")
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{
"object": "list",
"data": [
{
"id": "msg_a4f9b5cc30d8",
"object": "message",
"task_id": "sess_d9711ec9b477",
"created": 1779132780,
"role": "user",
"content": [
{
"type": "text",
"text": "I'm a clinical genomics analyst working up Patient001. There are 3 BRCA1 pathogenic-flagged variants in the attached VCF. For each variant: describe ClinVar significance, flag PARP inhibitor eligibility, note any conflicts in the literature. Cite ClinVar VCV/RCV IDs and PMIDs."
}
],
"metadata": {},
"platform": "api"
},
{
"id": "msg_1a0ef0fa8e26",
"object": "message",
"task_id": "sess_d9711ec9b477",
"created": 1779132785,
"role": "assistant",
"status": "completed",
"completed_at": 1779133414,
"content": [
{
"type": "text",
"text": "Loaded the genetic-variant-annotation skill. For these 3 BRCA1 variants I'll (1) query ClinVar's REST API directly for each rsID to get current assertions, review status, star ratings, and conditions, and (2) cross-reference NCBI's ClinVar records for conflicting submissions and literature PMIDs."
},
{
"type": "tool_use",
"id": "toolu_01RkjLRcNtbVHBBwWDDk7gmF",
"name": "Skill",
"input": {
"action": "load",
"name": "genetic-variant-annotation"
}
},
{
"type": "tool_result",
"tool_use_id": "toolu_01RkjLRcNtbVHBBwWDDk7gmF",
"content": "# Skill: genetic-variant-annotation\n\n**Category**: genomics_genetics\n\n**Description**: Annotate genomic variants in VCF files with functional effects, clinical significance, and pathogenicity predictions. … (truncated)"
},
{
"type": "text",
"text": "Here is the full structured report. Two deliverables are saved: `report_Patient001_BRCA1_variants.md` and `Patient001_BRCA1_variant_report.json`. All three variants are confirmed pathogenic by ClinVar (3-star review); PARP inhibitor eligibility applies for HBOC and ovarian indications. … (truncated; real response has 61 content blocks)"
}
],
"metadata": {},
"platform": "api",
"input": {
"user_message_id": "msg_a4f9b5cc30d8",
"file_ids": []
}
}
],
"has_more": false,
"total": 2
}Your messages come back as
role: "user" and the agent’s as role: "assistant".
Each agent reply is a single message whose content[] holds the whole reply
(text, tool calls, results); a reply still in progress shows status: "streaming"
with the content so far.
Paging. limit (default 200, max 500) caps how much underlying detail is
pulled — one agent reply is assembled from many small rows, so you get back far
fewer messages than limit. When has_more is true, older detail was
omitted: request the same limit with offset set to the returned next_offset
to walk back through the history.Authorizations
Requires an API key. See the Authentication guide.
Query Parameters
Required range:
1 <= x <= 500Required range:
x >= 0⌘I
