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

Milestones API

List and read the milestones of a Qualflare project over the REST API, with their result counts, a completion filter, sorting and every field.

Last updated

The Milestones API lets you list and read milestones in a Qualflare project over REST at https://api.qualflare.com/api/v1/milestones, authenticated with a project access token.

Base path/api/v1/milestones and /api/v1/milestone/{seq}
ReadsAny token. Token creator: Viewer+ · project (requires the Viewer role or higher in the project). The API has no milestone writes
Pages10 milestones per page, as items and paging
LimitsRate limits and request sizes
ErrorsErrors and status codes
CLIqf <identifier> milestones list, qf <identifier> milestone get <seq> (Milestones commands)
MCPlist_milestones, get_milestone (MCP server reference)
LaunchesTo link a launch to a milestone, send milestone with the upload (Upload results with the API)

The two endpoints, each with its own section below:

EndpointWhat it does
GET /api/v1/milestonesList milestones
GET /api/v1/milestone/{seq}Get a milestone

List milestones

List milestones returns one page of the project's milestones with their result counts.

GET /api/v1/milestones

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

NameTypeDefaultRequiredDescription
pagequery, integer1NoPage number, 1 to 1,000
qquery, stringNoText to look for in milestone names, up to 255 characters
isCompleted[]query, booleanNofalse for open milestones, true for completed ones
sortByquery, stringseqNoseq, name, duesAt, createdAt or updatedAt
sortDirquery, booleanfalseNotrue sorts in descending order
curl -sS -g "https://api.qualflare.com/api/v1/milestones?isCompleted[]=false" \
  -H "Authorization: Bearer $QF_TOKEN"

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

  • isCompleted[]=false lists open milestones, and isCompleted[]=true completed ones.

Get a milestone

Get a milestone returns one milestone by its number and adds launchCount and runCount.

GET /api/v1/milestone/{seq}

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

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

Returns 200: The milestone, with launchCount and runCount.

{
  "seq": 3,
  "name": "v2.4 release",
  "description": "Regression and smoke runs for the v2.4 release",
  "kind": "release",
  "isCompleted": false,
  "totalCount": 240,
  "passedCount": 226,
  "failedCount": 9,
  "errorCount": 1,
  "skippedCount": 4,
  "timeoutCount": 0,
  "abortedCount": 0,
  "assignees": [
    "3f6c2b9e-8d41-4a7f-b2e5-6c1d9a0e7f34"
  ],
  "launchCount": 6,
  "runCount": 2,
  "duesAt": "2026-11-15T00:00:00Z",
  "completedAt": "2026-10-01T08:30:00Z",
  "createdAt": "2026-10-01T08:30:00Z",
  "updatedAt": "2026-10-28T09:14:02Z"
}
  • A number that isn't a milestone of the project answers 404 with milestone not found.

Milestone fields

Every milestone the Milestones API returns has these fields:

FieldTypeNotes
seqintegerThe milestone number in the project
namestringThe milestone name
descriptionstringEmpty when the milestone has none
kindstringcycle, feature, iteration, plan, release, sprint or version
isCompletedbooleantrue for a completed milestone
totalCount, passedCount, failedCount, errorCount, skippedCount, timeoutCount, abortedCountintegerThe case results of the latest run of each suite in the milestone's launches (milestone health)
assigneesarray of stringsThe user IDs of the people assigned
launchCount, runCountintegerOn get only: the launches linked to the milestone, and the suite runs the counts come from
duesAtstringThe due date
completedAtstringAlways a date, also for an open milestone
createdAt, updatedAtstringRFC 3339 timestamps
  • completedAt always holds a date; read isCompleted to know whether the milestone is done.

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/milestonesqf <identifier> milestones list; list_milestones
GET /api/v1/milestone/{seq}qf <identifier> milestone get <seq>; get_milestone