Delete a project release link
Remove a link from a project release. A successful delete returns 204 with an empty body. After the delete, you can add the same URL to the release again.
Deleting needs edit access to the release, and returns 403 without it.
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 release belongs to. Accepts the project UUID or its bare identifier, for example ENG.
release_id:requiredstring (uuid)The release the link is on.
pk:requiredstring (uuid)The id of the link to delete.
Response shaping
fields:optionalstringComma-separated list of fields to return. A successful delete has no body, so this has no visible effect. See Sparse fields.
Requestable here: created_at, created_by_id, id, metadata, release_id, title, updated_at, updated_by_id, url.
Scopes
releases.links:write
Errors
| Status | Code | Cause |
|---|---|---|
400 | invalid_request | A query parameter failed validation. |
401 | unauthorized | Missing or invalid credentials. |
402 | payment_required | Project releases aren't enabled on your plan. |
403 | forbidden | Your role in the project can't edit this release, or your token scope doesn't allow this. |
404 | not_found | No such link on this release, or no such release in this project. |
406 | not_acceptable | The Accept header asks for a representation the API can't produce. |
409 | conflict | Not raised by this endpoint. The spec lists it for every v2 write. |
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 DELETE \
"https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/releases/3e8a1f52-7c4b-4d9e-a6f1-0b2c5d8e9f14/links/6c2e9a14-3d7b-4f85-a0e9-1b4d8c7f2e39/" \
-H "X-Api-Key: $PLANE_API_KEY"import requests
response = requests.delete(
"https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/releases/3e8a1f52-7c4b-4d9e-a6f1-0b2c5d8e9f14/links/6c2e9a14-3d7b-4f85-a0e9-1b4d8c7f2e39/",
headers={"X-Api-Key": "your-api-key"},
)
print(response.status_code)const response = await fetch(
"https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/releases/3e8a1f52-7c4b-4d9e-a6f1-0b2c5d8e9f14/links/6c2e9a14-3d7b-4f85-a0e9-1b4d8c7f2e39/",
{
method: "DELETE",
headers: {
"X-Api-Key": "your-api-key",
},
},
);
console.log(response.status);No response body.

