curl -X DELETE "https://api.hooked.so/v1/project/cm4x9k2p10001ab12cd34ef56" \
-H "x-api-key: your_api_key_here"
const projectId = "cm4x9k2p10001ab12cd34ef56";
const response = await fetch(`https://api.hooked.so/v1/project/${projectId}`, {
method: "DELETE",
headers: { "x-api-key": process.env.HOOKED_API_KEY },
});
const result = await response.json();
if (response.status === 409) {
console.log("Not yet:", result.message, result.data?.scheduleIds ?? "");
} else if (result.success) {
console.log("Deleted, with videos:", result.data.deletedVideoIds);
}
import os
import requests
project_id = "cm4x9k2p10001ab12cd34ef56"
response = requests.delete(
f"https://api.hooked.so/v1/project/{project_id}",
headers={"x-api-key": os.environ["HOOKED_API_KEY"]},
)
result = response.json()
if response.status_code == 409:
print("Not yet:", result["message"])
else:
print("Deleted, with videos:", result["data"]["deletedVideoIds"])
{
"success": true,
"message": "Project deleted",
"data": {
"projectId": "cm4x9k2p10001ab12cd34ef56",
"deleted": true,
"deletedVideoIds": ["cm4x9n7q20003ab12xy98zt10"]
}
}
{
"success": false,
"message": "A video of this project has a pending scheduled post. Cancel it first with DELETE /v1/schedule/{scheduleId}",
"data": { "scheduleIds": ["clxsched0001"] }
}
{
"success": false,
"message": "Project not found"
}
Projects
Delete Project
Delete a project and its videos for good
DELETE
/
v1
/
project
/
{projectId}
curl -X DELETE "https://api.hooked.so/v1/project/cm4x9k2p10001ab12cd34ef56" \
-H "x-api-key: your_api_key_here"
const projectId = "cm4x9k2p10001ab12cd34ef56";
const response = await fetch(`https://api.hooked.so/v1/project/${projectId}`, {
method: "DELETE",
headers: { "x-api-key": process.env.HOOKED_API_KEY },
});
const result = await response.json();
if (response.status === 409) {
console.log("Not yet:", result.message, result.data?.scheduleIds ?? "");
} else if (result.success) {
console.log("Deleted, with videos:", result.data.deletedVideoIds);
}
import os
import requests
project_id = "cm4x9k2p10001ab12cd34ef56"
response = requests.delete(
f"https://api.hooked.so/v1/project/{project_id}",
headers={"x-api-key": os.environ["HOOKED_API_KEY"]},
)
result = response.json()
if response.status_code == 409:
print("Not yet:", result["message"])
else:
print("Deleted, with videos:", result["data"]["deletedVideoIds"])
{
"success": true,
"message": "Project deleted",
"data": {
"projectId": "cm4x9k2p10001ab12cd34ef56",
"deleted": true,
"deletedVideoIds": ["cm4x9n7q20003ab12xy98zt10"]
}
}
{
"success": false,
"message": "A video of this project has a pending scheduled post. Cancel it first with DELETE /v1/schedule/{scheduleId}",
"data": { "scheduleIds": ["clxsched0001"] }
}
{
"success": false,
"message": "Project not found"
}
Overview
Deletes a project and everything it produced.This cannot be undone. The project, its videos (every render, with their files and thumbnails) and the files the project stored are deleted. Download anything you want to keep first.
- The project is deleted. Get Project answers
404for it from then on. - Its videos are deleted with it (
deletedVideoIdslists them); Get Video Details answers404for each. - Posts already recorded for those videos are deleted from Hooked. Videos already published stay on the platform.
- The storage the files used is given back to your team.
- Images and videos of your media library that the project used stay in the library.
- Credits the project used are not refunded. A project that failed was refunded automatically when it failed.
When it is refused
Nothing is deleted and the answer is409 while:
message | What to do |
|---|---|
Project is still processing | Wait until the project is completed or failed (Get Project). A project cannot be stopped mid-generation. |
A video of this project is still rendering | Wait until its video.status is COMPLETED or FAILED. |
A video of this project has a pending scheduled post… | Cancel each post in data.scheduleIds with Cancel Scheduled Post, then delete again. |
curl -X DELETE "https://api.hooked.so/v1/project/cm4x9k2p10001ab12cd34ef56" \
-H "x-api-key: your_api_key_here"
const projectId = "cm4x9k2p10001ab12cd34ef56";
const response = await fetch(`https://api.hooked.so/v1/project/${projectId}`, {
method: "DELETE",
headers: { "x-api-key": process.env.HOOKED_API_KEY },
});
const result = await response.json();
if (response.status === 409) {
console.log("Not yet:", result.message, result.data?.scheduleIds ?? "");
} else if (result.success) {
console.log("Deleted, with videos:", result.data.deletedVideoIds);
}
import os
import requests
project_id = "cm4x9k2p10001ab12cd34ef56"
response = requests.delete(
f"https://api.hooked.so/v1/project/{project_id}",
headers={"x-api-key": os.environ["HOOKED_API_KEY"]},
)
result = response.json()
if response.status_code == 409:
print("Not yet:", result["message"])
else:
print("Deleted, with videos:", result["data"]["deletedVideoIds"])
{
"success": true,
"message": "Project deleted",
"data": {
"projectId": "cm4x9k2p10001ab12cd34ef56",
"deleted": true,
"deletedVideoIds": ["cm4x9n7q20003ab12xy98zt10"]
}
}
{
"success": false,
"message": "A video of this project has a pending scheduled post. Cancel it first with DELETE /v1/schedule/{scheduleId}",
"data": { "scheduleIds": ["clxsched0001"] }
}
{
"success": false,
"message": "Project not found"
}
Errors
| Status | When |
|---|---|
| 401 | Missing or invalid API key (code: "not_authenticated") |
| 403 | The team does not have the Hooked app product (code: "entitlement_required") |
| 404 | No such project, including one already deleted. Another team’s project, or an id that is not one, answers the same Project not found |
| 409 | The project is generating, one of its videos is rendering, or one has a pending scheduled post. Nothing was deleted |
| 500 | Internal server error. Read the project before retrying: it may already be gone |