Sitelet https://github.com/cloudinary/pycloudinary
Skip to content

Repository files navigation

Cloudinary Python SDK

Upload, transform, optimize, and manage images and videos with Cloudinary from Python or Django — the cloudinary package on PyPI.

Tests PyPI Downloads License

Install

pip install cloudinary

Quick start

Set your API environment variable (Console > Settings > API Keys):

export CLOUDINARY_URL=cloudinary://<api_key>:<api_secret>@<cloud_name>

Upload an image and get an optimized delivery URL:

import cloudinary
import cloudinary.uploader  # cloudinary.uploader must be imported explicitly

# Configuration is read from CLOUDINARY_URL automatically.


def main():
    # Upload a remote image (a local file path works the same way)
    result = cloudinary.uploader.upload(
        "https://res.cloudinary.com/demo/image/upload/sample.jpg",
        public_id="quickstart-sample",
    )
    print("Uploaded: {0}".format(result["public_id"]))

    # Build a 400x400 auto-cropped URL with automatic format and quality
    url = cloudinary.CloudinaryImage(result["public_id"]).build_url(
        width=400,
        height=400,
        crop="fill",
        gravity="auto",
        fetch_format="auto",
        quality="auto",
        secure=True,
    )
    print("Optimized URL: {0}".format(url))


if __name__ == "__main__":
    try:
        main()
    except Exception as error:
        print("Quick start failed: {0}".format(error))
        print("Check that CLOUDINARY_URL is set (Console > Settings > API Keys).")
        raise SystemExit(1)

Save as quickstart.py and run python quickstart.py. Create a free account if you don't have one — or call cloudinary.provisioning.create_cloud() to provision one without signing up.

Common tasks

Runnable versions live in examples/ — each is a complete file you can run directly.

When to use this SDK

Use this package in Python server-side code, including Django: uploads, signed operations, asset administration, search, moderation, and delivery URL generation.

For other jobs, better-fitting tools exist:

The full capability map — plus the Skills, MCP servers, and CLI worth setting up first — is in cloudinary/docs/platform-capabilities.md.

Status and compatibility

Stable, actively maintained. See CHANGELOG.md.

SDK version Python Django
1.x 3.10 – 3.14 4.2, 5.0, 5.1, 5.2, 6.0

The table lists what CI tests on every commit. Older Python and Django releases are supported on a best-effort basis.

Documentation

Documentation links in this README point at the browsable HTML page, with an (md) companion link that returns the same page as raw Markdown. Inside cloudinary/docs/ and examples/ the links are Markdown-only, since those files are written to be read by coding agents. Either form works for any page: add .md for Markdown, drop it for HTML.

For AI coding agents

  • Contributing to this repo: read AGENTS.md.
  • Using the installed package: the Markdown docs in the installed package's cloudinary/docs/ directory match your installed version and are the source of truth. Locate them with python -c "import cloudinary, pathlib; print(pathlib.Path(cloudinary.__file__).parent / 'docs')", and start with platform-capabilities before assuming a feature exists.

Support

More resources: Cloudinary Academy for courses, code explorers and feature demos, and the Cloudinary roadmap.

Security

See SECURITY.md for private vulnerability reporting. Keep your api_secret in server-side code; for client uploads, use the server-signed pattern in Sign a browser upload.

License

Released under the MIT license — see LICENSE. Copyright (c) Cloudinary Ltd.

Releases

Used by

Contributors

Languages