ScaleReachScaleReach API
Videos

Delete Video

DELETE /api/videos/:id - Delete a video and all its clips.

DELETE /api/videos/{id}

Permanently deletes the video, all its clips, and all associated files. This cannot be undone.

Path Parameters

ParameterTypeDescription
idstringThe video ID to delete

Example

curl -X DELETE https://api.scalereach.ai/api/videos/UThwmCZb75JYZi4UP9rOX \
  -H "Authorization: Bearer sr_live_YOUR_KEY"

Response 200

{
  "message": "Video deleted successfully"
}

What gets deleted

The call removes everything ScaleReach stored for the video, not just the database row:

  • the video record and its transcript
  • every clip generated from it, including the rendered files, raw files and thumbnails
  • any exports created from those clips
  • dubbed audio created for the video
  • the stored source video, its extracted audio and its thumbnail
  • any processing or clip-generation jobs that are still queued or running
  • scheduled posts that were waiting to publish those clips

Because queued jobs are removed too, you can delete a video that is still processing. Scheduled posts that point at this video's clips are removed together with the clips. Posts that were already published on TikTok, Instagram or YouTube stay on those platforms, because ScaleReach cannot take them back.

Errors

StatusWhen it happens
401The API key is missing, invalid or expired.
403The video belongs to a workspace you are not a member of.
404No video exists with that ID. This is also what you get when you call delete twice, because the first call already removed it.
500The deletion failed. Retry the request. Files that were already removed stay removed.

Safe deletion in a script

Deletion cannot be undone, so list first and confirm what you are about to remove:

import requests, os

headers = {"Authorization": f"Bearer {os.environ['SCALEREACH_API_KEY']}"}
base = "https://api.scalereach.ai/api"

video_id = "UThwmCZb75JYZi4UP9rOX"
video = requests.get(f"{base}/videos/{video_id}", headers=headers).json()
print(f'Deleting "{video["title"]}" ({video["status"]})')

r = requests.delete(f"{base}/videos/{video_id}", headers=headers)
print(r.status_code, r.json())

Download any clips you want to keep before deleting. The downloadUrl from Get Clip stops working once the file is gone.

On this page