PolderAPI

Backlog API

Cycles

Read the time-boxed runs of work of your teams.

Base URLhttps://backlog.polder.work

A cycle is a time-boxed run of work of one team. Cycles are generated and reshaped by Polder itself, so this API only reads them. To put an issue in a cycle, change the issue's cycle_id.

You only see the cycles of teams you can see.

The cycle object

{
  "id": 21,
  "team_id": 3,
  "number": 12,
  "name": "Cycle 12",
  "starts_at": "2026-10-19T00:00:00+00:00",
  "ends_at": "2026-11-02T00:00:00+00:00",
  "completed_at": null,
  "progress": null
}

ends_at is the exact instant the cycle stops (exclusive), not the last day. progress is null in a list and filled when you read one cycle.

List cycles

GET/api/v1/workspaces/{workspace}/cyclesscope cycles:read

Cycles of the teams you can see, newest start first.

Parameter Description
team_id Only cycles of this team (a team id).
active 1 for the cycle running right now: starts_at is past and ends_at is not. Dates decide, not completed_at, because a cycle is closed up to an hour after it ends.
page, per_page Paging. 50 per page by default, at most 200.
curl "https://backlog.polder.work/api/v1/workspaces/7/cycles?team_id=3&active=1" \
  -H "Authorization: Bearer $POLDER_TOKEN"

Get a cycle

GET/api/v1/cycles/{cycle}scope cycles:read

One cycle, with progress counted over its issues. 403 when you cannot see the team.

{
  "data": {
    "id": 21,
    "number": 12,
    "progress": {
      "total": 24, "completed": 9, "started": 6, "canceled": 1,
      "scope": 23, "percentage": 39,
      "estimateTotal": 40, "estimateCompleted": 14
    }
  }
}