Suites API
List and read the test suites of a Qualflare project over the REST API, analyze a suite's coverage and save its score, with every parameter and field.
Last updated
The Suites API lets you list and read test suites, and analyze and save their coverage score, in a Qualflare project over REST at https://api.qualflare.com/api/v1/suites, authenticated with a project access token.
| Base path | /api/v1/suites and /api/v1/suite/{suiteSeq} |
| Reads | Any token. Token creator: Viewer+ · project (requires the Viewer role or higher in the project) |
| Writes | Saving a coverage score: a token created with Allow writes. Token creator: Editor+ · project (requires the Editor role or higher in the project) |
| Pages | 20 suites per page, as items and paging |
| Limits | Rate limits and request sizes |
| Errors | Errors and status codes |
| CLI | qf <identifier> suites list, qf <identifier> suite get <seq> (Suites commands) |
| MCP | list_test_suites, get_test_suite, analyze_suite_coverage, attach_coverage_score (MCP server reference) |
The four endpoints, each with its own section below:
| Endpoint | What it does |
|---|---|
GET /api/v1/suites | List suites |
GET /api/v1/suite/{suiteSeq} | Get a suite |
GET /api/v1/suite/{suiteSeq}/coverage-analysis | Analyze a suite's coverage |
PUT /api/v1/suite/{suiteSeq}/coverage-score | Save a coverage score |
List suites
List suites returns one page of the project's test suites, searched and sorted as you ask.
GET /api/v1/suites
Needs a project access token whose creator has the Viewer role or higher in the project.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
page | query, integer | 1 | No | Page number, 1 to 1,000 |
q | query, string | No | Text to look for in suite names and descriptions, up to 255 characters | |
sortBy | query, string | No | seq, name, priority, createdAt, updatedAt, caseCount, teamName or coverageScore | |
sortDir | query, boolean | false | No | true sorts in descending order |
curl -sS "https://api.qualflare.com/api/v1/suites?page=1" \
-H "Authorization: Bearer $QF_TOKEN"Returns 200: A page of suites: items and paging, 20 suites per page.
Get a suite
Get a suite returns one suite by its number.
GET /api/v1/suite/{suiteSeq}
Needs a project access token whose creator has the Viewer role or higher in the project.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
suiteSeq | path, integer | Yes | The suite number |
curl -sS "https://api.qualflare.com/api/v1/suite/12" \
-H "Authorization: Bearer $QF_TOKEN"Returns 200: The suite.
{
"seq": 12,
"name": "Checkout",
"description": "Cart, coupons and payment",
"priority": "high",
"automation": "automated",
"testType": "playwright",
"coverageScore": 82,
"caseCount": 48,
"teamSeq": 2,
"teamName": "Payments",
"isArchived": false,
"createdAt": "2026-08-03T10:15:00Z",
"updatedAt": "2026-10-28T14:02:41Z"
}- A number that isn't a suite of the project answers
404withsuite not found.
Analyze a suite's coverage
Analyze a suite's coverage scores the suite's test cases by test type, priority, quality and completeness, and returns the score with recommendations.
GET /api/v1/suite/{suiteSeq}/coverage-analysis
Needs a project access token whose creator has the Viewer role or higher in the project.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
suiteSeq | path, integer | Yes | The suite number |
curl -sS "https://api.qualflare.com/api/v1/suite/12/coverage-analysis" \
-H "Authorization: Bearer $QF_TOKEN"Returns 200: The coverage analysis. Nothing is saved.
- It saves nothing, and each call counts toward your plan's monthly coverage analyses All plans (available on Starter, Core, Scale, Enterprise, Open Source); at the quota it answers
402withCoverage Analysis quota exceeded (<used>/<limit>). - Any reader can run it;
canAttachScoresays whether your token may save the score.
Save a coverage score
Save a coverage score stores a 0 to 100 coverage score on the suite.
PUT /api/v1/suite/{suiteSeq}/coverage-score
Needs a project access token created with Allow writes, whose creator has the Editor role or higher in the project.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
suiteSeq | path, integer | Yes | The suite number | |
coverageScore | body, integer | Yes | The score to save, 0 to 100; 0 is a valid score | |
reason | body, string | No | Why the score changed, up to 512 characters |
curl -sS -X PUT "https://api.qualflare.com/api/v1/suite/12/coverage-score" \
-H "Authorization: Bearer $QF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"coverageScore": 82, "reason": "Checked after the release"}'Returns 200: The updated suite.
coverageScoreis required, 0 to 100 (0 is a valid score);reasonis optional, up to 512 characters.- It is not counted against the coverage quota, and it is recorded in the suite's coverage history.
Suite fields
Every suite the Suites API returns has these fields, in list items and in Get a suite:
| Field | Type | Notes |
|---|---|---|
seq | integer | The suite number in the project |
name | string | The suite name |
description | string | Empty when the suite has none |
priority | string | low, medium, high or critical |
automation | string | manual or automated |
testType | string | The kind of test, or the framework that reported it: a value of testType in List a suite's cases |
coverageScore | integer | 0 to 100 |
caseCount | integer | The number of cases in the suite |
teamSeq, teamName | integer, string | The owning team, or null |
isArchived | boolean | true for an archived suite |
archivedAt | string | When it was archived; left out unless archived |
createdAt, updatedAt | string | RFC 3339 timestamps |
Coverage analysis fields
The answer of Analyze a suite's coverage has these fields:
| Field | Type | Notes |
|---|---|---|
suiteSeq, suiteName | integer, string | The suite |
testType | string | The suite's test type |
totalCases | integer | The number of cases scored |
finalScore | integer | The coverage score |
breakdown | object | The four parts of the score: testTypeScore, priorityScore, qualityScore and completenessScore |
analysisSummary | string | A summary written from the numbers |
recommendations | array of strings | Never null; empty when there is nothing to add |
canAttachScore | boolean | Whether your token may save the score |
algorithmVersion | string | The version of the scoring that produced the numbers |
CLI and MCP equivalents
The qf CLI and the MCP server run the same reads, and the MCP server the same write, so they return the same JSON:
| REST | qf command and MCP tool |
|---|---|
GET /api/v1/suites | qf <identifier> suites list; list_test_suites |
GET /api/v1/suite/{suiteSeq} | qf <identifier> suite get <seq>; get_test_suite |
GET /api/v1/suite/{suiteSeq}/coverage-analysis | No qf command; analyze_suite_coverage |
PUT /api/v1/suite/{suiteSeq}/coverage-score | No qf command; attach_coverage_score |
Related
- Guides: Test suites and Browse
- Reference: Cases and steps API · Errors and status codes
- CLI/API: Qualflare API · MCP server reference
Upload results with the API
Upload test results to Qualflare over HTTP without qf: POST /api/v1/collect and /collect/ctrf, the JSON body, Idempotency-Key and large attachment uploads.
Cases and steps API
Read, create and update test cases and their steps over the Qualflare REST API, including a bulk create of up to 20 cases, with every parameter and field.