Skip to content
GET/api/v1/evals/runs

List 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 queryrequired

Project to list eval runs for. Caller must be a member of the project's org.

string

Response

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

Other Evals endpoints