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>"
}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 evaluator’s reasoning, the result and error classification, durations, and a deep link plus best-effort media URLs. Use 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>"
}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.
Was this page helpful?