Delete a workspace workflow hook
DELETE/api/v2/workspaces/{slug}/workflows/{workflow_id}/state-transitions/{transition_id}/hooks/{pk}/
Delete a hook from a catalog workflow transition. A successful delete returns 204 with an empty body.
The delete is soft. The hook stops running and disappears from reads, which return 404 for it from then on. Its run history stays readable with List workspace workflow hook executions.
To stop a hook for a while without losing it, set is_enabled to false with Update a workspace workflow hook instead.
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.
workflow_id:requiredstring (uuid)The catalog workflow the transition belongs to.
transition_id:requiredstring (uuid)The transition the hooks run on. It must belong to the workflow in the path, or the request returns 404.
pk:requiredstring (uuid)The id of the hook.
Scopes
workspaces.workflows: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 | Workflows isn't on your plan, or is switched off. |
403 | forbidden | Your role or token scope can't edit workspace workflows. |
404 | not_found | No such workflow, transition, or hook, or the hook was deleted. |
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. |
409 | states_managed_at_project | The workspace doesn't have governance turned on. Use the project's workflows instead. |
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. |
Delete a workspace workflow hook
bash
curl -X DELETE \
"https://api.plane.so/api/v2/workspaces/my-team/workflows/9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88/state-transitions/d7a3f5c9-0b2e-4d81-b6f4-9e1c3a5d7b20/hooks/e4b7c9a2-3d1f-4e68-8a52-9f0c6b3d7e15/" \
-H "X-Api-Key: $PLANE_API_KEY"python
import requests
response = requests.delete(
"https://api.plane.so/api/v2/workspaces/my-team/workflows/9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88/state-transitions/d7a3f5c9-0b2e-4d81-b6f4-9e1c3a5d7b20/hooks/e4b7c9a2-3d1f-4e68-8a52-9f0c6b3d7e15/",
headers={"X-Api-Key": "your-api-key"},
)
print(response.status_code)javascript
const response = await fetch(
"https://api.plane.so/api/v2/workspaces/my-team/workflows/9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88/state-transitions/d7a3f5c9-0b2e-4d81-b6f4-9e1c3a5d7b20/hooks/e4b7c9a2-3d1f-4e68-8a52-9f0c6b3d7e15/",
{
method: "DELETE",
headers: {
"X-Api-Key": "your-api-key",
},
},
);
console.log(response.status);Response204
No response body.

