Create a work item from a template
Project work item templates pre-fill new work items in one project. Create a work item from this template in one call.
The new work item takes the template's name, description_html, and priority, and starts in the state Plane gives any new work item in the project. No other template values are applied. The response is the new work item in the same shape as Create a work item, including description_html and custom_fields.
Path Parameters
slug:requiredstringThe workspace slug. It appears in your Plane URLs. In https://app.plane.so/my-team/projects/, the slug is my-team.
project_id:requiredstringThe project the resource belongs to. Accepts the project UUID or its bare identifier, for example ENG.
pk:requiredstring (uuid)The id of the work item template to use.
Body Parameters
name:optionalstringA name for the new work item. Omit it to use the template's name.
project_id:optionalstring (uuid)Accepted but not used. The work item is always created in the project in the path.
Response shaping
fields:optionalstringComma-separated list of fields to return. Unrequested keys are omitted, not returned as null. id always comes back. Pass all for every requestable field. An unknown name is a 400. See Sparse fields.
Requestable here: archived_at, assignee_ids, completed_at, created_at, created_by_id, custom_fields, cycle_id, description_html, estimate_point_id, external_id, external_source, id, identifier, is_draft, label_ids, module_ids, name, parent_id, priority, project_id, sequence_id, sort_order, start_date, state_id, target_date, type_id, updated_at, updated_by_id.
expand:optionalstringComma-separated relations to embed: assignees, cycle, estimate_point, labels, modules, parent, state, type.
Expansion is separate-key — ?expand=state keeps state_id and adds a state object next to it. ?fields= and ?expand= are independent: naming a relation in ?fields= is a 400, and expanded objects survive field filtering. See Expanding relations.
Scopes
templates.work_items:write
Errors
| Status | Code | Cause |
|---|---|---|
400 | invalid_request | The request body or a query parameter failed validation. |
401 | unauthorized | Missing or invalid credentials. |
402 | payment_required | The feature this endpoint belongs to isn't enabled on your plan or is switched off. |
403 | forbidden | Your role or token scope doesn't allow this. |
404 | not_found | No such template, it's outside your project or tenant, or the template has no work item content. |
406 | not_acceptable | The Accept header asks for a representation the API can't produce. |
409 | governance_migration_in_progress | A governance migration is running in this workspace, so writes are paused. Retry after it finishes. |
413 | payload_too_large | The request body is over the size limit. |
415 | unsupported_media_type | The Content-Type isn't one this endpoint accepts. |
429 | rate_limited | Throttled. Honor the Retry-After header before retrying. |
curl -X POST \
"https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/work-item-templates/9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88/use/" \
-H "X-Api-Key: $PLANE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Checkout times out on slow networks"
}'import requests
response = requests.post(
"https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/work-item-templates/9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88/use/",
headers={"X-Api-Key": "your-api-key"},
json={
"name": "Checkout times out on slow networks",
},
)
print(response.json())const response = await fetch(
"https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/work-item-templates/9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88/use/",
{
method: "POST",
headers: {
"X-Api-Key": "your-api-key",
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Checkout times out on slow networks",
}),
},
);
const data = await response.json();{
"id": "6d3f8a21-c47b-4e09-9b5d-2a1e7c4f8b36",
"name": "Checkout times out on slow networks",
"description_html": "<h3>Steps to reproduce</h3><ol><li></li></ol><h3>Expected</h3><p></p><h3>Actual</h3><p></p>",
"identifier": "PROJ-158",
"sequence_id": 158,
"priority": "medium",
"project_id": "4af68566-94a4-4eb3-94aa-50dc9427067b",
"state_id": "2c4d16f8-9b3e-4a52-8d71-1f0e6c9a5b48",
"type_id": null,
"assignee_ids": [],
"label_ids": [],
"cycle_id": null,
"module_ids": [],
"parent_id": null,
"estimate_point_id": null,
"start_date": null,
"target_date": null,
"is_draft": false,
"sort_order": 75535.0,
"completed_at": null,
"archived_at": null,
"external_id": null,
"external_source": null,
"created_at": "2026-01-22T13:05:48.640219Z",
"updated_at": "2026-01-22T13:05:48.640219Z",
"created_by_id": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
"updated_by_id": null,
"custom_fields": {}
}
