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

# Get project factory merge rate

`GET /experimental/projects/{projectId}/factory/metrics/merge-rate`

## Request

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

Counts this project's factory PRs that GitHub webhooks record as closed, by the PR’s close 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. A factory PR is one a project run produced. `closedPrs` counts them merged or not, and `mergedPrs` those that merged. `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-merge-rate', required
    - `attributes` object, required
      - `current` object, required
        - `start` string, date-time, required
        - `end` string, date-time, required
        - `closedPrs` integer, required
        - `mergedPrs` integer, required
      - `previous` object, required
        - `start` string, date-time, required
        - `end` string, date-time, required
        - `closedPrs` integer, required
        - `mergedPrs` integer, required
      - `series` object[], required
        - `day` string, required
        - `closedPrs` integer, required
        - `mergedPrs` 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
  - api operation id `getProjectFactoryMetricMergeRate` was added
- **2026-10-28** `31685be12659`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/tessl/apis/tessl-api/changes/experimental/projects/:projectId/factory/metrics/merge-rate/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)
