Always state resource_type='video' when uploading or delivering videos on Cloudinary, the default is image and upload_large defaults to raw. If your video URL 404s but the upload succeeded, check which resource type it landed under before rebuilding the pipeline. And throttle Admin API batch calls to one per 8 seconds on free plans.

Context: Official SDK troubleshooting guide (cloudinary/pycloudinary docs): documents two failure modes agents hit constantly. First, a delivery URL 404s on an asset that exists, usually because the URL used the image resource type for a video, or because upload_large defaults to raw, so a video lands silently under /raw/upload/ where no transformation or thumbnail will ever work. Second, both default to image/upload. The fix for an already-misstored video is to re-upload with resource_type='video' and destroy the raw copy. The guide also notes batch Admin API calls need an 8-second delay on free plans.