---
title: "Get project factory velocity"
method: GET
path: "/experimental/projects/{projectId}/factory/metrics/velocity"
tags: ["Projects"]
---

# Get project factory velocity

`GET /experimental/projects/{projectId}/factory/metrics/velocity`

## Request

- Base URL: `https://api.tessl.io`
- URL: `https://api.tessl.io/experimental/projects/{projectId}/factory/metrics/velocity`
- Auth: none declared

Counts this project's factory PRs that merged, by merge time, in the requested window (`filter[timestamp][gte]` to the exclusive `filter[timestamp][lt]`, at most 90 days, the last 7 days when neither is given) and in the window of the same length just before it, and the tickets they finished. A factory PR is one the project’s runs produced, eval PRs left out. A PR’s tickets are the GitHub and Linear issues it was made for. A ticket is finished when its first merged factory PR merges, and counts once, in the window of that merge. `trackedSince` is when the repository’s record of PRs starts, null before its first. `series` has one point per UTC day that the current window touches, zeros included, and its points add up to `current`.

## Path parameters

- `projectId` string, uuid, required

## Query parameters

- `filter[timestamp][gte]` string, date-time
- `filter[timestamp][lt]` string, date-time

## Headers

- `Authorization` string

## Response `200`

Default Response

- object
  - `links` object, required
    - `self` string, uri, required
  - `data` object, required
    - `id` string, uuid, required
    - `type` 'project-factory-velocity', required
    - `attributes` object, required
      - `current` object, required
        - `start` string, date-time, required
        - `end` string, date-time, required
        - `mergedPrs` integer, required
        - `finishedTickets` integer, required
      - `previous` object, required
        - `start` string, date-time, required
        - `end` string, date-time, required
        - `mergedPrs` integer, required
        - `finishedTickets` integer, required
      - `series` object[], required
        - `day` string, required
        - `mergedPrs` integer, required
        - `finishedTickets` integer, required
      - `trackedSince` string, date-time, nullable, required

## Other responses

- `401`: Unauthorized
- `403`: Default Response
- `404`: Not Found
- `500`: Internal Server Error

## Changes

- **2026-10-29** `06d2142ed144`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/tessl/apis/tessl-api/changes/experimental/projects/:projectId/factory/metrics/velocity/get.md)

---

[API](https://skmtc.dev/tessl/apis/tessl-api.md) - [All operations](https://skmtc.dev/tessl/apis/tessl-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tessl/apis/tessl-api/revisions/4fa2a17154e4?raw)
