Update an epic ​
PATCH/api/v1/workspaces/{slug}/projects/{project_id}/epics/{epic_id}/
Partially update an existing epic with the provided fields. Supports external ID validation to prevent conflicts.
Path Parameters ​
epic_id:requiredstringEpic ID
project_id:requiredstringProject ID
slug:requiredstringWorkspace slug
Body Parameters ​
name:optionalstringName of the epic.
description_html:optionalstringHTML-formatted description of the epic.
state_id:optionalstringID of the state (status) to assign to the epic.
parent_id:optionalstringID of the parent work item.
priority:optionalstringPriority level. Possible values: none, urgent, high, medium, low.
start_date:optionalstringStart date of the epic in YYYY-MM-DD format.
target_date:optionalstringTarget completion date in YYYY-MM-DD format.
assignee_ids:optionalarrayList of user IDs to assign to the epic.
label_ids:optionalarrayList of label IDs to apply to the epic.
estimate_point:optionalstringID of the estimate point.
external_source:optionalstringName of the source system if importing from another tool.
external_id:optionalstringExternal identifier from the source system.
Scopes ​
projects.epics:write
Update an epic
bash
curl -X PATCH \
"https://api.plane.so/api/v1/workspaces/my-workspace/projects/550e8400-e29b-41d4-a716-446655440000/epics/550e8400-e29b-41d4-a716-446655440001/" \
-H "X-API-Key: $PLANE_API_KEY" \
# Or use -H "Authorization: Bearer $PLANE_OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Epic Name",
"priority": "medium",
"target_date": "2025-09-30"
}'python
import requests
response = requests.patch(
"https://api.plane.so/api/v1/workspaces/my-workspace/projects/550e8400-e29b-41d4-a716-446655440000/epics/550e8400-e29b-41d4-a716-446655440001/",
headers={"X-API-Key": "your-api-key"},
json={
"name": "Updated Epic Name",
"priority": "medium",
"target_date": "2025-09-30"
}
)
print(response.json())javascript
const response = await fetch(
"https://api.plane.so/api/v1/workspaces/my-workspace/projects/550e8400-e29b-41d4-a716-446655440000/epics/550e8400-e29b-41d4-a716-446655440001/",
{
method: "PATCH",
headers: {
"X-API-Key": "your-api-key",
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Updated Epic Name",
priority: "medium",
target_date: "2025-09-30",
}),
}
);
const data = await response.json();Response200
json
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Updated Epic Name",
"description": {},
"description_html": "<p>Create a cross-platform mobile application framework</p>",
"description_stripped": "Create a cross-platform mobile application framework",
"description_binary": null,
"state": "550e8400-e29b-41d4-a716-446655440002",
"priority": "medium",
"assignees": [],
"labels": [],
"type": "550e8400-e29b-41d4-a716-446655440003",
"estimate_point": null,
"point": null,
"start_date": "2025-03-01",
"target_date": "2025-09-30",
"parent": null,
"sequence_id": 57,
"sort_order": 605535.0,
"is_draft": false,
"completed_at": null,
"archived_at": null,
"project": "550e8400-e29b-41d4-a716-446655440000",
"workspace": "550e8400-e29b-41d4-a716-446655440004",
"external_id": null,
"external_source": null,
"deleted_at": null,
"created_at": "2025-03-01T21:23:54.645263Z",
"updated_at": "2025-03-05T14:12:00.123456Z",
"created_by": "550e8400-e29b-41d4-a716-446655440005",
"updated_by": "550e8400-e29b-41d4-a716-446655440005"
}
