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": {}
}
],
"total": 123,
"limit": 123,
"offset": 123,
"completed_at": "2023-11-07T05:31:56Z",
"next_offset": 123
}{
"detail": "<string>"
}{
"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.
Paged. Each call returns at most limit records (1-1000, default 1000) starting at offset (default 0), ordered by creation time. total is the run’s full record count and next_offset is the offset to request next, or null on the last page - keep requesting with offset=next_offset until it is null to read every record. A limit or offset that is not a valid integer in range returns 400.
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": {}
}
],
"total": 123,
"limit": 123,
"offset": 123,
"completed_at": "2023-11-07T05:31:56Z",
"next_offset": 123
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Path Parameters
Query Parameters
Maximum records to return, 1-1000.
1 <= x <= 1000Number of records to skip. Use the previous page's next_offset.
x >= 0Response
Successful Response
Show child attributes
Show child attributes
Total records in the run, across all pages.
The page size applied to this response.
The offset this page starts at.
The offset for the next page, or null on the last page.

