There are many reasons why you may receive a 40X error when attempting to access an asset's URL. Below you can find additional information about how to see specific error reasons, including common reasons for such errors.
When Cloudinary returns an error for an asset's delivery URL that failed to load due to a problem with the asset or URL, we return an HTTP header containing more information about why the request failed.
We also return this header for requests where an image was returned but there was a warning, such as when the default image placeholder was sent instead of the requested image.
This information is sent in the 'x-cld-error' HTTP header, and you can see the value by using your browser's web developer tools to examine the request and response for the image which didn't load correctly.
HTTP status codes
HTTP status codes also indicate the reason a request was not successful. Below are some of the most common error codes and likely reasons why the error occurred.
400 - Bad Request
A 400 - Bad Request error is often returned when the delivery URL is invalid or not in the correct format/structure. For example, you will receive this error if you attempt to use a transformation key or value that doesn't exist or is not valid (e.g 'ab_cd' or width 0 - 'w_0').
Another reason can be if you attempt to use syntactically valid but conflicting transformations options. For instance, attempting to use the Automatic Gravity (g_auto) transformation with a crop mode that isn't compatible with it.
Finally, another common reason is if your delivery URL is not in the right structure, such as if your cloud_name comes after the 'resource_type' (e.g. image) and 'type' (upload) or if the transformation options are added in the middle of the public_id. You can find out more details about the structure of Cloudinary URLs in the following section of our documentation:
401 - Unauthorized
This error is returned when there is some restriction in place which prevents the successful delivery of the requested asset. Common reasons include if you are using Strict Transformations and attempting to generate a derived on-the-fly version with a transformation that is not marked as "allowed" in your settings, and if the URL is also not signed.
You will also receive this error if you attempt to use an add-on or feature that is set as "restricted" in the product environment settings -> Security tab, under your account settings. An example of this would be trying to use Client-side asset lists when the feature is restricted.
Additionally, this error can be returned if you are attempting to access a 'private' original asset, an 'authenticated' asset, or an asset to which access control options have been applied, but without supplying a valid signed URL or token.
404 - Not Found
A 404 - Not Found error is returned if the requested resource is not found in your cloud and you are not using a default/placeholder image transformation. If you receive this unexpectedly for a recently-uploaded asset, note that you may be seeing a cache of an error that occurred before the file was uploaded.
Cloudinary caches 40X errors in an exponential backoff manner: first for 1 minute, and each subsequent request for the same URL that leads to the error will double the expiry time up until a maximum of 24 hours.
This error cache is most often encountered for 404 - Not Found errors when derived/transformed versions of original images are requested, but that original image hasn't yet been uploaded. If you are seeing a 40X error such as a 404, but the original image is indeed in your cloud, then a cached error is the likely explanation.
We have a support article which you can find below that provides more information about Cloudinary's error caching:
If none of the above scenarios explain the issue you are seeing, or if you have any additional questions, please create a ticket for our support team at https://support.cloudinary.com/hc/requests/new and our team will check the details of the URL and the reason that it's not loading for you