QA Studio API Documentation
Complete REST API reference for test management and reporting
Projects
Manage test projects - the top-level container for organizing your testing activities.
/api/projectsList all projects with test case, test run, and test suite counts.
Responses
[
{
"id": "clx1a2b3c4d5e6f7g8h9i0j1",
"name": "E-Commerce Platform",
"description": "Main e-commerce application testing",
"key": "ECOM",
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z",
"_count": {
"testCases": 125,
"testRuns": 42,
"testSuites": 15
}
}
] /api/projectsCreate a new project.
Request Body
application/json{
"name": "E-Commerce Platform",
"description": "Main e-commerce application testing",
"key": "ECOM"
} Responses
{
"id": "clx1a2b3c4d5e6f7g8h9i0j1",
"name": "E-Commerce Platform",
"description": "Main e-commerce application testing",
"key": "ECOM",
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
} { "error": "Name and key are required" } { "error": "Project key already exists" } /api/projects/:idGet detailed information about a specific project.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | path | Yes | Project ID |
Responses
{
"id": "clx1a2b3c4d5e6f7g8h9i0j1",
"name": "E-Commerce Platform",
"key": "ECOM",
"milestones": [...],
"environments": [...],
"_count": {
"testCases": 125,
"testRuns": 42
}
} { "error": "Project not found" } /api/projects/:idUpdate an existing project.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | path | Yes | Project ID |
Request Body
application/json{
"name": "E-Commerce Platform v2",
"description": "Updated description"
} Responses
{
"id": "clx1a2b3c4d5e6f7g8h9i0j1",
"name": "E-Commerce Platform v2",
"description": "Updated description",
"key": "ECOM",
"updatedAt": "2024-01-16T14:20:00Z"
} { "error": "Project not found" } /api/projects/:idDelete a project and all its associated data (cascading delete).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | path | Yes | Project ID |
Responses
{ "success": true } { "error": "Project not found" } Milestones
Manage release milestones for tracking testing progress.
/api/projects/:projectId/milestonesList all milestones for a project.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | path | Yes | Project ID |
Responses
[
{
"id": "clx2b3c4d5e6f7g8h9i0j1k2",
"name": "Release 1.0",
"description": "Initial release",
"dueDate": "2024-03-01T00:00:00Z",
"status": "ACTIVE",
"_count": { "testRuns": 5 }
}
] /api/projects/:projectId/milestonesCreate a new milestone.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | path | Yes | Project ID |
Request Body
application/json{
"name": "Release 1.0",
"description": "Initial release",
"dueDate": "2024-03-01T00:00:00Z",
"status": "ACTIVE"
} Responses
{
"id": "clx2b3c4d5e6f7g8h9i0j1k2",
"name": "Release 1.0",
"status": "ACTIVE"
} Test Cases
Manage individual test cases with steps, priorities, and types.
/api/projects/:projectId/test-casesList test cases with optional filtering.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | path | Yes | Project ID |
suiteId | query | No | Filter by test suite |
priority | query | No | Filter by priority (CRITICAL, HIGH, MEDIUM, LOW) |
type | query | No | Filter by type (FUNCTIONAL, REGRESSION, SMOKE, etc.) |
automationStatus | query | No | Filter by automation status |
tags | query | No | Filter by tags (comma-separated) |
Responses
[
{
"id": "clx4d5e6f7g8h9i0j1k2l3m4",
"title": "User can log in with valid credentials",
"priority": "CRITICAL",
"type": "FUNCTIONAL",
"automationStatus": "AUTOMATED",
"tags": ["auth", "login"]
}
] /api/projects/:projectId/test-casesCreate a new test case.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | path | Yes | Project ID |
Request Body
application/json{
"title": "User can log in with valid credentials",
"description": "Verify successful login flow",
"preconditions": "User account exists",
"steps": [
{
"action": "Navigate to login page",
"expected": "Login form is displayed"
},
{
"action": "Enter valid credentials",
"expected": "Credentials are accepted"
}
],
"expectedResult": "User is logged in successfully",
"priority": "CRITICAL",
"type": "FUNCTIONAL",
"automationStatus": "AUTOMATED",
"tags": ["auth", "login"],
"suiteId": "clx3c4d5e6f7g8h9i0j1k2l3"
} Responses
{
"id": "clx4d5e6f7g8h9i0j1k2l3m4",
"title": "User can log in with valid credentials",
"priority": "CRITICAL"
} Test Runs
Execute and track test runs across different environments.
/api/projects/:projectId/test-runs/:idGet detailed test run with results and statistics.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | path | Yes | Project ID |
id | path | Yes | Test Run ID |
Responses
{
"id": "clx5e6f7g8h9i0j1k2l3m4n5",
"name": "Regression Test - Sprint 23",
"status": "COMPLETED",
"results": [...],
"stats": {
"total": 100,
"passed": 85,
"failed": 10,
"blocked": 3,
"skipped": 2
}
} /api/projects/:projectId/test-runsCreate a new test run.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | path | Yes | Project ID |
Request Body
application/json{
"name": "Regression Test - Sprint 23",
"description": "Full regression suite",
"milestoneId": "clx2b3c4d5e6f7g8h9i0j1k2",
"environmentId": "clx6f7g8h9i0j1k2l3m4n5o6",
"status": "PLANNED"
} Responses
{
"id": "clx5e6f7g8h9i0j1k2l3m4n5",
"name": "Regression Test - Sprint 23",
"status": "PLANNED"
} Test Results
Record and manage test execution results with detailed step tracking.
/api/projects/:projectId/test-runs/:runId/resultsCreate a test result for a test run.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
projectId | path | Yes | Project ID |
runId | path | Yes | Test Run ID |
Request Body
application/json{
"testCaseId": "clx4d5e6f7g8h9i0j1k2l3m4",
"status": "FAILED",
"comment": "Login button not responding",
"duration": 15000,
"errorMessage": "Element not found: #login-btn",
"stackTrace": "at LoginPage.clickLogin()...",
"steps": [
{
"description": "Navigate to login page",
"status": "PASSED"
},
{
"description": "Click login button",
"status": "FAILED",
"comment": "Button not clickable"
}
]
} Responses
{
"id": "clx7g8h9i0j1k2l3m4n5o6p7",
"status": "FAILED",
"duration": 15000
} Attachments
Upload and manage screenshots, logs, and other test artifacts.
/api/attachmentsUpload an attachment (screenshot, log, video, etc.).
Request Body
multipart/form-dataFormData:
- file: [File]
- testCaseId: "clx4d5e6f7g8h9i0j1k2l3m4" (optional)
- testResultId: "clx7g8h9i0j1k2l3m4n5o6p7" (optional) Responses
{
"id": "clx8h9i0j1k2l3m4n5o6p7q8",
"filename": "abc123def456.png",
"originalName": "login-error.png",
"mimeType": "image/png",
"size": 245678,
"url": "/uploads/attachments/abc123def456.png"
} /api/attachments/:idDelete an attachment.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | path | Yes | Attachment ID |
Responses
{ "success": true } Getting Started
Making Your First Request
// Fetch all projects
fetch('https://your-domain.com/api/projects')
.then(res => res.json())
.then(data => console.log(data)); Creating a Test Result
// Submit test result
fetch('https://your-domain.com/api/projects/PROJECT_ID/test-runs/RUN_ID/results', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
testCaseId: 'TEST_CASE_ID',
status: 'PASSED',
duration: 5000
})
}).then(res => res.json());