curl --request GET \
--url https://api.qa.tech/v1/runs/{runShortId}/exports/{exportId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qa.tech/v1/runs/{runShortId}/exports/{exportId}"
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/runs/{runShortId}/exports/{exportId}', 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/runs/{runShortId}/exports/{exportId}",
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/runs/{runShortId}/exports/{exportId}"
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/runs/{runShortId}/exports/{exportId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qa.tech/v1/runs/{runShortId}/exports/{exportId}")
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>",
"runShortId": "<string>",
"status": "pending",
"includeVideos": true,
"sizeBytes": 123,
"sha256": "<string>",
"fileCount": 123,
"error": "<string>",
"createdAt": "<string>",
"completedAt": "<string>",
"downloadUrl": "<string>",
"downloadUrlExpiresAt": "<string>"
}Get run export
Fetch a run export. Once status is completed the response carries a downloadUrl valid for one hour; fetch the export again for a fresh one.
curl --request GET \
--url https://api.qa.tech/v1/runs/{runShortId}/exports/{exportId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qa.tech/v1/runs/{runShortId}/exports/{exportId}"
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/runs/{runShortId}/exports/{exportId}', 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/runs/{runShortId}/exports/{exportId}",
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/runs/{runShortId}/exports/{exportId}"
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/runs/{runShortId}/exports/{exportId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qa.tech/v1/runs/{runShortId}/exports/{exportId}")
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>",
"runShortId": "<string>",
"status": "pending",
"includeVideos": true,
"sizeBytes": 123,
"sha256": "<string>",
"fileCount": 123,
"error": "<string>",
"createdAt": "<string>",
"completedAt": "<string>",
"downloadUrl": "<string>",
"downloadUrlExpiresAt": "<string>"
}Query Parameters
Query parameters for fetching a run export.
Show child attributes
Show child attributes
Response
The request has succeeded.
A test record export of a run: one zip with a README in a regulatory test record layout, every test step and recorded action with screenshots and recordings, the raw logs and a manifest with the SHA-256 of every file.
Export ID. Pass it to get_run_export to poll.
Short ID of the exported run.
pending and running while the archive is built; then completed or failed.
pending, running, completed, failed Whether session recordings are included.
Size of the zip in bytes, once completed.
SHA-256 of the zip (hex), once completed. Verify the download against it.
Number of files in the zip, once completed.
Why the export failed, when status is failed.
When the export was requested (ISO 8601).
When the export finished (ISO 8601).
Signed URL for the zip, valid for one hour. Minted on every request once completed; null otherwise.
When downloadUrl stops working (ISO 8601).
Was this page helpful?