curl -X GET "https://app.cotool.ai/api/agent-runs" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"import requests
url = "https://app.cotool.ai/api/agent-runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.cotool.ai/api/agent-runs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.get("https://app.cotool.ai/api/agent-runs")
.header("Authorization", "Bearer <token>")
.asString();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.cotool.ai/api/agent-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))
}{
"runs": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentName": "<string>",
"agentType": "response",
"runTitle": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"modelAlias": "<string>",
"toolNames": [
"<string>"
],
"totalToolCount": 123,
"hasError": true,
"isStreaming": true,
"modelName": "<string>",
"triggerSource": "<string>",
"triggerName": "<string>",
"status": "queued",
"evalScore": 123,
"evalExplanation": "<string>",
"evalBulletSummary": [
"<string>"
],
"criticalIssue": {
"category": "authentication",
"explanation": "<string>"
},
"acceptanceCriteriaResults": [
{
"criterion": "<string>",
"met": true,
"explanation": "<string>"
}
],
"linkedAlert": {
"displayId": "<string>",
"title": "<string>",
"status": "open"
},
"parentRun": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentName": "<string>",
"agentType": "response",
"runTitle": "<string>"
},
"deliveries": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"purpose": "response",
"destinationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"destinationType": "webhook",
"destinationName": "<string>",
"status": "pending",
"partial": true,
"updatedAt": "<string>"
}
]
}
],
"totalCount": 123
}{
"error": "<string>",
"issues": [
{}
]
}{
"error": "<string>"
}{
"error": "<string>",
"missingPerms": [
"<string>"
]
}{
"error": "<string>"
}List agent runs
Retrieve a paginated list of historical agent execution runs with optional filters.
curl -X GET "https://app.cotool.ai/api/agent-runs" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"import requests
url = "https://app.cotool.ai/api/agent-runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.cotool.ai/api/agent-runs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.get("https://app.cotool.ai/api/agent-runs")
.header("Authorization", "Bearer <token>")
.asString();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.cotool.ai/api/agent-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))
}{
"runs": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentName": "<string>",
"agentType": "response",
"runTitle": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"modelAlias": "<string>",
"toolNames": [
"<string>"
],
"totalToolCount": 123,
"hasError": true,
"isStreaming": true,
"modelName": "<string>",
"triggerSource": "<string>",
"triggerName": "<string>",
"status": "queued",
"evalScore": 123,
"evalExplanation": "<string>",
"evalBulletSummary": [
"<string>"
],
"criticalIssue": {
"category": "authentication",
"explanation": "<string>"
},
"acceptanceCriteriaResults": [
{
"criterion": "<string>",
"met": true,
"explanation": "<string>"
}
],
"linkedAlert": {
"displayId": "<string>",
"title": "<string>",
"status": "open"
},
"parentRun": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentName": "<string>",
"agentType": "response",
"runTitle": "<string>"
},
"deliveries": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"purpose": "response",
"destinationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"destinationType": "webhook",
"destinationName": "<string>",
"status": "pending",
"partial": true,
"updatedAt": "<string>"
}
]
}
],
"totalCount": 123
}{
"error": "<string>",
"issues": [
{}
]
}{
"error": "<string>"
}{
"error": "<string>",
"missingPerms": [
"<string>"
]
}{
"error": "<string>"
}Authorizations
API Key authentication for programmatic access. Include your API key in the Authorization header as: Bearer your_api_key_here
Query Parameters
Page number for pagination (0-based, default: 0)
x >= 0Number of runs per page (1-100, default: 50)
1 <= x <= 100Field to sort by (default: createdAt)
createdAt, updatedAt, agentName, modelAlias, evalScore Sort direction (default: desc)
asc, desc Optional filter by exact agent id
Optional filter by agent name (partial match)
Optional search across execution ID, run/alert title, and agent name (partial match)
Optional comma-separated list of tool names to filter by
Optional start date filter (ISO string)
Optional end date filter (ISO string)
Optional comma-separated list of trigger source values (manual, jira, slack, etc.)
Optional JSON array of { op: gt|lt|eq|ge|le, value: number } for eval score filtering (applied as OR)
When true, only return noteworthy runs: those with critical issues, failed acceptance criteria, or high/critical severity detection hits
When true, only return runs with critical issues or failed acceptance criteria
When false, skip the exact pagination count and return zero for totalCount
Was this page helpful?