Skip to main content

Projects

Projects are the top-level organization unit in QA Hub. All test cases, runs, and results belong to a project.

Endpoints

MethodPathScopeDescription
GET/api/v1/projectsreadList all projects
POST/api/v1/projectswriteCreate a project

List projects

GET /api/v1/projects
Authorization: Bearer qh_...

Response

{
"data": [
{
"id": "clxyz123",
"name": "Mobile Banking App",
"description": "iOS and Android banking application",
"active": true,
"environments": ["staging", "production"],
"test_cases_count": 148,
"created_at": "2026-01-15T10:00:00.000Z",
"updated_at": "2026-05-01T08:30:00.000Z"
}
]
}

Create a project

POST /api/v1/projects
Authorization: Bearer qh_...
Content-Type: application/json

{
"name": "Payment Service",
"description": "Core payment processing API",
"environments": ["dev", "staging", "production"]
}

Required fields

FieldTypeDescription
namestringProject name

Optional fields

FieldTypeDescription
descriptionstringShort description
environmentsstring[]Environment labels used in test runs

Response201 Created

{
"data": {
"id": "clnew456",
"name": "Payment Service",
"description": "Core payment processing API",
"active": false,
"environments": ["dev", "staging", "production"],
"test_cases_count": 0,
"created_at": "2026-05-13T12:00:00.000Z",
"updated_at": "2026-05-13T12:00:00.000Z"
}
}

Project object schema

{
"id": "string (cuid)",
"name": "string",
"description": "string | null",
"active": "boolean",
"environments": "string[]",
"test_cases_count": "integer",
"created_at": "ISO 8601 datetime",
"updated_at": "ISO 8601 datetime"
}
Active project

Only one project is active: true at a time. The active project is the default context for the Dashboard and AI generation in the QA Hub UI. Setting a project active via the API is not yet supported — use the UI's project selector.