curl --request GET \
--url https://api.enkryptai.com/rt/runs/{run_id}/records \
--header 'apikey: <api-key>'import requests
url = "https://api.enkryptai.com/rt/runs/{run_id}/records"
headers = {"apikey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {apikey: '<api-key>'}};
fetch('https://api.enkryptai.com/rt/runs/{run_id}/records', 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.enkryptai.com/rt/runs/{run_id}/records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"apikey: <api-key>"
],
]);
$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.enkryptai.com/rt/runs/{run_id}/records"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("apikey", "<api-key>")
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.enkryptai.com/rt/runs/{run_id}/records")
.header("apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enkryptai.com/rt/runs/{run_id}/records")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["apikey"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"run_id": "<string>",
"status": "<string>",
"records": [
{
"query": "<string>",
"response": "<string>",
"test_type": "<string>",
"category": "<string>",
"sub_category": "<string>",
"goal": "<string>",
"success": true,
"response_classification": "<string>",
"reasoning": "<string>",
"confidence": 123,
"blob_url": "<string>",
"tags": {}
}
],
"completed_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get Run Records
Return the rows produced/judged on a run.
Payload-md shape: { run_id, status, completed_at, records: [...] }.
Each row carries query/response (from prompt_preview/response_preview),
verdict columns, blob_url, and the caller-supplied tags. Test_type and
goal are recovered from the tags map (set by the eval resolver path).
One run, two status vocabularies. GET /rt/runs/{run_id} reports the run record’s status, which is lowercase (queued, running, paused, completed, failed, cancelled). GET /rt/runs/{run_id}/results and GET /rt/runs/{run_id}/records report the red-team stage’s status, which is capitalised (Queued, Running, Finished, Failed). One finished run therefore answers “completed” on the first and “Finished” on the other two. They are different pieces of state that share a field name, and are deliberately not reconciled - match against the vocabulary of the endpoint you called. status in this payload is the capitalised form, so a finished run reads Finished.
This serves red-team runs as well as evals. On a red-team run each record carries query, response, test_type, category, sub_category, success, response_classification and reasoning.
Use this path as written. The records_url field on the results payload is emitted with the internal /v1/... spelling and returns 400 if followed verbatim - /rt/runs/{run_id}/records is the published address for the same resource.
curl --request GET \
--url https://api.enkryptai.com/rt/runs/{run_id}/records \
--header 'apikey: <api-key>'import requests
url = "https://api.enkryptai.com/rt/runs/{run_id}/records"
headers = {"apikey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {apikey: '<api-key>'}};
fetch('https://api.enkryptai.com/rt/runs/{run_id}/records', 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.enkryptai.com/rt/runs/{run_id}/records",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"apikey: <api-key>"
],
]);
$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.enkryptai.com/rt/runs/{run_id}/records"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("apikey", "<api-key>")
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.enkryptai.com/rt/runs/{run_id}/records")
.header("apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enkryptai.com/rt/runs/{run_id}/records")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["apikey"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"run_id": "<string>",
"status": "<string>",
"records": [
{
"query": "<string>",
"response": "<string>",
"test_type": "<string>",
"category": "<string>",
"sub_category": "<string>",
"goal": "<string>",
"success": true,
"response_classification": "<string>",
"reasoning": "<string>",
"confidence": 123,
"blob_url": "<string>",
"tags": {}
}
],
"completed_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}
