GET
/api/v1/evals/runsList eval runs with filtering
Returns the 100 most recent eval runs for a single project, ordered created_at descending. ?projectId is required (400 without it) and caller membership of that project's org is verified before the handler runs. Each row carries id, name, model, status, score, duration, created_at and config. No status/model/scorer filters are supported. Powers the run-compare page.
Authentication
Send Authorization: Bearer YOUR_API_KEY on every request. Generate API keys at /dashboard/settings/api-keys.
Parameters
projectId in queryrequiredProject to list eval runs for. Caller must be a member of the project's org.
stringResponse
200 example
{
"success": true
}All status codes
200Success.
400Invalid params.
401Unauthorized — no valid credential was presented (AUTH_REQUIRED).
403Cross-tenant denial.
429Too Many Requests — the per-key or per-organization rate limit was exceeded. Honour the Retry-After header.
500Internal Server Error — DB_ERROR.
Code samples
cURL
curl -X GET \ https://evalguard.ai/api/v1/evals/runs \ -H "Authorization: Bearer $EVALGUARD_API_KEY"
TypeScript
// The TypeScript SDK (@evalguard/sdk) exposes TYPED methods — runEval,
// getEval, runSecurityScan, checkFirewall, … — not a generic request().
// For an arbitrary endpoint, call it directly:
const res = await fetch("https://evalguard.ai/api/v1/evals/runs", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.EVALGUARD_API_KEY}` },
});
console.log(res.status, await res.json());Python
# The Python SDK (pip install evalguardai) exposes TYPED methods on
# EvalGuardClient — run_eval, get_eval, … — not a generic request().
# For an arbitrary endpoint, call it directly:
import os
import requests
headers = {"Authorization": f"Bearer {os.environ['EVALGUARD_API_KEY']}"}
response = requests.request("GET", "https://evalguard.ai/api/v1/evals/runs", headers=headers)
print(response.status_code, response.json())Go
package main
import (
"context"
"fmt"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequestWithContext(context.Background(), "GET", "https://evalguard.ai/api/v1/evals/runs", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("EVALGUARD_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
fmt.Println(resp.Status)
}Errors
400401403429500