https://app.evoriqa.com/api/v1/chatbots/{chatbotId}/action-runsList agent action runs
Returns the chatbot's recent agent action runs — the same audit records the dashboard's **Recent runs** panel shows — newest first, page-numbered at 50 per page. Each row carries the action type, the outcome (`success` or `error`), the provider's error message on a failure, the round-trip latency, the conversation it ran in, and the `input` the agent passed to the tool. Narrow the log with `q`, `actionType`, `status`, and `conversationId`. **Retention.** Action runs are deleted **90 days** after they are recorded; a workspace whose own data-retention window is shorter loses them sooner. Pull anything you need to keep before it ages out.
Requires scope chatbots:read
Access is gated — enable it before your first call
The API is off by default. A request succeeds only when all three switches are on: the platform master switch (off by default), your organisation’s API toggle, and your plan or client entitlement. Any one off returns 403 API access is not enabled for this workspace.
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
| chatbotId | path | string uuid | Required | — | The chatbot's id. |
| page | query | integer ≥ 1 | Optional | 1 | 1-based page number; 50 runs per page. Defaults to 1. Never a 422: a value below 1 or non-numeric becomes 1, and a very large page number is capped (a page past the end returns an empty list). |
| q | query | string up to 200 chars | Optional | — | Free-text search. Matches a case-insensitive substring of the run's errorMessage OR anywhere in its input JSON (keys and values). Trimmed; blank is ignored. Longer than 200 characters returns 422 VALIDATION_ERROR. |
| actionType | query | string one of capture_lead · escalate_to_human · book_appointment · get_appointment_slots · create_ticket · lookup_order · http_action | Optional | — | Filter to one action type. An unknown value returns 422 VALIDATION_ERROR. |
| status | query | string one of success · error | Optional | — | Filter to one outcome. Any other value returns 422 VALIDATION_ERROR. |
| conversationId | query | string uuid | Optional | — | Filter to the runs from one conversation. A malformed (non-uuid) value returns 422 VALIDATION_ERROR. |
Request
curl "https://app.evoriqa.com/api/v1/chatbots/{chatbotId}/action-runs" \
-H "x-api-key: $EVORIQA_API_KEY"const res = await fetch("https://app.evoriqa.com/api/v1/chatbots/{chatbotId}/action-runs", {
headers: {
Authorization: `Bearer ${process.env.EVORIQA_API_KEY}`,
},
});
const responseBody = await res.json();import os
import requests
res = requests.get(
"https://app.evoriqa.com/api/v1/chatbots/{chatbotId}/action-runs",
headers={"Authorization": f"Bearer {os.environ['EVORIQA_API_KEY']}"},
)
body = res.json()Response
{
"success": true,
"data": {
"runs": [
{
"id": "3a9c1f42-8b7d-4e1a-9c2f-1d0e5b6a7c88",
"actionType": "book_appointment",
"status": "error",
"errorMessage": "API token was rejected by Calendly.",
"latencyMs": 412,
"createdAt": "2026-08-11T09:14:22.000Z",
"conversationId": "d51c1c2a-1b21-4f7c-9d0f-6a3a4a1c9d55",
"input": {
"name": "Sam Rivera",
"email": "sam@example.com"
}
}
],
"total": 1,
"page": 1,
"pageSize": 50
}
}