유닛 테스트
유닛 테스트 실행 목록 조회
워크스페이스의 유닛 테스트 실행을 목록으로 돌려줍니다. 필터는 모두 만족해야 하고, 같은 필터를 반복하면 그중 하나와 맞는 실행을 돌려줍니다. 대화와 채점 내용은 실행 조회로 확인합니다.
GET
/
evals
/
unit
/
runs
유닛 테스트 실행 목록 조회
curl --request GET \
--url https://client-api.tryvox.co/v3/evals/unit/runs \
--header 'Authorization: Bearer <token>'import requests
url = "https://client-api.tryvox.co/v3/evals/unit/runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://client-api.tryvox.co/v3/evals/unit/runs', 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://client-api.tryvox.co/v3/evals/unit/runs",
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://client-api.tryvox.co/v3/evals/unit/runs"
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://client-api.tryvox.co/v3/evals/unit/runs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.tryvox.co/v3/evals/unit/runs")
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{
"items": [
{
"id": "6a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"test_id": "0f9c2b1e-3d4a-4b5c-8d6e-7f8091a2b3c4",
"batch_id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"status": "completed",
"result": "passed",
"agent": {
"agent_id": "8b7a6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
"agent_version": "v3"
},
"created_at": 1761960000000,
"started_at": 1761960002000,
"finished_at": 1761960015000
}
],
"next_cursor": null,
"total_count": 1
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed.",
"details": {
"field": "name",
"reason": "must not be blank"
}
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"details": {}
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Permission denied.",
"details": {}
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found.",
"details": {
"resource": "agent"
}
}
}{
"error": {
"code": "CONFLICT",
"message": "The requested operation conflicts with current state.",
"details": {
"current_status": "draft"
}
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests.",
"details": {
"limit": 10,
"window_seconds": 1,
"scope": "user"
}
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error.",
"details": {}
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service temporarily unavailable.",
"details": {}
}
}Authorizations
워크스페이스 API 키를 Authorization: Bearer <token> 형식으로 보냅니다.
Query Parameters
배치 id 필터입니다. GET /v3/evals/unit/batches 응답의 id를 사용합니다.
유닛 테스트 id 필터입니다. GET /v3/evals/unit 응답의 id를 사용합니다.
상태 필터입니다. 여러 상태를 지원하는 endpoint에서는 query parameter를 반복해서 전달합니다.
Available options:
queued, running, completed, error 채점 결과 필터입니다. 여러 값을 보내려면 result를 반복합니다.
Available options:
passed, failed, error 정렬 방향입니다. 허용값은 asc, desc입니다.
Available options:
asc, desc 이전 응답의 next_cursor 값입니다. 다음 페이지를 조회할 때 그대로 전달합니다.
반환할 최대 항목 수입니다. v3 목록 endpoint는 1~100을 허용합니다.
Required range:
1 <= x <= 100Was this page helpful?
⌘I
유닛 테스트 실행 목록 조회
curl --request GET \
--url https://client-api.tryvox.co/v3/evals/unit/runs \
--header 'Authorization: Bearer <token>'import requests
url = "https://client-api.tryvox.co/v3/evals/unit/runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://client-api.tryvox.co/v3/evals/unit/runs', 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://client-api.tryvox.co/v3/evals/unit/runs",
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://client-api.tryvox.co/v3/evals/unit/runs"
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://client-api.tryvox.co/v3/evals/unit/runs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.tryvox.co/v3/evals/unit/runs")
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{
"items": [
{
"id": "6a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"test_id": "0f9c2b1e-3d4a-4b5c-8d6e-7f8091a2b3c4",
"batch_id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"status": "completed",
"result": "passed",
"agent": {
"agent_id": "8b7a6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
"agent_version": "v3"
},
"created_at": 1761960000000,
"started_at": 1761960002000,
"finished_at": 1761960015000
}
],
"next_cursor": null,
"total_count": 1
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed.",
"details": {
"field": "name",
"reason": "must not be blank"
}
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"details": {}
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Permission denied.",
"details": {}
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found.",
"details": {
"resource": "agent"
}
}
}{
"error": {
"code": "CONFLICT",
"message": "The requested operation conflicts with current state.",
"details": {
"current_status": "draft"
}
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests.",
"details": {
"limit": 10,
"window_seconds": 1,
"scope": "user"
}
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error.",
"details": {}
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service temporarily unavailable.",
"details": {}
}
}