Workspace workflow states overview
A workspace workflow state is one entry in a catalog workflow's chain. It puts a catalog state in the workflow and holds the state's settings there. The same catalog state can be in many workflows, each with its own position, default flag, type, and creation setting. The state's name, color, and group belong to the catalog state itself, which you manage with workspace states.
Every route addresses a chain entry by its catalog state id, state_id, not by the entry's own id. That is the id you already hold from a workflow's states array, from a work item's state_id, or from the workspace states list.
These endpoints work only in a workspace with governance turned on. In an ungoverned workspace, they return 409 states_managed_at_project. Project workflows there have their own workflow states.
Learn more about workflows and approvals
The workspace workflow state object
Attributes
idstring (uuid)Unique identifier of the chain entry. Transitions refer to it as
workflow_state_id. Routes don't use it.state_idstring (uuid)The catalog state this entry puts in the chain. Every route addresses the entry by this id.
workflow_idstring (uuid)The catalog workflow the entry belongs to.
typestringHow work items leave the state. With
transition, work items move along the state's transitions directly. Withapproval, a move out needs a decision from the transition's approvers. Approval moves the work item to the transition's target, and rejection moves it to the transition's rejection state.is_defaultbooleanWhether new work items land in this state when no state is given. A workflow has at most one default.
allow_issue_creationbooleanWhether new work items can be created directly in this state. Marking a state as default sets it to
true.sequencenumberPosition weight in the chain. Lower values sort first.
updated_atstring (date-time)When the entry was last updated.
{
"id": "c48f1a6d-2e7b-4d95-8c03-6b1e9f2a7d54",
"state_id": "b7e42a19-3c5d-4f80-9a26-8d1c0f4e7b53",
"workflow_id": "9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88",
"type": "approval",
"is_default": false,
"allow_issue_creation": false,
"sequence": 30000.0,
"updated_at": "2026-01-14T09:31:07.215904Z"
}Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v2/workspaces/{slug}/workflows/{workflow_id}/states/ | List workspace workflow states |
GET | /api/v2/workspaces/{slug}/workflows/{workflow_id}/states/{state_id}/ | Get a workspace workflow state |
POST | /api/v2/workspaces/{slug}/workflows/{workflow_id}/states/ | Add states to a workspace workflow |
PATCH | /api/v2/workspaces/{slug}/workflows/{workflow_id}/states/{state_id}/ | Update a workspace workflow state |
DELETE | /api/v2/workspaces/{slug}/workflows/{workflow_id}/states/{state_id}/ | Remove a state from a workspace workflow |
POST | /api/v2/workspaces/{slug}/workflows/{workflow_id}/states/{state_id}/mark-default/ | Mark a workspace workflow state as default |
Order and default
sequence changes only when you replace the chain with a states body on Update a workspace workflow. States attached with Add states to a workspace workflow get sequence 65535.
The default moves with Mark a workspace workflow state as default, with default_state_id in a chain replacement, or with new_default_state_id when you remove the default state.
Removing a state
Remove a state from a workspace workflow checks four things before it removes anything: the chain keeps at least one state, a removed default has a replacement, work items in the state have a target in state_mapping (409 workflow_state_orphans), and no transition references the state (409 workflow_state_dependencies).
Response shaping
Every endpoint that returns the workspace workflow state object accepts ?fields= for sparse responses. See Sparse fields. Errors follow the shared problem+json contract.
Changed from v1
- v1 has no read routes for chain states. v2 adds List workspace workflow states and Get a workspace workflow state.
- In an ungoverned workspace, every route returns
409 states_managed_at_project. v1 returns400.
See Migrating from v1 for the full list.

