curl --request GET \
--url https://api.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/', 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.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/",
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.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/"
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.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/")
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{
"count": 123,
"next": "http://api.example.org/accounts/?page=4",
"previous": "http://api.example.org/accounts/?page=2",
"results": [
{
"device_id": "4aa87fd1-e8ec-43d2-99c2-6019241307b1",
"device_name": "sta1-p-phy-gpu1001",
"device_serial_number": "ABC123",
"device_operational_status": "validation",
"latest_results": {
"single_node": {
"single-node.hpl-gpu": {
"id": "4f6b06e1-20e4-44d4-8b4d-a31d09f34cce",
"job": "5da30eb2-a71b-44a9-9323-2f41f8f6f7d3",
"job_name": "validation-batch-01",
"cohort_size": 1,
"test_slug": "single-node.hpl-gpu",
"stage": "single_node",
"slurm_job_id": 12345,
"status": "completed",
"evaluation": {
"passed": true,
"reason": null
},
"iteration_summary": {
"requested": 3,
"completed": 3,
"failed": 0,
"completed_iterations": [
1,
2,
3
]
},
"metrics": [
{
"name": "gflops",
"value": 290000,
"unit": "GFLOPS",
"detail": null,
"evaluation": {
"passed": true,
"threshold": 220000,
"comparator": "gte"
},
"statistics": {
"mean": {
"value": 290000,
"evaluation": {
"passed": true,
"threshold": 220000,
"comparator": "gte"
}
},
"min": {
"value": 289000,
"evaluation": null
},
"max": {
"value": 291000,
"evaluation": null
},
"median": {
"value": 290500,
"evaluation": null
},
"stdev": {
"value": 750,
"evaluation": null
}
}
}
],
"error_details": null,
"artifact_uri": "s3://fm-artifacts/sta1/jobs/5da30eb2/run-001/",
"started_at": "2026-02-15T09:02:00Z",
"completed_at": "2026-02-15T09:07:00Z"
}
},
"pairwise": {},
"collective": {}
},
"links": {
"self": "https://fm.example.com/api/v1/burn-in/sites/2aa87fd1-e8ec-43d2-99c2-6019241307a1/device-test-summaries/4aa87fd1-e8ec-43d2-99c2-6019241307b1/",
"device": "https://fm.example.com/api/v1/devices/4aa87fd1-e8ec-43d2-99c2-6019241307b1/",
"history": "https://fm.example.com/api/v1/burn-in/sites/2aa87fd1-e8ec-43d2-99c2-6019241307a1/device-test-summaries/4aa87fd1-e8ec-43d2-99c2-6019241307b1/?page=1"
}
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}List device test summaries
Site-scoped summary list and per-device history endpoints.
curl --request GET \
--url https://api.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/', 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.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/",
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.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/"
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.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/burn-in/sites/{site_id}/device-test-summaries/")
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{
"count": 123,
"next": "http://api.example.org/accounts/?page=4",
"previous": "http://api.example.org/accounts/?page=2",
"results": [
{
"device_id": "4aa87fd1-e8ec-43d2-99c2-6019241307b1",
"device_name": "sta1-p-phy-gpu1001",
"device_serial_number": "ABC123",
"device_operational_status": "validation",
"latest_results": {
"single_node": {
"single-node.hpl-gpu": {
"id": "4f6b06e1-20e4-44d4-8b4d-a31d09f34cce",
"job": "5da30eb2-a71b-44a9-9323-2f41f8f6f7d3",
"job_name": "validation-batch-01",
"cohort_size": 1,
"test_slug": "single-node.hpl-gpu",
"stage": "single_node",
"slurm_job_id": 12345,
"status": "completed",
"evaluation": {
"passed": true,
"reason": null
},
"iteration_summary": {
"requested": 3,
"completed": 3,
"failed": 0,
"completed_iterations": [
1,
2,
3
]
},
"metrics": [
{
"name": "gflops",
"value": 290000,
"unit": "GFLOPS",
"detail": null,
"evaluation": {
"passed": true,
"threshold": 220000,
"comparator": "gte"
},
"statistics": {
"mean": {
"value": 290000,
"evaluation": {
"passed": true,
"threshold": 220000,
"comparator": "gte"
}
},
"min": {
"value": 289000,
"evaluation": null
},
"max": {
"value": 291000,
"evaluation": null
},
"median": {
"value": 290500,
"evaluation": null
},
"stdev": {
"value": 750,
"evaluation": null
}
}
}
],
"error_details": null,
"artifact_uri": "s3://fm-artifacts/sta1/jobs/5da30eb2/run-001/",
"started_at": "2026-02-15T09:02:00Z",
"completed_at": "2026-02-15T09:07:00Z"
}
},
"pairwise": {},
"collective": {}
},
"links": {
"self": "https://fm.example.com/api/v1/burn-in/sites/2aa87fd1-e8ec-43d2-99c2-6019241307a1/device-test-summaries/4aa87fd1-e8ec-43d2-99c2-6019241307b1/",
"device": "https://fm.example.com/api/v1/devices/4aa87fd1-e8ec-43d2-99c2-6019241307b1/",
"history": "https://fm.example.com/api/v1/burn-in/sites/2aa87fd1-e8ec-43d2-99c2-6019241307a1/device-test-summaries/4aa87fd1-e8ec-43d2-99c2-6019241307b1/?page=1"
}
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
Site identifier.
Query Parameters
Filter results created on or after this timestamp (inclusive).
Filter results created before this timestamp (exclusive).
Filter devices by one or more device classes (comma-separated), resolved via the device's role.
gpu_compute- GPU Computecpu_hypervisor- CPU Hypervisorcpu_baremetal- CPU Baremetalswitch- Switch
gpu_compute, cpu_hypervisor, cpu_baremetal, switch Multiple values may be separated by commas.
Optionally scope summaries to a specific job.
Filter devices by their latest test result status.
completed, error, failed, passed Number of results to return per page.
1 <= x <= 500A page number within the paginated result set.
Filter devices by one or more rack UUIDs (comma-separated).
Filter results by test stage.
single_node- Single Nodepairwise- Pairwisecollective- Collective
single_node, pairwise, collective Filter devices by topology group membership, including descendants. Use topology_group_ids for multiple.
Filter devices by multiple topology group UUIDs (comma-separated), including descendants.