Skip to content
The docs are now organized by product area. Old links still work. Report a broken link

Test plans API

List and read the test plans of a Qualflare project and the test cases each one selects over the REST API, with paging, sorting and every field.

Last updated

The Test plans API lets you list and read test plans and the cases they select in a Qualflare project over REST at https://api.qualflare.com/api/v1/test-plans, authenticated with a project access token.

Base path/api/v1/test-plans and /api/v1/test-plan/{seq}
ReadsAny token. Token creator: Viewer+ · project (requires the Viewer role or higher in the project). The API has no test plan writes
Pages10 plans per page, as items and paging; a plan's cases come back whole
LimitsRate limits and request sizes
ErrorsErrors and status codes
CLIqf <identifier> plans list, qf <identifier> plan get <seq>, qf <identifier> plan cases <seq> (Plans commands)
MCPlist_test_plans, get_test_plan, list_test_plan_cases (MCP server reference)

The three endpoints, each with its own section below:

EndpointWhat it does
GET /api/v1/test-plansList test plans
GET /api/v1/test-plan/{seq}Get a test plan
GET /api/v1/test-plan/{seq}/casesList a test plan's cases

List test plans

List test plans returns one page of the project's test plans, searched by name.

GET /api/v1/test-plans

Needs a project access token whose creator has the Viewer role or higher in the project.

NameTypeDefaultRequiredDescription
qquery, stringNoText to look for in plan names, up to 255 characters
pagequery, integer1NoPage number, 1 to 1,000
sortByquery, stringseqNoseq, name or description. createdAt and updatedAt are accepted but leave the list unordered
sortDirquery, booleanfalseNotrue sorts in descending order
curl -sS "https://api.qualflare.com/api/v1/test-plans" \
  -H "Authorization: Bearer $QF_TOKEN"

Returns 200: A page of test plans: items and paging, 10 plans per page.

  • sortBy takes seq, name or description. createdAt and updatedAt are accepted but leave the list unordered.

Get a test plan

Get a test plan returns one plan by its number and adds caseSeq, the numbers of the cases you picked, and querySeq, the numbers of its saved queries.

GET /api/v1/test-plan/{seq}

Needs a project access token whose creator has the Viewer role or higher in the project.

NameTypeDefaultRequiredDescription
seqpath, integerYesThe test plan number
curl -sS "https://api.qualflare.com/api/v1/test-plan/5" \
  -H "Authorization: Bearer $QF_TOKEN"

Returns 200: The test plan, with caseSeq and querySeq.

{
  "seq": 5,
  "name": "v2.4 regression",
  "description": "Cases to run by hand before the v2.4 release",
  "caseSeq": [
    101,
    102,
    115
  ],
  "querySeq": [
    2
  ],
  "createdAt": "2026-10-02T11:20:00Z",
  "updatedAt": "2026-10-27T15:48:19Z"
}
  • A number that isn't a test plan of the project answers 404 with test plan not found.

List a test plan's cases

List a test plan's cases returns an array of cases, every case of the plan, with no pages.

GET /api/v1/test-plan/{seq}/cases

Needs a project access token whose creator has the Viewer role or higher in the project.

NameTypeDefaultRequiredDescription
seqpath, integerYesThe test plan number
curl -sS "https://api.qualflare.com/api/v1/test-plan/5/cases" \
  -H "Authorization: Bearer $QF_TOKEN"

Returns 200: An array of every case of the plan, with no pages.

  • isFlaky is always false and flakyScore always 0 in this list; Get a case has the real values.

Test plan fields

Each test plan in List test plans has these fields, and Get a test plan adds caseSeq and querySeq:

FieldTypeNotes
seqintegerThe test plan number in the project
namestringThe plan name
descriptionstringEmpty when the plan has none
caseSeqarray of integersOn get only: the numbers of the cases picked for the plan
querySeqarray of integersOn get only: the numbers of the saved queries attached to the plan
createdAt, updatedAtstringRFC 3339 timestamps

CLI and MCP equivalents

The qf CLI and the MCP server run the same reads, so they return the same JSON:

RESTqf command and MCP tool
GET /api/v1/test-plansqf <identifier> plans list; list_test_plans
GET /api/v1/test-plan/{seq}qf <identifier> plan get <seq>; get_test_plan
GET /api/v1/test-plan/{seq}/casesqf <identifier> plan cases <seq>; list_test_plan_cases