[{"data":1,"prerenderedAt":7},["ShallowReactive",2],{"docs-scrum\u002Fepics\u002Flist":3,"docs-tabs-scrum\u002Fepics\u002Flist":6},{"content":4,"lastmod":5},"## List epics\n\n`GET \u002Fv1\u002Fscrum\u002Fepics`\n\nReturns the epics of the Bitrix24 account's scrum projects, optionally filtered by a specific scrum project.\n\n## Parameters\n\n| Parameter | Type | Required | Default | Description |\n|----------|-----|:-----:|-----------|---------|\n| `groupId` (query) | number | no | — | Filter by scrum project. List: `GET \u002Fv1\u002Fworkgroups` |\n| `limit` (query) | number | no | 200 | Maximum number of epics in the response. Up to 1000 |\n\nWhen `limit > 50`, the API automatically fetches additional records and returns them as a single array, so all epics are returned even when the Bitrix24 account has more than 50.\n\nThe generic `filter` parameter is not applied by this endpoint. By default, the API preserves the previous HTTP 200 response and data, adds `Warning: 299 - \"filter is not supported on this endpoint and was ignored\"`, and records unsupported-filter use in the server log.\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fscrum\u002Fepics?groupId=45\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth application\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fscrum\u002Fepics?groupId=45\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fscrum\u002Fepics?groupId=45', {\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n})\nconst { data } = await res.json()\nconsole.log('Epics:', data.length)\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fscrum\u002Fepics?groupId=45', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\nconst { data } = await res.json()\n```\n\n## Response fields\n\n| Field | Type | Description |\n|------|-----|---------|\n| `success` | boolean | Always `true` on success |\n| `data` | array | Array of epics |\n| `data[].id` | number | Epic identifier |\n| `data[].groupId` | number | Epic's scrum project. List: `GET \u002Fv1\u002Fworkgroups` |\n| `data[].name` | string | Epic name |\n| `data[].description` | string | Epic description |\n| `data[].createdBy` | number | Epic author. List: `GET \u002Fv1\u002Fusers` |\n| `data[].modifiedBy` | number | Who edited the epic last. `0` if it was never edited. List: `GET \u002Fv1\u002Fusers` |\n| `data[].color` | string | Epic color in HEX format |\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": 3,\n      \"groupId\": 45,\n      \"name\": \"Authorization\",\n      \"description\": \"\",\n      \"createdBy\": 29,\n      \"modifiedBy\": 0,\n      \"color\": \"#c4baed\"\n    },\n    {\n      \"id\": 5,\n      \"groupId\": 45,\n      \"name\": \"Payments\",\n      \"description\": \"\",\n      \"createdBy\": 29,\n      \"modifiedBy\": 0,\n      \"color\": \"#ffcbd8\"\n    },\n    {\n      \"id\": 7,\n      \"groupId\": 45,\n      \"name\": \"Reports\",\n      \"description\": \"Summary reports by sprint\",\n      \"createdBy\": 1,\n      \"modifiedBy\": 1,\n      \"color\": \"#69dafc\"\n    }\n  ]\n}\n```\n\n## Error response example\n\n400 — validation failed:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"INVALID_PARAMS\",\n    \"message\": \"groupId must be a positive integer\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|---------|\n| 200 | `Warning: 299` | The filter is ignored by default; previous data is preserved and the warning is sent in the `Warning` header. |\n| 400 (strict mode only) | `UNSUPPORTED_FILTER` | The server mode is disabled by default; until it is enabled, the endpoint preserves HTTP 200 and the previous data. |\n| 400 | `INVALID_PARAMS` | `groupId` or `limit` is not a positive integer |\n| 403 | `SCOPE_DENIED` | The key lacks the `task` scope |\n| 401 | `TOKEN_MISSING` | The key has no configured tokens |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## See also\n\n- [Get an epic](\u002Fdocs\u002Fscrum\u002Fepics\u002Fget)\n- [Create an epic](\u002Fdocs\u002Fscrum\u002Fepics\u002Fcreate)\n- [Scrum epics](\u002Fdocs\u002Fscrum\u002Fepics)\n- [Workgroups](\u002Fdocs\u002Fentities\u002Fworkgroups)\n","2026-10-23",{},1794739601921]