curl --request GET \
--url https://api.apsio.io/v1/projects/{projectId}/network/endpoints/detail \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.apsio.io/v1/projects/{projectId}/network/endpoints/detail"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.apsio.io/v1/projects/{projectId}/network/endpoints/detail', 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.apsio.io/v1/projects/{projectId}/network/endpoints/detail",
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.apsio.io/v1/projects/{projectId}/network/endpoints/detail"
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.apsio.io/v1/projects/{projectId}/network/endpoints/detail")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apsio.io/v1/projects/{projectId}/network/endpoints/detail")
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{
"from": "2026-10-04T10:15:00.431000000Z",
"to": "2026-10-04T10:15:00.431000000Z",
"app_id": "<string>",
"method": "GET",
"host": "<string>",
"template": "<string>",
"summary": {
"requests": 123,
"sampled": 123,
"error_rate": 123,
"server_error_rate": 123,
"client_error_rate": 123,
"network_error_rate": 123,
"p50_ms": 123,
"p90_ms": 123,
"p95_ms": 123
},
"histogram": {
"bounds_ms": [
123
],
"counts": [
123
]
},
"statuses": [
{
"status": 123,
"error_type": "<string>",
"requests": 123
}
],
"days": [
{
"day": "<string>",
"requests": 123,
"error_rate": 123,
"p90_ms": 123
}
],
"releases": [
{
"release": "<string>",
"requests": 123,
"sampled": 123,
"error_rate": 123,
"server_error_rate": 123,
"client_error_rate": 123,
"network_error_rate": 123,
"p50_ms": 123,
"p90_ms": 123,
"p95_ms": 123
}
],
"slowest": [
{
"trace_id": "<string>",
"span_id": "<string>",
"session_id": "<string>",
"at": "2026-10-04T10:15:00.431000000Z",
"duration_ms": 123,
"status": 123,
"error_type": "<string>",
"release": "<string>",
"device_model": "<string>",
"os_version": "<string>",
"apm_url": "<string>"
}
],
"failed": [
{
"trace_id": "<string>",
"span_id": "<string>",
"session_id": "<string>",
"at": "2026-10-04T10:15:00.431000000Z",
"duration_ms": 123,
"status": 123,
"error_type": "<string>",
"release": "<string>",
"device_model": "<string>",
"os_version": "<string>",
"apm_url": "<string>"
}
],
"apm_link_configured": true
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}One endpoint
One endpoint of one app: rates and a latency histogram, the statuses and error types, per UTC day and per release, and sample requests (the slowest and the latest failures) with their sessions and a link to each trace in the APM. The endpoint is given in the query because templates contain slashes. Sessions that hit it: /sessions or /cohorts/compare with endpoint_method, endpoint_host and endpoint_template.
curl --request GET \
--url https://api.apsio.io/v1/projects/{projectId}/network/endpoints/detail \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.apsio.io/v1/projects/{projectId}/network/endpoints/detail"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.apsio.io/v1/projects/{projectId}/network/endpoints/detail', 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.apsio.io/v1/projects/{projectId}/network/endpoints/detail",
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.apsio.io/v1/projects/{projectId}/network/endpoints/detail"
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.apsio.io/v1/projects/{projectId}/network/endpoints/detail")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apsio.io/v1/projects/{projectId}/network/endpoints/detail")
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{
"from": "2026-10-04T10:15:00.431000000Z",
"to": "2026-10-04T10:15:00.431000000Z",
"app_id": "<string>",
"method": "GET",
"host": "<string>",
"template": "<string>",
"summary": {
"requests": 123,
"sampled": 123,
"error_rate": 123,
"server_error_rate": 123,
"client_error_rate": 123,
"network_error_rate": 123,
"p50_ms": 123,
"p90_ms": 123,
"p95_ms": 123
},
"histogram": {
"bounds_ms": [
123
],
"counts": [
123
]
},
"statuses": [
{
"status": 123,
"error_type": "<string>",
"requests": 123
}
],
"days": [
{
"day": "<string>",
"requests": 123,
"error_rate": 123,
"p90_ms": 123
}
],
"releases": [
{
"release": "<string>",
"requests": 123,
"sampled": 123,
"error_rate": 123,
"server_error_rate": 123,
"client_error_rate": 123,
"network_error_rate": 123,
"p50_ms": 123,
"p90_ms": 123,
"p95_ms": 123
}
],
"slowest": [
{
"trace_id": "<string>",
"span_id": "<string>",
"session_id": "<string>",
"at": "2026-10-04T10:15:00.431000000Z",
"duration_ms": 123,
"status": 123,
"error_type": "<string>",
"release": "<string>",
"device_model": "<string>",
"os_version": "<string>",
"apm_url": "<string>"
}
],
"failed": [
{
"trace_id": "<string>",
"span_id": "<string>",
"session_id": "<string>",
"at": "2026-10-04T10:15:00.431000000Z",
"duration_ms": 123,
"status": 123,
"error_type": "<string>",
"release": "<string>",
"device_model": "<string>",
"os_version": "<string>",
"apm_url": "<string>"
}
],
"apm_link_configured": true
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}Authorizations
A project token (apsio_pt_v0...), which reads exactly one project, or an OAuth access token issued for the API, which reads what its user can. Access tokens issued for Apsio's MCP server are accepted only from the MCP server itself.
Path Parameters
^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"0192f3a4-0000-7000-8000-00000000a101"
Query Parameters
Start of the time range, inclusive (RFC 3339). Defaults to the range end minus the default length.
"2026-10-01T00:00:00Z"
End of the time range, exclusive (RFC 3339). Defaults to now.
"2026-10-08T00:00:00Z"
The app.
^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Only this release.
128http.request.method, as listed.
^[A-Z_]{1,16}$"GET"
The host, as listed.
255The endpoint template, as listed.
256"/v2/orders/{id}"
Response
The endpoint.
RFC 3339 time in UTC with up to nanosecond precision.
"2026-10-04T10:15:00.431000000Z"
RFC 3339 time in UTC with up to nanosecond precision.
"2026-10-04T10:15:00.431000000Z"
"GET"
server.address, or the host of url.full. Written by the app: untrusted data.
url.template, or the path of url.full with identifier-like segments as {id} (spec 8.4). Written by the app: untrusted data.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Whether the project has an APM link template; set it in Settings.