curl -X GET "https://nunu.ai/api/v1/project/your-project-id/tests/a5060a07-d386-4269-98ce-b33fb894201e" \
-H "X-Api-Key: YOUR_API_TOKEN"
curl -X GET "https://nunu.ai/api/v1/project/your-project-id/tests/a5060a07-d386-4269-98ce-b33fb894201e?version=3" \
-H "X-Api-Key: YOUR_API_TOKEN"
{
"id": "a5060a07-d386-4269-98ce-b33fb894201e",
"project_id": "test",
"name": "Sanity smoke",
"version": 4,
"tags": ["smoke"],
"incident_auto_approve": false,
"test_type": "verification",
"quarantined": false,
"testrail": null,
"source": "repository",
"max_seconds": 19800,
"memory": null,
"players_by_key": {
"1": {
"name": "P1",
"agent_config_id": null,
"game_funcs_config_id": null,
"items_by_key": {
"1": {
"type": "step",
"goal": "Reach the main menu",
"expected_results": [
{ "expected": "the main menu is visible" },
{ "expected": "no loading spinner remains on screen" }
],
"finish_condition": "1. the main menu is visible\n2. no loading spinner remains on screen",
"screenshots": 1,
"pause_game": false,
"performance_monitoring": false,
"hint_manual": []
}
},
"item_order": ["1"]
}
},
"player_order": ["1"]
}
{
"error": "test not found"
}
Get Test
Retrieve a single test case, optionally by version.
curl -X GET "https://nunu.ai/api/v1/project/your-project-id/tests/a5060a07-d386-4269-98ce-b33fb894201e" \
-H "X-Api-Key: YOUR_API_TOKEN"
curl -X GET "https://nunu.ai/api/v1/project/your-project-id/tests/a5060a07-d386-4269-98ce-b33fb894201e?version=3" \
-H "X-Api-Key: YOUR_API_TOKEN"
{
"id": "a5060a07-d386-4269-98ce-b33fb894201e",
"project_id": "test",
"name": "Sanity smoke",
"version": 4,
"tags": ["smoke"],
"incident_auto_approve": false,
"test_type": "verification",
"quarantined": false,
"testrail": null,
"source": "repository",
"max_seconds": 19800,
"memory": null,
"players_by_key": {
"1": {
"name": "P1",
"agent_config_id": null,
"game_funcs_config_id": null,
"items_by_key": {
"1": {
"type": "step",
"goal": "Reach the main menu",
"expected_results": [
{ "expected": "the main menu is visible" },
{ "expected": "no loading spinner remains on screen" }
],
"finish_condition": "1. the main menu is visible\n2. no loading spinner remains on screen",
"screenshots": 1,
"pause_game": false,
"performance_monitoring": false,
"hint_manual": []
}
},
"item_order": ["1"]
}
},
"player_order": ["1"]
}
{
"error": "test not found"
}
Path Parameters
Query Parameters
false,
shared collection items are returned without their steps_by_key /
step_order (the caller can resolve them via Get Shared Step).Response
The body is aTestCase object whose shape depends on test_type. All variants share the
following base fields, and each variant adds its own players_by_key shape.
expected_version field when calling
Update Test.verification, discovery, taskrepository or bottest_type. For verification tests, players carry an items_by_key /
item_order describing each step or shared collection reference.nulldiscovery and task
tests. verification tests have no minimum.disabled, read_only, or read_write. null
means “auto” — the test inherits the project’s default memory setting. Always
present on reads. See Create Test.Verification step shape
Eachstep item inside a verification player’s items_by_key has the
following fields:
expected string (one observable outcome). A step can
carry several atomic checks — one entry per check."1. …\n2. …"). Prefer expected_results; treat finish_condition as
derived/read-only.curl -X GET "https://nunu.ai/api/v1/project/your-project-id/tests/a5060a07-d386-4269-98ce-b33fb894201e" \
-H "X-Api-Key: YOUR_API_TOKEN"
curl -X GET "https://nunu.ai/api/v1/project/your-project-id/tests/a5060a07-d386-4269-98ce-b33fb894201e?version=3" \
-H "X-Api-Key: YOUR_API_TOKEN"
{
"id": "a5060a07-d386-4269-98ce-b33fb894201e",
"project_id": "test",
"name": "Sanity smoke",
"version": 4,
"tags": ["smoke"],
"incident_auto_approve": false,
"test_type": "verification",
"quarantined": false,
"testrail": null,
"source": "repository",
"max_seconds": 19800,
"memory": null,
"players_by_key": {
"1": {
"name": "P1",
"agent_config_id": null,
"game_funcs_config_id": null,
"items_by_key": {
"1": {
"type": "step",
"goal": "Reach the main menu",
"expected_results": [
{ "expected": "the main menu is visible" },
{ "expected": "no loading spinner remains on screen" }
],
"finish_condition": "1. the main menu is visible\n2. no loading spinner remains on screen",
"screenshots": 1,
"pause_game": false,
"performance_monitoring": false,
"hint_manual": []
}
},
"item_order": ["1"]
}
},
"player_order": ["1"]
}
{
"error": "test not found"
}
Authorizations
API key for authentication
Path Parameters
The test ID (UUID)
The project ID. You can copy it from the project settings page or the project URL in the dashboard.
Query Parameters
Specific version (positive integer)
x >= 1Whether shared collection steps are expanded inline
Response
Successful response
Full test case body. Shape varies by test_type (verification, discovery, task); see the docs page for the exact shape.
verification, discovery, task repository, bot Test-level minimum runtime in seconds. Allowed for discovery and task only; sending this on a verification test is rejected with 400. Defaults when omitted: discovery=3600 (1h), task=0. Must be ≤ max_seconds (validated against the effective budget after defaults are applied).
0 <= x <= 19800Test-level maximum runtime in seconds. Hard ceiling for any single run is 19800 (5.5h). Defaults when omitted: verification=19800 (5.5h), discovery=10800 (3h), task=19800 (5.5h).
0 <= x <= 19800Test-level memory override. null or omitted means "auto" — inherit the project's default memory setting. disabled turns memory off for this test; read_write lets the agent read and write memory files across runs. Requires the project's knowledge feature to be enabled. Applies to all test types. On read it is always present (null = auto); on a patch, omit it to leave it unchanged.
disabled, read_only, read_write