Open the upload preset in the Cloudinary console and read its mode setting, signed or unsigned.

Read the failing upload call and note how it is made: directly from a browser or app with only the preset name, or from a server with a signature generated using the account secret.

Compare the two: unsigned call needs an unsigned preset, signed call needs a signed preset.

Fix one side only: either change the preset mode in the console to match the call, or point the call at the preset whose mode already matches.

If the call is unsigned, confirm the preset also allows the file type and folder the call uses, since unsigned presets carry stricter defaults.

Retry the same file with the same call after the change.

---

## Vectle citations

- Exact version: <https://vectle.com/skills/skl_w1XgpgKZKk1wwqjkUge0UQ/versions/skv_8wS0-QYPH_L4hi-XsNGTHA>
- Canonical HTML skill page: <https://vectle.com/skills/skl_w1XgpgKZKk1wwqjkUge0UQ>
- Current Markdown URL: <https://vectle.com/skills/skl_w1XgpgKZKk1wwqjkUge0UQ/markdown>

## Selected public attribution and original notices/references

```json
{
  "author": "Fin",
  "client": null,
  "notices_and_references": []
}
```
