curl --request GET \
--url https://tester.army/api/v1/projects/{projectId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://tester.army/api/v1/projects/{projectId}"
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/projects/{projectId}', 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/projects/{projectId}",
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/projects/{projectId}"
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/projects/{projectId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tester.army/api/v1/projects/{projectId}")
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": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"shortId": "<string>",
"name": "<string>",
"url": "<string>",
"projectType": "web",
"description": "<string>",
"environments": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"slug": "<string>",
"kind": "production",
"url": "<string>"
}
],
"browserRegion": "us",
"prTestingEnabled": true,
"prTestingInstructions": "<string>",
"agentInstructions": "<string>",
"prTestingDebounceMinutes": 30,
"prTestingBlockMerge": true,
"includeExampleMobileApp": true,
"autoDeleteOldestMobileApp": true,
"accessibilityAuditEnabled": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"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 a project
Get a single project by ID or shortId.
curl --request GET \
--url https://tester.army/api/v1/projects/{projectId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://tester.army/api/v1/projects/{projectId}"
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/projects/{projectId}', 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/projects/{projectId}",
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/projects/{projectId}"
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/projects/{projectId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tester.army/api/v1/projects/{projectId}")
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": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"shortId": "<string>",
"name": "<string>",
"url": "<string>",
"projectType": "web",
"description": "<string>",
"environments": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"slug": "<string>",
"kind": "production",
"url": "<string>"
}
],
"browserRegion": "us",
"prTestingEnabled": true,
"prTestingInstructions": "<string>",
"agentInstructions": "<string>",
"prTestingDebounceMinutes": 30,
"prTestingBlockMerge": true,
"includeExampleMobileApp": true,
"autoDeleteOldestMobileApp": true,
"accessibilityAuditEnabled": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"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
Project ID or shortId
Response
Project details
web, mobile Show child attributes
Show child attributes
Default exit region for web runs. null uses the default, us (static IPs). us-dynamic exits from a US IP that usually changes between runs. Web projects only.
us, us-dynamic, eu, pl, null Test PR deployments automatically.
Free-form instructions for the PR exploration agent.
2000Free-form instructions injected into the QA agent's system prompt on every run of this project.
4000Quiet period before a PR deployment is tested. 0 disables debouncing.
0 <= x <= 60Conclude the GitHub check run as failed when tests fail, so a required TesterArmy check blocks the merge. Off by default.
Offer the example app as a run target. Mobile projects only.
Delete the oldest unused app builds when an upload exceeds the storage quota. Mobile projects only.
Scan visited pages with axe-core during web runs and report critical accessibility violations as non-blocking warnings. On by default. Web projects only.