curl --request GET \
--url https://tester.army/api/v1/runs/{id}/telemetry \
--header 'Authorization: Bearer <token>'import requests
url = "https://tester.army/api/v1/runs/{id}/telemetry"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://tester.army/api/v1/runs/{id}/telemetry', 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://tester.army/api/v1/runs/{id}/telemetry",
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://tester.army/api/v1/runs/{id}/telemetry"
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://tester.army/api/v1/runs/{id}/telemetry")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tester.army/api/v1/runs/{id}/telemetry")
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{
"version": 1,
"console": [
{
"seq": 123,
"ts": "<string>",
"type": "console_log",
"level": "<string>",
"text": "<string>",
"args": [
"<string>"
],
"url": "<string>",
"sourceUrl": "<string>",
"line": 123,
"column": 123,
"stack": "<string>"
}
],
"network": [
{
"seq": 123,
"ts": "<string>",
"requestId": "<string>",
"url": "<string>",
"method": "<string>",
"resourceType": "<string>",
"status": 123,
"statusText": "<string>",
"mimeType": "<string>",
"durationMs": 123,
"requestHeaders": {},
"responseHeaders": {},
"requestBody": "<string>",
"responseBody": "<string>",
"failure": {
"errorText": "<string>",
"canceled": true
}
}
],
"counts": {
"console": 123,
"network": 123,
"droppedConsole": 123,
"droppedNetwork": 123
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Get run console and network logs
Retrieve console logs and network requests captured during a run. Use this to debug failures: console errors, failed requests, and 4xx/5xx responses with redacted header and JSON body previews. Web runs capture browser console and network activity; mobile runs of an uploaded app capture the app’s logs (Android logcat, iOS stdout/stderr) as console entries with no network entries. Telemetry becomes available after the run finishes; runs with nothing captured return 404.
curl --request GET \
--url https://tester.army/api/v1/runs/{id}/telemetry \
--header 'Authorization: Bearer <token>'import requests
url = "https://tester.army/api/v1/runs/{id}/telemetry"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://tester.army/api/v1/runs/{id}/telemetry', 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://tester.army/api/v1/runs/{id}/telemetry",
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://tester.army/api/v1/runs/{id}/telemetry"
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://tester.army/api/v1/runs/{id}/telemetry")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tester.army/api/v1/runs/{id}/telemetry")
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{
"version": 1,
"console": [
{
"seq": 123,
"ts": "<string>",
"type": "console_log",
"level": "<string>",
"text": "<string>",
"args": [
"<string>"
],
"url": "<string>",
"sourceUrl": "<string>",
"line": 123,
"column": 123,
"stack": "<string>"
}
],
"network": [
{
"seq": 123,
"ts": "<string>",
"requestId": "<string>",
"url": "<string>",
"method": "<string>",
"resourceType": "<string>",
"status": 123,
"statusText": "<string>",
"mimeType": "<string>",
"durationMs": 123,
"requestHeaders": {},
"responseHeaders": {},
"requestBody": "<string>",
"responseBody": "<string>",
"failure": {
"errorText": "<string>",
"canceled": true
}
}
],
"counts": {
"console": 123,
"network": 123,
"droppedConsole": 123,
"droppedNetwork": 123
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
API key authentication using Bearer token format. The CLI's ta auth access tokens are also accepted; because they name a user rather than a workspace, a user in several workspaces selects one with the x-testerarmy-team header (workspace id or slug).
Path Parameters
Test run ID
Response
Console and network telemetry
Telemetry payload schema version
1 Browser console entries (web) or app log lines (mobile) in capture order
Show child attributes
Show child attributes
Network requests in capture order (document, fetch, and XHR prioritized)
Show child attributes
Show child attributes
Capture counts including entries dropped by ring-buffer limits
Show child attributes
Show child attributes