Get execution history for a test case by title
curl --request GET \
--url https://api.testdino.com/api/v1/public/{projectId}/test-cases/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.testdino.com/api/v1/public/{projectId}/test-cases/history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.testdino.com/api/v1/public/{projectId}/test-cases/history', 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.testdino.com/api/v1/public/{projectId}/test-cases/history",
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.testdino.com/api/v1/public/{projectId}/test-cases/history"
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.testdino.com/api/v1/public/{projectId}/test-cases/history")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.testdino.com/api/v1/public/{projectId}/test-cases/history")
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{
"success": true,
"data": {
"testCase": {
"title": "<string>",
"fullTitle": "<string>",
"specName": "<string>"
},
"summary": {
"executions": 123,
"passedRuns": 123,
"failedRuns": 123,
"flakyRuns": 123,
"skippedRuns": 123,
"successRate": 123,
"failureRate": 123,
"flakyRate": 123,
"avgDuration": 123,
"minDuration": 123,
"maxDuration": 123,
"platforms": [
"<string>"
]
},
"history": [
{
"testRunId": "<string>",
"testCaseId": "<string>",
"counter": 123,
"branch": "<string>",
"platform": "<string>",
"duration": 123,
"retries": 123,
"timestamp": "2023-11-07T05:31:56Z",
"attemptsCount": 123
}
],
"uniqueErrors": [
{}
],
"platformMetrics": [
{
"platform": "<string>",
"executions": 123,
"failureCount": 123,
"failureRate": 123,
"flakyCount": 123,
"flakyRate": 123,
"avgDuration": 123
}
],
"environmentMetrics": [
{
"environment": "<string>",
"executions": 123,
"failureRate": 123,
"flakyRate": 123,
"avgDuration": 123
}
]
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or unknown user PAT"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}Get test case history
Execution history for a test case looked up by title.
GET
/
{projectId}
/
test-cases
/
history
Get execution history for a test case by title
curl --request GET \
--url https://api.testdino.com/api/v1/public/{projectId}/test-cases/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.testdino.com/api/v1/public/{projectId}/test-cases/history"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.testdino.com/api/v1/public/{projectId}/test-cases/history', 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.testdino.com/api/v1/public/{projectId}/test-cases/history",
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.testdino.com/api/v1/public/{projectId}/test-cases/history"
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.testdino.com/api/v1/public/{projectId}/test-cases/history")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.testdino.com/api/v1/public/{projectId}/test-cases/history")
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{
"success": true,
"data": {
"testCase": {
"title": "<string>",
"fullTitle": "<string>",
"specName": "<string>"
},
"summary": {
"executions": 123,
"passedRuns": 123,
"failedRuns": 123,
"flakyRuns": 123,
"skippedRuns": 123,
"successRate": 123,
"failureRate": 123,
"flakyRate": 123,
"avgDuration": 123,
"minDuration": 123,
"maxDuration": 123,
"platforms": [
"<string>"
]
},
"history": [
{
"testRunId": "<string>",
"testCaseId": "<string>",
"counter": 123,
"branch": "<string>",
"platform": "<string>",
"duration": 123,
"retries": 123,
"timestamp": "2023-11-07T05:31:56Z",
"attemptsCount": 123
}
],
"uniqueErrors": [
{}
],
"platformMetrics": [
{
"platform": "<string>",
"executions": 123,
"failureCount": 123,
"failureRate": 123,
"flakyCount": 123,
"flakyRate": 123,
"avgDuration": 123
}
],
"environmentMetrics": [
{
"environment": "<string>",
"executions": 123,
"failureRate": 123,
"flakyRate": 123,
"avgDuration": 123
}
]
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or unknown user PAT"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
User PAT (td_pat_) scoped to the target project
Path Parameters
The project identifier (e.g. project_abc123). Must match the project associated with your PAT.
Query Parameters
The test case title as shown in the UI (e.g. should display login form). URL-encode if it contains special characters. If multiple tests share the same title, the most recently executed one is used — inspect data.testCase.fullTitle in the response to see which was resolved.
Number of history entries to return (1–100, default 20). Upstream fetch limit may snap to 50, 100, 200, or 500 before client-side pagination.
Required range:
1 <= x <= 100Number of entries to skip (for pagination). Default 0.
Required range:
x >= 0Was this page helpful?
⌘I