Base URL
All API requests should be made to:Available Endpoints
Runs
Start tests, monitor progress, retrieve results, and access bug reports
Builds
Upload and manage builds in nunu.ai’s cloud storage
Runs Endpoints
| Endpoint | Method | Description |
|---|---|---|
/runs | GET | List runs with filtering and pagination |
/runs | POST | Start a test or test plan |
/runs/{runId} | GET | Get detailed run information with artifacts |
/runs/{runId}/bugs | GET | List bugs found in a run |
/runs/stop | POST | Stop one or more running tests |
Builds Endpoints
| Endpoint | Method | Description |
|---|---|---|
/builds/upload | POST | Initiate a build upload |
/builds/upload/parts | GET | Get presigned URLs for multipart upload |
/builds/upload/complete | POST | Complete an upload |
/builds/upload | DELETE | Cancel an in-progress upload |
Authentication
All API requests require authentication via an API key. Include your API key in theX-Api-Key header:
Learn more about authentication
API key management, permissions, and security best practices
Permissions
API keys are scoped to specific permissions. Use only the permissions you need:| Permission | Description | Required For |
|---|---|---|
project:read-runs | Read run data, artifacts, and bugs | Listing runs, getting run details |
project:operate-runs | Start and stop test runs | Starting tests, stopping runs |
project:manage-build-storage | Upload and manage builds | All build upload operations |
Response Format
All responses are returned as JSON. Successful responses typically include:HTTP Status Codes
| Code | Description |
|---|---|
200 | Success |
201 | Created (for POST requests that create resources) |
207 | Multi-Status (partial success for batch operations) |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Missing or invalid API key |
403 | Forbidden - API key lacks required permission |
404 | Not Found - Resource doesn’t exist |
402 | Payment Required - Quota exceeded |
413 | Payload Too Large - File exceeds limits |
500 | Internal Server Error |
Rate Limits
The API uses rate limiting to ensure fair usage. If you exceed the rate limit, you’ll receive a429 Too Many Requests response. Implement exponential backoff when retrying requests.