Description
<div align="center"> <p> <a align="center" href="" target="_blank"> <img width="100%" src="https://github.com/roboflow/roboflow-python/assets/37276661/528ed065-d5ac-4f9a-942e-0d211b8d97de" > </a> </p> <br> [notebooks](https://github.com/roboflow/notebooks) | [inference](https://github.com/roboflow/inference) | [autodistill](https://github.com/autodistill/autodistill) | [collect](https://github.com/roboflow/roboflow-collect) | [supervision](https://github.com/roboflow/supervision) <br> [](https://badge.fury.io/py/roboflow) [](https://pypistats.org/packages/roboflow) [](https://github.com/roboflow/roboflow-python/blob/main/LICENSE.md) [](https://badge.fury.io/py/roboflow) </div> # Roboflow Python Package [Roboflow](https://roboflow.com) provides everything you need to build and deploy computer vision models. `roboflow-python` is the official Roboflow Python package. `roboflow-python` enables you to interact with models, datasets, and projects hosted on Roboflow. With this Python package, you can: 1. Create and manage projects; 2. Upload images, annotations, and datasets to manage in Roboflow; 3. Start training vision models on Roboflow; 4. Run inference on models hosted on Roboflow, or Roboflow models self-hosted via [Roboflow Inference](https://github.com/roboflow/inference), and more. The Python package is documented on the [official Roboflow documentation site](https://docs.roboflow.com/api-reference/introduction). If you are developing a feature for this Python package, or need a full Python library reference, refer to the [package developer documentation](https://roboflow.github.io/roboflow-python/). ## 💻 Installation You will need to have `Python 3.8` or higher set up to use the Roboflow Python package. Run the following command to install the Roboflow Python package: ```bash pip install roboflow ``` For desktop features, use: ```bash pip install "roboflow[desktop]" ``` <details> <summary>Lightweight install (roboflow-slim)</summary> If you only need vision events, workspace management, and the CLI (no image processing, inference, or training), install the lightweight package: ```bash pip install roboflow-slim ``` This skips heavy dependencies like OpenCV, NumPy, Matplotlib, and Pillow, reducing install size from ~400MB to ~50MB. Useful for embedded devices, CI pipelines, and serverless environments. Both packages share the same codebase and version. `pip install roboflow` includes everything. </details> <details> <summary>Install from source</summary> You can also install the Roboflow Python package from source using the following commands: ```bash git clone https://github.com/roboflow-ai/roboflow-python.git cd roboflow-python python3 -m venv env source env/bin/activate pip install . ``` </details> <details> <summary>Command line tool</summary> By installing roboflow python package you can use some of its functionality in the command line (without having to write python code). See [CLI-COMMANDS.md](CLI-COMMANDS.md) </details> ## 🚀 Getting Started To use the Roboflow Python package, you first need to authenticate with your Roboflow account. You can do this by running the following command: ```python import roboflow roboflow.login() ``` <details> <summary>Authenticate with an API key</summary> You can also authenticate with an API key by using the following code: ```python import roboflow rf = roboflow.Roboflow(api_key="") ``` [Learn how to retrieve your Roboflow API key](https://docs.roboflow.com/api-reference/authentication#retrieve-an-api-key). </details> ## Quickstart Below are some common methods used with the Roboflow Python package, presented concisely for reference. For a full library reference, refer to the [Roboflow API reference documentation](https://docs.roboflow.com/api-reference). ```python import roboflow # Pass API key or use roboflow.login() rf = roboflow.Roboflow(api_key="MY_API_KEY") workspace = rf.workspace() # creating object detection model that will detect flowers project = workspace.create_project( project_name="Flower detector", project_type="object-detection", # Or "classification", "instance-segmentation", "semantic-segmentation" project_license="MIT", # "private" for private projects, only available for paid customers annotation="flowers" # If you plan to annotate lillys, sunflowers, etc. ) # upload a dataset workspace.upload_dataset( dataset_path="./dataset/", num_workers=10, dataset_format="yolov8", # supports yolov8, yolov5, and Pascal VOC project_license="MIT", project_type="object-detection" ) version = project.version("VERSION_NUMBER") # upload model weights - yolov10 version.deploy
Release History
| Version | Changes | Urgency | Date |
|---|---|---|---|
| 1.3.3 | Imported from PyPI (1.3.3) | Low | 4/21/2026 |
| v1.3.3 | ### New Features **Vision Events SDK & CLI** (#451) - New SDK support for the Vision Events API: write single/batch events, query with pagination, list use cases, and upload images. - New `roboflow vision-events` CLI command group with subcommands: `write`, `write-batch`, `query`, `use-cases`, `upload-image`. - Thin-client design — no client-side validation, so new event types and fields work without a SDK update. **`roboflow-slim` package** (#451) - New lightweight `roboflow-slim` ins | High | 4/15/2026 |
| v1.3.1 | This release rewrites the Roboflow CLI from the ground up to serve as the canonical machine interface for the Roboflow platform. Every command now supports `--json` for structured output, follows a consistent `noun verb` pattern, and provides actionable error messages to make Roboflow accessible to coding agents, CI/CD pipelines, and automation workflows. ### Highlights **🏗️ Modular CLI architecture** — The monolithic CLI has been decomposed into 18 handler modules organized by resource ( | Medium | 4/3/2026 |
| v1.2.16 | At the workspace level you can now search and delete images. Sample code using both: ``` """Delete all orphan images matching a workspace-level search query. Usage: python tests/manual/demo_search_delete.py """ from roboflow import Roboflow QUERY = "project:false" PAGE_SIZE = 100 DELETE_BATCH_SIZE = 1000 DRY_RUN = False # set to False to actually delete WORKSPACE_SLUG = "workspace" def main(): rf = Roboflow() workspace = rf.workspace(WORKSPACE_SLUG) | Low | 3/3/2026 |
| v1.2.15 | We now make it available to the python sdk to upload metadata when starting upload | Low | 2/25/2026 |
| v1.2.14 | We provide a new method to export images and annotations based on search queries. It replicates the Asset Library Download functionality on the CLI. | Low | 2/18/2026 |
| v1.2.13 | Includes model upload for new rf-detr models. pi_heif discontinued Python3.9 support, so this is handled in the release as well. | Low | 1/23/2026 |
| v1.2.12 | Users can now upload yolo26 models from ultralytics 8.4.1 or higher | Low | 1/15/2026 |
| v1.2.11 | ## What's Changed * adds curlable script to sign urls to images in s3 buckets by @tonylampada in https://github.com/roboflow/roboflow-python/pull/419 * Add ability to configure model training epochs by @PawelPeczek-Roboflow in https://github.com/roboflow/roboflow-python/pull/420 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.2.10...v1.2.11 | Low | 10/13/2025 |
| v1.2.10 | ## What's Changed * Added Confidence Argument to keypoint detection model by @Greenstan in https://github.com/roboflow/roboflow-python/pull/354 * Add 'rfdetr-seg-preview' to supported model types by @capjamesg in https://github.com/roboflow/roboflow-python/pull/414 * Bump version to 1.2.10 by @iurisilvio in https://github.com/roboflow/roboflow-python/pull/416 ## New Contributors * @Greenstan made their first contribution in https://github.com/roboflow/roboflow-python/pull/354 **Full Ch | Low | 10/3/2025 |
| v1.2.9 | ## What's Changed * fix is_prediction function call by @sberan in https://github.com/roboflow/roboflow-python/pull/413 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.2.8...v1.2.9 | Low | 9/10/2025 |
| v1.2.8 | ## What's Changed * Add are_predictions flag to dataset upload by @sberan in https://github.com/roboflow/roboflow-python/pull/412 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.2.7...v1.2.8 | Low | 9/9/2025 |
| v1.2.7 | ## What's Changed * configuring devcontainer to call localhost by @digaobarbosa in https://github.com/roboflow/roboflow-python/pull/409 * Create `Project` object local instead of calling API after create project by @iurisilvio in https://github.com/roboflow/roboflow-python/pull/411 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.2.6...v1.2.7 | Low | 8/27/2025 |
| v1.2.6 | ## What's Changed * Fix train-over-api devx by @tonylampada in https://github.com/roboflow/roboflow-python/pull/408 * Fixing format export for CLI/python sdk by @digaobarbosa in https://github.com/roboflow/roboflow-python/pull/407 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.2.5...v1.2.6 | Low | 8/12/2025 |
| v1.2.5 | ## What's Changed * Add function to debug train api by @tonylampada in https://github.com/roboflow/roboflow-python/pull/400 * Add support to search by `annotation_job` and `annotation_job_id` by @iurisilvio in https://github.com/roboflow/roboflow-python/pull/406 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.2.4...v1.2.5 | Low | 8/11/2025 |
| v1.2.4 | ## What's Changed * model_type parameter by @digaobarbosa in https://github.com/roboflow/roboflow-python/pull/401 * version update to 1.2.4 by @digaobarbosa in https://github.com/roboflow/roboflow-python/pull/405 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.2.3...v1.2.4 | Low | 8/11/2025 |
| v1.2.3 | ## What's Changed * Increase supported model types by @probicheaux in https://github.com/roboflow/roboflow-python/pull/397 * Replace pillow-heif with pi-heif by @iurisilvio in https://github.com/roboflow/roboflow-python/pull/399 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.2.1...v1.2.3 | Low | 7/27/2025 |
| v1.2.2 | Add the ability to upload new rf-detr sizes (small, medium, nano) | Low | 7/23/2025 |
| v1.2.1 | ## What's Changed * Support YAML dict labelmaps by @ford-downer-robo in https://github.com/roboflow/roboflow-python/pull/395 ## New Contributors * @ford-downer-robo made their first contribution in https://github.com/roboflow/roboflow-python/pull/395 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.2.0...v1.2.1 | Low | 7/9/2025 |
| v1.2.0 | ## What's Changed * Use `pillow-avif-plugin` for AVIF support and support `pillow-heif` 1.0 by @iurisilvio in https://github.com/roboflow/roboflow-python/pull/392 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.67...v1.2.0 | Low | 7/1/2025 |
| v1.1.67 | ## What's Changed * Fix #390: Lock `pillow-hief` version to not break AVIF support by @MuhammadHadiofficial in https://github.com/roboflow/roboflow-python/pull/391 ## New Contributors * @MuhammadHadiofficial made their first contribution in https://github.com/roboflow/roboflow-python/pull/391 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.66...v1.1.67 | Low | 6/30/2025 |
| v1.1.66 | ## What's Changed * chore(pre_commit): ⬆ pre_commit autoupdate by @pre-commit-ci in https://github.com/roboflow/roboflow-python/pull/324 * Fix mutable default arguments by @tonylampada in https://github.com/roboflow/roboflow-python/pull/385 * fix: allow model.predict to handle numpy array inputs by @Anirudh2112 in https://github.com/roboflow/roboflow-python/pull/350 * Add methods for retrieving batches for a project by @shntu in https://github.com/roboflow/roboflow-python/pull/368 * multila | Low | 6/6/2025 |
| v1.1.65 | ## What's Changed * Upgrade devcontainer by @tonylampada in https://github.com/roboflow/roboflow-python/pull/382 * upload classification project with the CLI by @tonylampada in https://github.com/roboflow/roboflow-python/pull/383 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.64...v1.1.65 | Low | 5/30/2025 |
| v1.1.64 | ## What's Changed * Enhance error handling in model deployment URL retrieval by @lrosemberg in https://github.com/roboflow/roboflow-python/pull/379 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.63...v1.1.64 | Low | 5/14/2025 |
| v1.1.63 | ## What's Changed * Adds support for yolov7 model upload by @lrosemberg in https://github.com/roboflow/roboflow-python/pull/375 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.62...v1.1.63 | Low | 4/29/2025 |
| v1.1.62 | ## What's Changed * Normalize Windows style paths to parse folder by @iurisilvio in https://github.com/roboflow/roboflow-python/pull/376 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.61...v1.1.62 | Low | 4/28/2025 |
| v1.1.61 | ## What's Changed * Publish mkdocs in gh-pages when a new release is created by @lrosemberg in https://github.com/roboflow/roboflow-python/pull/373 * upload rfdetr by @tonylampada in https://github.com/roboflow/roboflow-python/pull/369 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.60...v1.1.61 | Low | 4/11/2025 |
| v1.1.60 | ## What's Changed * Fix handling of invalid annotation descriptions and add tests to dataset uploads by @shantanubala in https://github.com/roboflow/roboflow-python/pull/367 * dedicated deployment: add pause resume by @PacificDou in https://github.com/roboflow/roboflow-python/pull/371 * Extract the YOLOv12 state_dict before upload by @lrosemberg in https://github.com/roboflow/roboflow-python/pull/370 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.58...v1.1.6 | Low | 4/3/2025 |
| v1.1.58 | ## What's Changed * Support for more image types on upload by @joaomarcoscrs in https://github.com/roboflow/roboflow-python/pull/366 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.57...v1.1.58 | Low | 3/13/2025 |
| v1.1.57 | ## What's Changed * Adds support for YOLOv12 model upload by @lrosemberg in https://github.com/roboflow/roboflow-python/pull/361 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.56...v1.1.57 | Low | 3/12/2025 |
| v1.1.56 | ## What's Changed * Add a project method for creating annotation jobs by @shantanubala in https://github.com/roboflow/roboflow-python/pull/363 * Fix number of returns by @probicheaux in https://github.com/roboflow/roboflow-python/pull/364 ## New Contributors * @shantanubala made their first contribution in https://github.com/roboflow/roboflow-python/pull/363 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.55...v1.1.56 | Low | 3/11/2025 |
| v1.1.55 | ## What's Changed * Check that responsejson is instance of dict by @stellasphere in https://github.com/roboflow/roboflow-python/pull/342 * Fix retry arg and improve retry strategy by @iurisilvio in https://github.com/roboflow/roboflow-python/pull/362 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/1.1.54...v1.1.55 | Low | 3/10/2025 |
| 1.1.54 | ## What's Changed * Add support for the Image Details endpoint by @stellasphere in https://github.com/roboflow/roboflow-python/pull/344 * fix `download_dataset` does not respect `ROBOFLOW_API_KEY` by @SkalskiP in https://github.com/roboflow/roboflow-python/pull/359 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/1.1.53...1.1.54 | Low | 2/12/2025 |
| 1.1.53 | ## What's Changed * Model processor by @lrosemberg in https://github.com/roboflow/roboflow-python/pull/355 * Versionless model deploy/upload by @lrosemberg in https://github.com/roboflow/roboflow-python/pull/356 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.51...1.1.53 | Low | 1/31/2025 |
| v1.1.51-new | ## What's Changed * bump version by @SolomonLake in https://github.com/roboflow/roboflow-python/pull/353 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.51...v1.1.51-new | Low | 1/17/2025 |
| v1.1.51 | ## What's Changed * Only stretch image to resize if format is Stretch by @SolomonLake in https://github.com/roboflow/roboflow-python/pull/352 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.50...v1.1.51 | Low | 1/17/2025 |
| v1.1.50 | ## What's Changed * PaliGemma2 model upload support by @lrosemberg in https://github.com/roboflow/roboflow-python/pull/347 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.48...v1.1.50 | Low | 12/13/2024 |
| v1.1.49 | ## What's Changed * Add log support for dedicated deployment by @PacificDou in https://github.com/roboflow/roboflow-python/pull/335 * Allow null "updated" or "created" timestamps by @stellasphere in https://github.com/roboflow/roboflow-python/pull/338 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.48...v1.1.49 | Low | 11/5/2024 |
| v1.1.48 | ## What's Changed * Bump package version by @SolomonLake in https://github.com/roboflow/roboflow-python/pull/331 * fix_assert_model_version by @venkatram-dev in https://github.com/roboflow/roboflow-python/pull/325 * bugfix - downloading yolov8 files incorrectly amends data.yaml by @tonylampada in https://github.com/roboflow/roboflow-python/pull/334 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.47...v1.1.48 | Low | 10/15/2024 |
| v1.1.47-new | ## What's Changed * Fix check for has_model for model upload by @SolomonLake in https://github.com/roboflow/roboflow-python/pull/330 * Bump package version by @SolomonLake in https://github.com/roboflow/roboflow-python/pull/331 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.46...v1.1.47-new | Low | 10/2/2024 |
| v1.1.46 | ## What's Changed * fix_box_loss_error by @venkatram-dev in https://github.com/roboflow/roboflow-python/pull/313 * Bump mypy by @iurisilvio in https://github.com/roboflow/roboflow-python/pull/327 * Add yolov11 model deploy support by @SolomonLake in https://github.com/roboflow/roboflow-python/pull/329 ## New Contributors * @venkatram-dev made their first contribution in https://github.com/roboflow/roboflow-python/pull/313 **Full Changelog**: https://github.com/roboflow/roboflow-python/ | Low | 10/2/2024 |
| v1.1.45 | ## What's Changed * chore(pre_commit): ⬆ pre_commit autoupdate by @pre-commit-ci in https://github.com/roboflow/roboflow-python/pull/310 * Import paligemma format into text-image-pairs project by @tonylampada in https://github.com/roboflow/roboflow-python/pull/323 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.44...v1.1.45 | Low | 9/16/2024 |
| v1.1.44 | ## What's Changed * Feat: Multi-label support by @balthazur in https://github.com/roboflow/roboflow-python/pull/320 ## New Contributors * @balthazur made their first contribution in https://github.com/roboflow/roboflow-python/pull/320 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.43...v1.1.44 | Low | 8/28/2024 |
| v1.1.43 | ## What's Changed * Fix yolov10 version deploy by @grzegorz-roboflow in https://github.com/roboflow/roboflow-python/pull/319 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.42...v1.1.43 | Low | 8/26/2024 |
| v1.1.42 | ## What's Changed * poll video inference job fix by @PacificDou in https://github.com/roboflow/roboflow-python/pull/317 | Low | 8/23/2024 |
| v1.1.41 | ## What's Changed * Refactoring dataset upload by @lrosemberg in https://github.com/roboflow/roboflow-python/pull/312 * Dedicated deployment: update args; add roboflow --version and whoami by @PacificDou in https://github.com/roboflow/roboflow-python/pull/315 ## New Contributors * @lrosemberg made their first contribution in https://github.com/roboflow/roboflow-python/pull/312 **Full Changelog**: https://github.com/roboflow/roboflow-python/compare/v1.1.40...v1.1.41 | Low | 8/22/2024 |
| v1.1.40 | ## What's Changed * change domain name for dedicated deployment by @PacificDou in https://github.com/roboflow/roboflow-python/pull/307 * fix: raise UploadErrors for images and annotations by @caiquejjx in https://github.com/roboflow/roboflow-python/pull/266 * chore(pre_commit): ⬆ pre_commit autoupdate by @pre-commit-ci in https://github.com/roboflow/roboflow-python/pull/306 * Add args for dedicated deployment: duration, deletion_on_expiration by @PacificDou in https://github.com/roboflow/rob | Low | 8/16/2024 |
| v1.1.39 | ## What's Changed * ensure fps limit of 120 is enforced by @ryanjball in https://github.com/roboflow/roboflow-python/pull/299 | Low | 8/13/2024 |
| v1.1.38 | ## What's Changed * chore(pre_commit): ⬆ pre_commit autoupdate by @pre-commit-ci in https://github.com/roboflow/roboflow-python/pull/300 * add cli interface for dedicated deployment by @PacificDou in https://github.com/roboflow/roboflow-python/pull/301 * Change args for roboflow deployment by @PacificDou in https://github.com/roboflow/roboflow-python/pull/305 * chardet is not required for anything by @tonylampada in https://github.com/roboflow/roboflow-python/pull/304 ## New Contributor | Low | 8/13/2024 |
| v1.1.37 | ## What's Changed * Active Learning - Ability to change inference server path. by @reedajohns in https://github.com/roboflow/roboflow-python/pull/290 * Warn users about correct model type string for hf uploads by @probicheaux in https://github.com/roboflow/roboflow-python/pull/286 * Ban module level imports for `cv2`, `matplotlib` and `numpy` by @iurisilvio in https://github.com/roboflow/roboflow-python/pull/292 * bugfix: login breaks if ~/.config doesn't exist by @tonylampada in https://git | Low | 7/29/2024 |
| v1.1.36 | ## What's Changed - remove precedence loading api key from env variable / config when initializing api key https://github.com/roboflow/roboflow-python/pull/289 by @ryanjball | Low | 7/17/2024 |
