- Get Started
- Image & Video APIs overview
- Developer kickstart
- SDK quick starts
- Try it!
- MCP servers and LLM tools (Beta)
- VS Code Extension (Beta)
- Video tutorial library
- Programmatic asset management
- Programmatic upload
- Upload programmatically
- Create upload presets
- Auto upload
- Moderate images with AI
- Use AI to generate image captions
- Upload images in Flutter
- Upload images in Node.js
- Auto-tag images in Node.js
- Upload multiple files in Node.js
- Upload videos in Node.js
- Upload images in Python
- Auto-tag images in Python
- Upload videos in Python
- Upload images in PHP
- Upload images in Go
- Upload assets in a React app
- Upload assets in a Vue.js app
- Drag-and-drop uploads in React
- Upload assets in a Next.js app
- Upload assets with Server Actions
- Upload assets in Svelte
- Upload assets in a SvelteKit app
- Upload assets in a Remix app
- Upload images in Hono
- Use webhooks to remove backgrounds
- Upload images in Laravel
- Interaction with Cloudinary APIs
- Cloudinary SDKs
- Find your credentials
- Configure the JavaScript SDK
- Configure the React SDK
- Configure the Angular SDK
- Configure the Flutter SDK
- Configure Svelte Cloudinary
- Configure the Javascript SDK in Svelte
- Getting started with Cloudinary in Node.js
- Configure the Node.js SDK
- Configure the Python SDK
- Configure the PHP SDK
- Configure the Go SDK
- Configure the Vue.js SDK
- Configure the Next.js SDK
- List images in Next.js
- Lazy load images with Next.js
- Image fallbacks in JavaScript
- Captioning on upload with Node.js
- Delete assets with Node.js
- Manage images in a Django app
- Cloudinary CLI
- Widgets and tools
- Programmatic upload
- Optimization and delivery
- Transformations
- Get started with transformations
- Advanced transformation features
- Text overlay transformations
- Complex transformations
- Named transformations
- Named transformations using TX Builder
- Advanced image components
- Trim videos in Node.js
- Splice videos in Node.js
- Zoompan effect
- Video transformations
- Crop and resize images in React
- Crop and resize videos in React
- Crop and resize images in Python
- Remove backgrounds and add drop shadows
- AI generative fill in Next.js
- Color accessibility in JavaScript
- Transformations for social media
- Dev Hints on YouTube
- Dev Hints en Español
- Cloudinary Café Training Sessions
- Programmatic asset management
- Additional onboarding resources
- Guides
- Cloudinary Image
- Product overview
- Image transformations
- Image transformations overview
- Resizing and cropping
- Placing layers on images
- Effects and enhancements
- Background removal
- Generative AI transformations
- Face-detection based transformations
- Custom focus areas
- Transformation refiners
- Animated images
- Transformations on 3D models
- Conditional transformations
- User-defined variables and arithmetic transformations
- Custom functions
- Image optimization and delivery
- Programmatic image creation
- Product Gallery widget
- Media Editor widget
- Image add-ons
- Cloudinary Video
- Upload
- Asset management
- Account management
- Retail and e-commerce
- User-generated content
- Accessible media
- AI in action
- Native mobile
- Add-ons
- Advanced Facial Attributes Detection
- Amazon Rekognition AI Moderation
- Amazon Rekognition Video Moderation
- Amazon Rekognition Auto Tagging
- Amazon Rekognition Celebrity Detection
- Aspose Document Conversion
- Cloudinary AI Background Removal
- Cloudinary AI Content Analysis
- Cloudinary AI Vision
- Cloudinary Duplicate Image Detection
- Google AI Video Moderation
- Google AI Video Transcription
- Google Auto Tagging
- Google Automatic Video Tagging
- Google Translation
- Imagga Auto Tagging
- Imagga Crop and Scale
- Perception Point Malware Detection
- Microsoft Azure Video Indexer
- OCR Text Detection and Extraction
- Pixelz - Remove the Background
- URL2PNG Website Screenshots
- VIESUSTM Automatic Image Enhancement
- WebPurify Image Moderation
- Cloudinary Image
- References
- SDKs
- Release Notes
Diagnosing error codes when delivering media with Cloudinary (video tutorial)
Last updated: Nov-24-2025
Overview
In this tutorial, you'll learn how to diagnose and resolve some of the most common errors you may encounter while delivering media using Cloudinary. You'll gain an overview of the most common client-side errors (400, 401, 404) and see how to inspect the error in the browser's developer tools or with the Cloudinary Media Inspector extension.
Video tutorial
This video is brought to you by Cloudinary's video player - embed your own!
Use the controls to set the playback speed, navigate to chapters of interest and select subtitles in your preferred language.
Tutorial contents
This tutorial presents the following topics. Click a timestamp to jump to that part of the video.
Introducing the x-cld-error header
| Jump to this spot in the video 0:39 | Whenever there is a client-side error, Cloudinary returns an HTTP header containing information about why the request failed. You can inspect this in any browser's developer tools - and find the x-cld-error header under the network tab. |
Introducing the Cloudinary Media Inspector extension
| Jump to this spot in the video 1:06 | Cloudinary offers a browser extension called Media Inspector, where you can see the status code and other helpful information in the x-cld-error header. You can download this Cloudinary extension for free, and we'd recommend doing so if you haven't already! It is available in Chrome, and in other popular browsers, including Firefox, and Microsoft Edge. |
400: Bad Request
| Jump to this spot in the video 1:34 | A 400 - Bad Request error is returned when the delivery URL is invalid. You will receive a 400 error if you attempt to use a transformation key or value that doesn't exist or is not valid, or if you attempt to use transformation options that are syntactically correct, yet conflict with one another. |
401: Unauthorized
| Jump to this spot in the video 2:08 | A 401 - Unauthorized error is returned when there is a restriction preventing the successful delivery of a requested asset. If you have Strict Transformations enabled and attempt to generate a derived on-the-fly transformation without a signature, attempt to use an add-on or feature that is set as restricted, attempt to access a private original asset, or apply a transformation to an authenticated asset without a valid signature, you will receive a 401 error. |
404: Not Found
| Jump to this spot in the video 2:55 | A 404 - Not Found error means that the user can communicate with the server, but the server is unable to locate the requested asset in the specified cloud. Another common case is if your delivery URL is not in the proper format, for example if your cloud name is added after the resource type, or transformations are added after the public ID. Order matters with Cloudinary URLs. |
Keep learning
- Learn more in our Error handling documentation.
- To understand more about an error you are encountering, check the
x-cld-errorHTTP response header, or download the Cloudinary Media Inspector extension for your browser. - We also offer some documentation about understanding error reports.
- Not all combinations of cropping and gravity are valid. To learn more about which combinations go together and which don't, check out our Resize and crop interactive demo.
- Take courses in the Cloudinary Academy, such as our new self paced course, Introduction to Cloudinary for Node.js Developers or Fundamentals for Developers, where you can learn more about errors in Lesson 7: Handling Potential Errors.
- Get additional support and assistance with any delivery errors you encounter by submitting a Support Request form or check out our Knowledge Base.
If you like this, you might also like...
Check out the Cloudinary Academy for free self-paced Cloudinary courses on a variety of developer or DAM topics, or register for formal instructor-led courses, either virtual or on-site.