Skip to main content
GET
/
runs
curl -X GET "https://nunu.ai/api/v1/runs?state=completed&tags=nightly&bugs=true&page=0&page_size=10" \
  -H "X-Api-Key: YOUR_API_TOKEN"
{
  "data": [
    {
      "job_id": "f80f6230-3a4f-431a-9d54-d11b867fed4e",
      "multiplayer_run_id": "lkkg6t5612m",
      "project_id": "test",
      "state": "COMPLETED",
      "result": "SUCCESS",
      "bug_info": null,
      "test": {
        "id": "a5060a07-d386-4269-98ce-b33fb894201e",
        "name": "sanity test",
        "type": "verification"
      },
      "build": null,
      "created_at": "2026-03-03T15:50:23.601012+00:00",
      "started_at": "2026-03-03T15:50:23.601048+00:00",
      "completed_at": "2026-03-03T15:54:24.261038+00:00",
      "duration_ms": 240659.99,
      "initiator": {
        "type": "api",
        "value": { "key_id": "7f028653-0e85-4c37-87be-c59976796155" }
      },
      "tags": ["nightly"],
      "players": [
        {
          "id": "lkkg6t5612m-1",
          "state": "COMPLETED",
          "result": "SUCCESS",
          "player_number": 1,
          "test_name": "sanity test",
          "composite_test_id": "58207dda-e2ca-44bd-a4e2-82b81b3ea8fa",
          "step_count": 1,
          "completed_step_count": 1,
          "platform": {
            "kind": "android-native",
            "config": {
              "device": {
                "name": "Pixel 8",
                "os_version": "14"
              }
            }
          }
        }
      ]
    }
  ],
  "pagination": {
    "page": 0,
    "page_size": 10,
    "total_count": 501,
    "total_pages": 51
  }
}
Permission Required: project:read-runs
Retrieve a paginated list of runs for your project.

Query Parameters

state
string
default:"all"
Filter by state: running, completed, or all
multiplayer_test_id
string
Filter by test ID
job_id
string
Filter by job ID
test_plan_execution_id
string
Filter by test plan execution ID
test_type
string
Filter by test type (e.g., verification)
tags
string
Filter by tags (comma-separated). All specified tags must match. Example: tags=nightly,regression
bugs
boolean
Filter by runs that found bugs (bugs=true returns runs where bug_info.bug_count > 0)
page
integer
default:"0"
Page number (0-indexed)
page_size
integer
default:"20"
Results per page (1-100)

Response

data
Run[]
required
Array of run objects
pagination
object
required
Pagination information

Run Object

multiplayer_run_id
string
required
Unique identifier for the run (12 lowercase alphanumeric chars)
job_id
string
required
Job identifier that created this run
project_id
string
required
Project the run belongs to
state
string
required
Current state: initializing, running, or completed
result
string
Result: success, failure, error, or null if not completed
bug_info
object
Bug summary (for verification tests only)
test
object
required
Test information
build
object
Build used for the run
created_at
string
required
ISO 8601 timestamp when run was created
started_at
string
ISO 8601 timestamp when run started
completed_at
string
ISO 8601 timestamp when run completed
duration_ms
integer
Run duration in milliseconds
initiator
object
required
Who/what started the run
tags
string[]
Tags assigned to the run
players
Player[]
required
Individual player runs (for multiplayer tests)
curl -X GET "https://nunu.ai/api/v1/runs?state=completed&tags=nightly&bugs=true&page=0&page_size=10" \
  -H "X-Api-Key: YOUR_API_TOKEN"
{
  "data": [
    {
      "job_id": "f80f6230-3a4f-431a-9d54-d11b867fed4e",
      "multiplayer_run_id": "lkkg6t5612m",
      "project_id": "test",
      "state": "COMPLETED",
      "result": "SUCCESS",
      "bug_info": null,
      "test": {
        "id": "a5060a07-d386-4269-98ce-b33fb894201e",
        "name": "sanity test",
        "type": "verification"
      },
      "build": null,
      "created_at": "2026-03-03T15:50:23.601012+00:00",
      "started_at": "2026-03-03T15:50:23.601048+00:00",
      "completed_at": "2026-03-03T15:54:24.261038+00:00",
      "duration_ms": 240659.99,
      "initiator": {
        "type": "api",
        "value": { "key_id": "7f028653-0e85-4c37-87be-c59976796155" }
      },
      "tags": ["nightly"],
      "players": [
        {
          "id": "lkkg6t5612m-1",
          "state": "COMPLETED",
          "result": "SUCCESS",
          "player_number": 1,
          "test_name": "sanity test",
          "composite_test_id": "58207dda-e2ca-44bd-a4e2-82b81b3ea8fa",
          "step_count": 1,
          "completed_step_count": 1,
          "platform": {
            "kind": "android-native",
            "config": {
              "device": {
                "name": "Pixel 8",
                "os_version": "14"
              }
            }
          }
        }
      ]
    }
  ],
  "pagination": {
    "page": 0,
    "page_size": 10,
    "total_count": 501,
    "total_pages": 51
  }
}

Authorizations

X-Api-Key
string
header
required

API key for authentication

Query Parameters

state
enum<string>
default:all

Filter by state

Available options:
running,
completed,
all
multiplayer_test_id
string<uuid>

Filter by test ID

job_id
string<uuid>

Filter by job ID

test_plan_execution_id
string<uuid>

Filter by test plan execution ID

test_type
string

Filter by test type (e.g., verification)

tags
string

Filter by tags (comma-separated). All specified tags must match.

bugs
boolean

Filter by runs that found bugs (true returns runs where bug_count > 0)

page
integer
default:0

Page number (0-indexed)

page_size
integer
default:20

Results per page (1-100)

Required range: 1 <= x <= 100

Response

Successful response

data
object[]
pagination
object