curl --request GET \
--url https://api.qa.tech/v1/chat/{chatConversationShortId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qa.tech/v1/chat/{chatConversationShortId}"
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/chat/{chatConversationShortId}', 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/chat/{chatConversationShortId}",
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/chat/{chatConversationShortId}"
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/chat/{chatConversationShortId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qa.tech/v1/chat/{chatConversationShortId}")
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{
"shortId": "<string>",
"url": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"status": "in_progress",
"runs": [
{
"shortId": "<string>",
"status": "<string>",
"result": "<string>",
"url": "<string>"
}
],
"title": "<string>",
"source": "api",
"messages": [
{
"id": "<string>",
"role": "user",
"createdAt": "2023-11-07T05:31:56Z",
"text": "<string>",
"status": "INITIATED",
"isStreaming": true
}
]
}Get chat conversation
Get conversation metadata, associated test runs, and recent messages (newest first).
Use limit to control how many messages are returned (default 20). Poll until
conversation status is completed, failed, or cancelled — not merely until the
latest assistant message is COMPLETED, because starting a test run ends that turn
while the run continues in the background. runs lists any test runs started from
this chat; pass shortId to get_run (with testCases: "all") for browser results.
curl --request GET \
--url https://api.qa.tech/v1/chat/{chatConversationShortId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qa.tech/v1/chat/{chatConversationShortId}"
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/chat/{chatConversationShortId}', 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/chat/{chatConversationShortId}",
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/chat/{chatConversationShortId}"
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/chat/{chatConversationShortId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qa.tech/v1/chat/{chatConversationShortId}")
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{
"shortId": "<string>",
"url": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"status": "in_progress",
"runs": [
{
"shortId": "<string>",
"status": "<string>",
"result": "<string>",
"url": "<string>"
}
],
"title": "<string>",
"source": "api",
"messages": [
{
"id": "<string>",
"role": "user",
"createdAt": "2023-11-07T05:31:56Z",
"text": "<string>",
"status": "INITIATED",
"isStreaming": true
}
]
}Path Parameters
^chat(-.+_.+|_.+)$Query Parameters
Show child attributes
Show child attributes
Response
The request has succeeded.
Conversation data with recent messages (newest first).
^chat(-.+_.+|_.+)$Dashboard URL for the conversation.
Overall conversation lifecycle. in_progress while the assistant is working or a background test run / research task is still going. Assistant message COMPLETED is not enough — starting a run ends the current turn. Poll until this is completed, failed, or cancelled.
in_progress, completed, failed, cancelled Test runs started from this conversation, newest first. Empty until a run is created. Use shortId with get_run (testCases = all) or nested test-case short IDs from that call with get_run_test_case.
Show child attributes
Show child attributes
Where the conversation originated. api for conversations created via this API, ui for the dashboard, github/gitlab for VCS-triggered chats, and system for everything else.
api, ui, github, gitlab, system Recent messages, newest first. Empty on creation; poll get_chat_conversation to retrieve. Internal wake messages are omitted.
Show child attributes
Show child attributes
Was this page helpful?