curl --request GET \
--url https://api.qa.tech/v1/run-test-case/{shortId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qa.tech/v1/run-test-case/{shortId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qa.tech/v1/run-test-case/{shortId}', 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.qa.tech/v1/run-test-case/{shortId}",
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.qa.tech/v1/run-test-case/{shortId}"
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.qa.tech/v1/run-test-case/{shortId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qa.tech/v1/run-test-case/{shortId}")
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{
"id": "<string>",
"shortId": "<string>",
"name": "<string>",
"status": "<string>",
"result": "<string>",
"resultTitle": "<string>",
"evaluationThought": "<string>",
"errorCode": "<string>",
"classification": "<string>",
"promptGoal": "<string>",
"promptExamples": "<string>",
"runShortId": "<string>",
"projectTestCaseId": "<string>",
"startedAt": "<string>",
"completedAt": "<string>",
"durationMs": 123,
"url": "<string>",
"screenshotUrl": "<string>",
"recordingUrl": "<string>",
"outboundIpAddress": "<string>",
"assessment": {
"shortDescription": "<string>",
"confidence": 123,
"expectedBehavior": "<string>",
"actualBehavior": "<string>",
"notesAndHypotheses": "<string>",
"keyObservations": [
{
"stepIndex": 123,
"observation": "<string>"
}
],
"issues": [
{
"severity": "<string>",
"title": "<string>",
"description": "<string>",
"category": "<string>"
}
]
}
}Get run test case
Fetches a single run test case (one test’s execution within a run) by its short ID — the <shortId> in a /results/test/<shortId> URL. Returns the goal and success criteria, the result and error classification, the evaluator’s full assessment (verdict summary, expected vs actual behavior, root-cause hypotheses, step-anchored key observations and raised issues), durations, and a deep link plus best-effort media URLs. Use get_run_test_case_screenshots to see the steps the assessment cites, get_run_test_case_logs for network/console evidence, get_run_test_case_trace for the step-by-step action trace, and get_test_case_history for the pass/fail trend.
curl --request GET \
--url https://api.qa.tech/v1/run-test-case/{shortId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qa.tech/v1/run-test-case/{shortId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qa.tech/v1/run-test-case/{shortId}', 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.qa.tech/v1/run-test-case/{shortId}",
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.qa.tech/v1/run-test-case/{shortId}"
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.qa.tech/v1/run-test-case/{shortId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qa.tech/v1/run-test-case/{shortId}")
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{
"id": "<string>",
"shortId": "<string>",
"name": "<string>",
"status": "<string>",
"result": "<string>",
"resultTitle": "<string>",
"evaluationThought": "<string>",
"errorCode": "<string>",
"classification": "<string>",
"promptGoal": "<string>",
"promptExamples": "<string>",
"runShortId": "<string>",
"projectTestCaseId": "<string>",
"startedAt": "<string>",
"completedAt": "<string>",
"durationMs": 123,
"url": "<string>",
"screenshotUrl": "<string>",
"recordingUrl": "<string>",
"outboundIpAddress": "<string>",
"assessment": {
"shortDescription": "<string>",
"confidence": 123,
"expectedBehavior": "<string>",
"actualBehavior": "<string>",
"notesAndHypotheses": "<string>",
"keyObservations": [
{
"stepIndex": 123,
"observation": "<string>"
}
],
"issues": [
{
"severity": "<string>",
"title": "<string>",
"description": "<string>",
"category": "<string>"
}
]
}
}Path Parameters
Query Parameters
Show child attributes
Show child attributes
Response
The request has succeeded.
Detailed view of a single run test case (one test's execution within a run), for root-cause investigation. Resolve the <shortId> from a /results/test/<shortId> URL.
Run lifecycle status: INITIATED, RUNNING, COMPLETED, ERROR, or CANCELLED.
Outcome once complete: PASSED, FAILED, or SKIPPED. null while still running.
Short human-readable summary of the result.
The evaluator's reasoning for the pass/fail verdict.
Error classification when the test did not cleanly pass/fail, e.g. TEST_FAILED (real product failure) vs an AGENT_/PLATFORM_ execution miss. null for a clean pass.
POSITIVE (expected to succeed) or NEGATIVE (expected to fail).
The test's goal / instructions.
The success criteria / examples the evaluator checks against.
Short ID of the run this test case belongs to. Use with get_run.
Stable project test case ID. Use with get_test_case_history to see the pass/fail trend.
Wall-clock duration in milliseconds, when both timestamps are present.
Deep link to the recording and trace in the QA.tech UI. Always works; the media URLs below may be time-limited.
Best-effort link to the final screenshot. May be a time-limited URL; use url for a durable view.
Best-effort link to the session video recording, if captured. May be a time-limited URL; use url for a durable view.
Public egress IP address seen by the application under test. null if not yet resolved or unavailable.
The evaluator's full assessment report. null when the test has not been assessed yet.
Show child attributes
Show child attributes
Was this page helpful?