For AI agents: markdown of this page — /docs-content-en/scrum/sprints/list.md documentation index — /llms.txt
List sprints
GET /v1/scrum/sprints
Returns the sprints of the Bitrix24 account's scrum projects. The id field supplies the sprint identifier used by board stage operations and the single-sprint read.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
groupId (query) |
number | — | Scrum project ID. List: GET /v1/workgroups. Without the parameter, the response contains every sprint the key can see |
limit (query) |
number | 200 |
How many sprints to return, from 1 to 1000 |
Pagination. Pages are fetched automatically — the response arrives as a single array of up to limit records, and the method has no offset parameter. A limit above 1000 is clamped to 1000 without an error.
Examples
curl — personal key
curl https://vibecode.bitrix24.com/v1/scrum/sprints \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl https://vibecode.bitrix24.com/v1/scrum/sprints \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/scrum/sprints', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data } = await res.json()
const active = data.filter((sprint) => sprint.status === 'active')
console.log(active.map((sprint) => `${sprint.id}: ${sprint.name}`))
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/scrum/sprints', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data } = await res.json()
console.log(data.map((sprint) => sprint.name))
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data |
array | Array of sprints |
data[].id |
number | Sprint ID. The same value as sprintId in stage operations |
data[].groupId |
number | Scrum project ID. List: GET /v1/workgroups |
data[].entityType |
string | Record type. For a sprint — sprint |
data[].name |
string | Sprint name |
data[].goal |
string | Sprint goal. An empty string is returned when no goal is set |
data[].sort |
number | Sprint order within the project |
data[].createdBy |
number | ID of the sprint author. List: GET /v1/users |
data[].modifiedBy |
number | ID of the employee who last changed the sprint. List: GET /v1/users |
data[].dateStart |
string | Sprint start in ISO 8601 with the account's UTC offset |
data[].dateEnd |
string | Sprint end in ISO 8601 with the account's UTC offset |
data[].status |
string | planned, active or completed |
Response example
{
"success": true,
"data": [
{
"id": 9,
"groupId": 45,
"entityType": "sprint",
"name": "Sprint 2",
"goal": "",
"sort": 0,
"createdBy": 29,
"modifiedBy": 29,
"dateStart": "2023-09-01T01:00:00+00:00",
"dateEnd": "2024-04-16T12:20:42+00:00",
"status": "completed"
},
{
"id": 11,
"groupId": 45,
"entityType": "sprint",
"name": "Sprint 3",
"goal": "",
"sort": 0,
"createdBy": 29,
"modifiedBy": 29,
"dateStart": "2023-09-15T01:00:00+00:00",
"dateEnd": "2023-09-29T01:00:00+00:00",
"status": "active"
},
{
"id": 21,
"groupId": 53,
"entityType": "sprint",
"name": "Sprint 6",
"goal": "",
"sort": 0,
"createdBy": 1,
"modifiedBy": 1,
"dateStart": "2024-06-05T01:00:00+00:00",
"dateEnd": "2024-06-19T01:00:00+00:00",
"status": "active"
}
]
}
Error response example
400 — an invalid groupId value:
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "groupId must be a positive integer"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | INVALID_PARAMS |
groupId is not a positive integer |
| 400 | INVALID_PARAMS |
limit is not a positive integer |
| 422 | BITRIX_ERROR |
Bitrix24 returned an error, e.g. "Access denied" when the key's user has no access to the scrum project |
| 403 | SCOPE_DENIED |
The key lacks the task scope |
| 401 | TOKEN_MISSING |
The key has no tokens configured |
The full list of common API errors — Errors.
Known specifics
- Without
groupIdthe sprints of different projects are interleaved. The response is not grouped by project, so split the result on your side by each record'sgroupIdfield. - Completed sprints stay in the result. The response is not limited to the project's current sprint. If you only need the current one, use
GET /v1/scrum/sprints/active.