Documentation Index Fetch the complete documentation index at: https://api-docs.nunu.ai/llms.txt
Use this file to discover all available pages before exploring further.
Permission Required : project:read-runs
Retrieve all bugs detected during a specific run.
Path Parameters
The multiplayer run ID (12 lowercase alphanumeric characters)
Response
Array of bug occurrences found during the run
Pagination metadata (page, page_size, total_count, total_pages).
Bug occurrences per run are naturally bounded, so the response always
returns the full list in a single page — the envelope is kept to match the
shape of other list routes.
Bug Occurrence Object
Bug identifier (same bug across runs shares this ID)
Detailed description of the bug
Bug category: ui, gameplay, performance, crash, audio, visual
Severity level: low, medium, high, critical
Detection confidence: low, medium, high
Steps to reproduce the bug
Which player encountered the bug (0-indexed)
Test step where bug was detected
Agent turn number when detected
ISO 8601 timestamp when bug was detected
Additional bug-specific details (screenshots, element IDs, etc.)
Severity Levels
Blocks core functionality or causes crashes. Requires immediate attention.
Major feature broken or significantly impaired. Should be fixed before release.
Feature works but with noticeable issues. Should be addressed in normal development cycle.
Minor issues with minimal impact. Can be fixed when convenient.
curl -X GET "https://nunu.ai/api/v1/runs/lkkg6t5612m/bugs" \
-H "X-Api-Key: YOUR_API_TOKEN"
{
" data " : [
{
" id " : "f47ac10b-58cc-4372-a567-0e02b2c3d479" ,
" bug_id " : "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
" title " : "Button not responding" ,
" description " : "The 'Start Game' button does not respond to taps after returning from settings menu." ,
" category " : "ui" ,
" severity " : "high" ,
" confidence " : "high" ,
" reproduction_steps " : "1. Open app \n 2. Go to settings \n 3. Return to main menu \n 4. Try to tap Start Game button" ,
" player_number " : 0 ,
" test_step " : 2 ,
" turn " : 15 ,
" detected_at " : "2025-01-12T10:08:30Z" ,
" details " : {
" screenshot_url " : "https://bouncer.nunu.ai/artifacts/..." ,
" element_id " : "btn_start_game"
}
}
],
" pagination " : {
" page " : 0 ,
" page_size " : 1 ,
" total_count " : 1 ,
" total_pages " : 1
}
}
Aggregate Bugs Across Runs
Here’s an example of fetching bugs from multiple recent runs:
import requests
import os
API_TOKEN = os . environ [ " NUNU_API_TOKEN " ]
BASE_URL = "https://nunu.ai/api/v1"
headers = { "X-Api-Key" : API_TOKEN }
def get_recent_bugs ( limit = 10 ):
"""Fetch bugs from the most recent completed runs."""
all_bugs = []
# Get recent completed runs
response = requests . get (
f " { BASE_URL } /runs" ,
headers = headers ,
params = { "state" : "completed" , "page_size" : limit }
)
runs = response . json ()[ "data" ]
# Fetch bugs for each run
for run in runs :
run_id = run [ " multiplayer_run_id " ]
bugs_response = requests . get (
f " { BASE_URL } /runs/ { run_id } /bugs" ,
headers = headers
)
bugs_data = bugs_response . json ()
for bug in bugs_data [ " data " ]:
all_bugs . append ({
"run_id" : run_id ,
"test_name" : run [ " test " ][ "name" ],
** bug
})
return all_bugs
bugs = get_recent_bugs ()
for bug in bugs :
print ( f "[ { bug [ ' severity ' ]. upper () } ] { bug [ ' title ' ] } - { bug [ ' test_name ' ] } " )
API key for authentication
Bugs detected during a multiplayer run. Bug occurrences per run are naturally bounded, so the response always returns the full list in a single page; the pagination envelope is kept to match the shape of other list routes.