Reference · Tools
Taiga
Manage epics, issues, tasks, and user stories in Taiga agile project management platform
The Taiga node manages the agile work items — epics, issues, tasks and user stories — with full CRUD, on Taiga Cloud or a self-hosted instance. A typical build is creating a user story from an inbound feature request and keeping its status in step with an external tracker.
- Node type
- Action
- Parameters
- 51
- Outputs
- Output, Error
- Credentials
- Taiga
Taiga
Manage epics, issues, tasks, and user stories in Taiga
Overview
Taiga is an open-source agile project management platform. This tool provides full CRUD operations on Taiga resources: epics, issues, tasks, and user stories. It supports both Taiga Cloud and self-hosted instances. Authentication uses username/password to obtain a bearer token. Updates use optimistic concurrency control via a version field.
Category: Development
Tool Name: taiga
Version: 1
Appearance: Icon: lucide-ClipboardList | Color: #4C566A
Node Type
Action — processes input items and produces output
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Taiga credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Epic | epic |
| Issue | issue |
| Task | task |
| User Story | userStory |
Operations
Every resource supports the same five operations.
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a new item of the selected resource |
| Delete | delete | Delete an item by ID |
| Get | get | Retrieve a single item by ID |
| Get Many | getAll | List items in a project, with filters |
| Update | update | Change fields on an existing item |
Parameters
Collection sub-fields show their internal name in backticks when it differs from the label — use that exact name in JSON configurations.
Epic: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | Yes | — | ID of the project to which the epic belongs. Find the project ID in Taiga project settings. Supports expressions like {{ $json.projectId }}. |
| Subject | string | Yes | — | Subject/title of the epic. Supports expressions. |
| Additional Fields | collection | No | {} | Optional fields to set on the new epic. |
— Assigned To (assigned_to) | string | No | — | ID of the user to assign the epic to. |
— Blocked Note (blocked_note) | string | No | — | Reason why the epic is blocked. Requires “Is Blocked” to be enabled. |
| — Color | string | No | 0000FF | Color code in hexadecimal notation (e.g., “FF0000” for red). |
| — Description | string | No | — | Description of the epic. |
— Is Blocked (is_blocked) | boolean | No | false | Whether the epic is blocked. |
| — Tags | string | No | — | Comma-separated list of tag names. Tags must already exist in the project. |
Epic: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Epic ID | string | Yes | — | ID of the epic to delete. Supports expressions like {{ $json.epicId }}. |
Epic: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Epic ID | string | Yes | — | ID of the epic to retrieve. Supports expressions like {{ $json.epicId }}. |
Epic: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | Yes | — | ID of the project to list epics from. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Optional filters applied to the listing. |
— Assigned To (assigned_to) | string | No | — | ID of the user whom the epic is assigned to. |
— Is Closed (statusIsClosed) | boolean | No | false | Whether the epic is closed. |
Epic: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | No | — | ID of the project (used for context when selecting dynamic fields). Supports expressions. |
| Epic ID | string | Yes | — | ID of the epic to update. Supports expressions like {{ $json.epicId }}. |
| Update Fields | collection | No | {} | Fields to change on the epic. At least one is required. |
— Assigned To (assigned_to) | string | No | — | ID of the user to assign the epic to. |
— Blocked Note (blocked_note) | string | No | — | Reason why the epic is blocked. Requires “Is Blocked” to be enabled. |
| — Color | string | No | 0000FF | Color code in hexadecimal notation. |
| — Description | string | No | — | Description of the epic. |
— Is Blocked (is_blocked) | boolean | No | false | Whether the epic is blocked. |
| — Subject | string | No | — | New subject/title for the epic. |
| — Tags | string | No | — | Comma-separated list of tag names. |
Issue: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | Yes | — | ID of the project to which the issue belongs. Supports expressions. |
| Subject | string | Yes | — | Subject/title of the issue. Supports expressions. |
| Additional Fields | collection | No | {} | Optional fields to set on the new issue. |
— Assigned To (assigned_to) | string | No | — | ID of the user to assign the issue to. |
— Blocked Note (blocked_note) | string | No | — | Reason why the issue is blocked. Requires “Is Blocked” to be enabled. |
| — Description | string | No | — | Description of the issue. |
— Is Blocked (is_blocked) | boolean | No | false | Whether the issue is blocked. |
— Milestone ID (milestone) | string | No | — | ID of the milestone (sprint) for the issue. Find in Taiga project milestones. |
— Priority ID (priority) | string | No | — | ID of the priority level. Find in Taiga project settings under Priorities. |
— Severity ID (severity) | string | No | — | ID of the severity level. Find in Taiga project settings under Severities. |
— Status ID (status) | string | No | — | ID of the issue status. Find in Taiga project settings under Issue Statuses. |
| — Tags | string | No | — | Comma-separated list of tag names. |
— Type ID (type) | string | No | — | ID of the issue type. Find in Taiga project settings under Issue Types. |
Issue: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Issue ID | string | Yes | — | ID of the issue to delete. Supports expressions like {{ $json.issueId }}. |
Issue: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Issue ID | string | Yes | — | ID of the issue to retrieve. Supports expressions like {{ $json.issueId }}. |
Issue: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | Yes | — | ID of the project to list issues from. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Optional filters applied to the listing. |
— Assigned To (assigned_to) | string | No | — | ID of the user the issue is assigned to. |
— Order By (orderBy) | options | No | assigned_to | Field to order the issues by. |
Options: assigned_to, created_date, modified_date, owner, priority, severity, status, subject, type | ||||
| — Owner | string | No | — | ID of the owner of the issue. |
— Priority ID (priority) | string | No | — | ID of the priority to filter by. |
— Role ID (role) | string | No | — | ID of the role to filter by. |
— Severity ID (severity) | string | No | — | ID of the severity to filter by. |
— Status ID (status) | string | No | — | ID of the status to filter by. |
| — Tags | string | No | — | Comma-separated list of tag names to filter by. |
— Type ID (type) | string | No | — | ID of the issue type to filter by. |
Issue: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | No | — | ID of the project (used for context when selecting dynamic fields). Supports expressions. |
| Issue ID | string | Yes | — | ID of the issue to update. Supports expressions like {{ $json.issueId }}. |
| Update Fields | collection | No | {} | Fields to change on the issue. At least one is required. |
— Assigned To (assigned_to) | string | No | — | ID of the user to assign the issue to. |
— Blocked Note (blocked_note) | string | No | — | Reason why the issue is blocked. Requires “Is Blocked” to be enabled. |
| — Description | string | No | — | Description of the issue. |
— Is Blocked (is_blocked) | boolean | No | false | Whether the issue is blocked. |
— Milestone ID (milestone) | string | No | — | ID of the milestone (sprint) for the issue. |
— Priority ID (priority) | string | No | — | ID of the priority level. |
— Severity ID (severity) | string | No | — | ID of the severity level. |
— Status ID (status) | string | No | — | ID of the issue status. |
| — Subject | string | No | — | New subject/title for the issue. |
| — Tags | string | No | — | Comma-separated list of tag names. |
— Type ID (type) | string | No | — | ID of the issue type. |
Task: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | Yes | — | ID of the project to which the task belongs. Supports expressions. |
| Subject | string | Yes | — | Subject/title of the task. Supports expressions. |
| Additional Fields | collection | No | {} | Optional fields to set on the new task. |
— Assigned To (assigned_to) | string | No | — | ID of the user to assign the task to. |
— Blocked Note (blocked_note) | string | No | — | Reason why the task is blocked. Requires “Is Blocked” to be enabled. |
| — Description | string | No | — | Description of the task. |
— Is Blocked (is_blocked) | boolean | No | false | Whether the task is blocked. |
— Milestone ID (milestone) | string | No | — | ID of the milestone (sprint) for the task. |
— Status ID (status) | string | No | — | ID of the task status. Find in Taiga project settings under Task Statuses. |
| — Tags | string | No | — | Comma-separated list of tag names. |
— Taskboard Order (taskboard_order) | number | No | 1 | Order of the task in the taskboard. |
— User Story ID (user_story) | string | No | — | ID of the user story the task belongs to. |
— User Story Order (us_order) | number | No | 1 | Order of the task within the user story. |
Task: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Task ID | string | Yes | — | ID of the task to delete. Supports expressions like {{ $json.taskId }}. |
Task: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Task ID | string | Yes | — | ID of the task to retrieve. Supports expressions like {{ $json.taskId }}. |
Task: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | Yes | — | ID of the project to list tasks from. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Optional filters applied to the listing. |
— Assigned To (assigned_to) | string | No | — | ID of the user the task is assigned to. |
— Is Closed (statusIsClosed) | boolean | No | false | Whether the task is closed. |
— Milestone ID (milestone) | string | No | — | ID of the milestone to filter by. |
| — Owner | string | No | — | ID of the owner of the task. |
— Role ID (role) | string | No | — | ID of the role to filter by. |
— Status ID (status) | string | No | — | ID of the task status to filter by. |
| — Tags | string | No | — | Comma-separated list of tag names to filter by. |
— User Story ID (userStory) | string | No | — | ID of the user story the task belongs to. |
Task: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | No | — | ID of the project (used for context when selecting dynamic fields). Supports expressions. |
| Task ID | string | Yes | — | ID of the task to update. Supports expressions like {{ $json.taskId }}. |
| Update Fields | collection | No | {} | Fields to change on the task. At least one is required. |
— Assigned To (assigned_to) | string | No | — | ID of the user to assign the task to. |
— Blocked Note (blocked_note) | string | No | — | Reason why the task is blocked. Requires “Is Blocked” to be enabled. |
| — Description | string | No | — | Description of the task. |
— Is Blocked (is_blocked) | boolean | No | false | Whether the task is blocked. |
— Milestone ID (milestone) | string | No | — | ID of the milestone (sprint) for the task. |
— Status ID (status) | string | No | — | ID of the task status. |
| — Subject | string | No | — | New subject/title for the task. |
| — Tags | string | No | — | Comma-separated list of tag names. |
— Taskboard Order (taskboard_order) | number | No | 1 | Order of the task in the taskboard. |
— User Story ID (user_story) | string | No | — | ID of the user story the task belongs to. |
— User Story Order (us_order) | number | No | 1 | Order of the task within the user story. |
User Story: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | Yes | — | ID of the project to which the user story belongs. Supports expressions. |
| Subject | string | Yes | — | Subject/title of the user story. Supports expressions. |
| Additional Fields | collection | No | {} | Optional fields to set on the new user story. |
— Assigned To (assigned_to) | string | No | — | ID of the user to assign the user story to. |
— Backlog Order (backlog_order) | number | No | 1 | Order of the user story in the backlog. |
— Blocked Note (blocked_note) | string | No | — | Reason why the user story is blocked. Requires “Is Blocked” to be enabled. |
| — Description | string | No | — | Description of the user story. |
— Is Blocked (is_blocked) | boolean | No | false | Whether the user story is blocked. |
— Kanban Order (kanban_order) | number | No | 1 | Order of the user story in the kanban board. |
— Milestone ID (milestone) | string | No | — | ID of the milestone (sprint) for the user story. |
— Sprint Order (sprint_order) | number | No | 1 | Order of the user story in the milestone/sprint. |
— Status ID (status) | string | No | — | ID of the user story status. Find in Taiga project settings under User Story Statuses. |
| — Tags | string | No | — | Comma-separated list of tag names. |
— Type ID (type) | string | No | — | ID of the user story type. |
User Story: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| User Story ID | string | Yes | — | ID of the user story to delete. Supports expressions like {{ $json.userStoryId }}. |
User Story: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| User Story ID | string | Yes | — | ID of the user story to retrieve. Supports expressions like {{ $json.userStoryId }}. |
User Story: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | Yes | — | ID of the project to list user stories from. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Optional filters applied to the listing. |
— Assigned To (assigned_to) | string | No | — | ID of the user the user story is assigned to. |
— Epic ID (epic) | string | No | — | ID of the epic the user story belongs to. |
— Is Archived (statusIsArchived) | boolean | No | false | Whether the user story has been archived. |
— Is Closed (statusIsClosed) | boolean | No | false | Whether the user story is closed. |
— Milestone ID (milestone) | string | No | — | ID of the milestone to filter by. |
— Role ID (role) | string | No | — | ID of the role to filter by. |
— Status ID (status) | string | No | — | ID of the user story status to filter by. |
| — Tags | string | No | — | Comma-separated list of tag names to filter by. |
User Story: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Project ID | string | No | — | ID of the project (used for context when selecting dynamic fields). Supports expressions. |
| User Story ID | string | Yes | — | ID of the user story to update. Supports expressions like {{ $json.userStoryId }}. |
| Update Fields | collection | No | {} | Fields to change on the user story. At least one is required. |
— Assigned To (assigned_to) | string | No | — | ID of the user to assign the user story to. |
— Backlog Order (backlog_order) | number | No | 1 | Order of the user story in the backlog. |
— Blocked Note (blocked_note) | string | No | — | Reason why the user story is blocked. Requires “Is Blocked” to be enabled. |
| — Description | string | No | — | Description of the user story. |
— Is Blocked (is_blocked) | boolean | No | false | Whether the user story is blocked. |
— Kanban Order (kanban_order) | number | No | 1 | Order of the user story in the kanban board. |
— Milestone ID (milestone) | string | No | — | ID of the milestone (sprint) for the user story. |
— Sprint Order (sprint_order) | number | No | 1 | Order of the user story in the milestone/sprint. |
— Status ID (status) | string | No | — | ID of the user story status. |
| — Subject | string | No | — | New subject/title for the user story. |
| — Tags | string | No | — | Comma-separated list of tag names. |
— Type ID (type) | string | No | — | ID of the user story type. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
The Taiga response is merged onto the input item JSON — fields already on the item pass through and the resource object is written on top of them. Binary data is forwarded unchanged.
| Operation | Output items per input item |
|---|---|
create, get, update | One item carrying the Taiga object for that epic, issue, task or user story |
delete | One item carrying success: true |
getAll | Fans out — one item per result. If nothing matches, the input item still passes through as one item with nothing added. |
Taiga objects carry the fields you would see in the web UI — id, ref, subject, description, status, assigned_to, tags, project, created_date, modified_date and, importantly, version.
Updates use optimistic concurrency: the node reads the item’s current version immediately before sending the change, so a normal update succeeds without you supplying one. An Update with no Update Fields set is rejected rather than sent as an empty change.
Empty values are stripped from Additional Fields, Update Fields and Filters before the request, so leaving an optional field blank means “don’t send it” rather than “set it to empty”.
Reference the result downstream by expression, e.g. {{ $json.id }} or {{ $json.ref }}.
Usage Examples
- Create a new issue in Taiga project
- List all tasks in a sprint
- Update an epic with new tags
- Get a user story by ID
- Delete a completed task
Example Configuration
Create an issue with priority, severity and type:
{
"type": "taiga",
"parameters": {
"resource": "issue",
"operation": "create",
"projectId": "{{ $json.projectId }}",
"subject": "{{ $json.title }}",
"additionalFields": {
"description": "{{ $json.body }}",
"priority": "12",
"severity": "8",
"type": "3",
"tags": "bug, triage"
}
}
}
List every open task in a sprint:
{
"type": "taiga",
"parameters": {
"resource": "task",
"operation": "getAll",
"projectId": "12345",
"returnAll": true,
"filters": {
"milestone": "{{ $json.sprintId }}",
"statusIsClosed": false
}
}
}
List the 50 most recently modified issues:
{
"type": "taiga",
"parameters": {
"resource": "issue",
"operation": "getAll",
"projectId": "12345",
"returnAll": false,
"limit": 50,
"filters": {
"orderBy": "modified_date"
}
}
}
Retag an epic and mark it blocked:
{
"type": "taiga",
"parameters": {
"resource": "epic",
"operation": "update",
"epicId": "{{ $json.epicId }}",
"updateFields": {
"tags": "q3, roadmap",
"is_blocked": true,
"blocked_note": "Waiting on design sign-off"
}
}
}
Get a single user story:
{
"type": "taiga",
"parameters": {
"resource": "userStory",
"operation": "get",
"userStoryId": "{{ $json.userStoryId }}"
}
}
Delete a completed task:
{
"type": "taiga",
"parameters": {
"resource": "task",
"operation": "delete",
"taskId": "{{ $json.taskId }}"
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Taiga manages agile project items (epics, issues, tasks, user stories) with full CRUD operations on Taiga Cloud or self-hosted instances.
Important Notes
-
Collection Structure: All collection-type parameters (
additionalFields,updateFields,filters) use flat object structure - never use_defaultkeys or array wrappers. -
Parameter Dependencies: Many parameters are only shown based on the selected
resourceandoperationcombination. Always ensure the correct context. -
ID Requirements: Create operations require
projectIdandsubject. Update/Delete operations require the specific item ID (epicId,issueId,taskId,userStoryId). -
Pagination: Use
returnAll: falsewithlimitfor paginated results, orreturnAll: trueto fetch everything. -
Filtering: Each resource type has different available filter fields - refer to the specific resource’s filter structure.
Frequently asked questions
How should collection parameters be structured?
Additional Fields, Update Fields and Filters all use a flat object structure — never `_default` keys or array wrappers.
Why do the parameters change as I configure it?
Many are shown based on the selected resource, so choose epic, issue, task or user story first and configure what appears.
Does it work with self-hosted Taiga?
Yes — both Taiga Cloud and self-hosted instances are supported through the same credential.
Which credential does it need?
A Taiga credential pointing at the instance you use.
Build with the Taiga node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Taiga credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.