Skip to main content

Ultralytics logo

🔌 Ultralytics Platform API Python SDK

Ultralytics Discord Ultralytics Forums Ultralytics Reddit

Typed synchronous and asynchronous Python clients generated from the Ultralytics Platform API contract with Ultralytics OpenAPI. The interactive API reference documents every resource and includes Python examples.

🐍 Python

PyPI - Version Ultralytics Downloads PyPI - Python Version

Install the standalone ultralytics-platform package from PyPI in a Python >=3.11 environment. It has one lightweight runtime dependency (httpx) and does not install the larger ultralytics package:

uv pip install ultralytics-platform

Pass your API key directly as shown below. Alternatively, omit api_key to use ULTRALYTICS_API_KEY or the Platform key saved by yolo login. Both clients use explicit credentials first, then the environment, then saved settings. Pass api_key="" to disable authentication. yolo logout removes the saved key; it does not unset an environment variable. The SDK reads the existing Ultralytics settings directory, including YOLO_CONFIG_DIR and Linux XDG_CONFIG_HOME, without importing or installing ultralytics.

from ultralytics_platform import Platform

with Platform(api_key="YOUR_API_KEY") as client:
    response = client.datasets.list("your_username")

The asynchronous client exposes the same resource tree:

import asyncio

from ultralytics_platform import AsyncPlatform


async def main():
    async with AsyncPlatform(api_key="YOUR_API_KEY") as client:
        response = await client.datasets.list("your_username")


asyncio.run(main())

The package includes typed responses, multipart uploads, retries for temporary failures, structured API errors, custom HTTP clients, and context-manager cleanup.

Unified ul CLI

This package installs ul. Cloud commands work without the ML package; local commands lazily delegate to ultralytics, which must be installed in the same environment. Existing yolo behavior, including local training with ul:// inputs, is unchanged.

ul login API_KEY                # validate and save a Platform API key
ul logout                       # clear the saved key
ul train model=yolo26n.pt data=coco8.yaml epochs=100
ul cloud --help
ul cloud datasets images --help
ul cloud datasets               # list your datasets
ul cloud datasets dataset=coco8 # retrieve one dataset
ul cloud datasets images dataset=coco8 limit=20
ul cloud models project=p model=m
ul cloud training start model_id=MODEL_ID gpu_type=rtx-4090 train_args=@train.json
ul cloud models predict project=p model=m body='{"file":"@image.jpg","conf":0.25}'
ul cloud exports create project=p model=m format=onnx

Arguments use key=value with values attached to =, command names use hyphens (storage-integrations), and argument names match Python keywords (train_args, from_). A separate help, --help, or -h token shows help without making a request; literal help values use name=--help. Bare booleans mean true. Omitted values, False, 0, nullable None/null, and strings such as license=None remain distinct. Objects, arrays, and whole union bodies use JSON; @request.json reads JSON from a file and @- from stdin (one argument only). Binary fields require @path, including inside multipart body JSON.

A missing path owner defaults to the logged-in username through one account lookup, including for project operations; explicit owners win. Project identifiers (project) and destination owners are never inferred. Collection commands default to GET list, or matching GET retrieve when an item identifier is supplied; missing retrieval arguments fail instead of listing. Other resources show help. Writes require an explicit operation. Each command invokes one SDK operation, plus any owner lookup, and prints the complete JSON, text, or binary response. Pagination is explicit; the SDK owns serialization, credentials, transport, and retries. Types and required arguments come from SDK signatures; the API validates nested JSON.

Cloud jobs may incur charges. Commands submit, inspect, or cancel one operation and exit, without polling or downloading artifacts. Success means the API call succeeded, not that a job finished. Exit codes: 0 success, 1 API/network errors (including nested validation), 2 local input errors, 130 interruption. Interrupting the CLI does not cancel a submitted job; use its cancellation operation.

Credentials prefer ULTRALYTICS_API_KEY, then shared YOLO settings. Login validates before saving; logout leaves environment variables unchanged. ULTRALYTICS_PLATFORM_URL selects another API origin. On systems with an existing Unix ul command, activate your Python environment or use python -m ultralytics_platform.cli.

🧩 One Contract, Typed Python

The Ultralytics Platform API contract is the single source of truth for the generated client:

OpenAPI contract
    └── Python SDK # ultralytics-platform

The source repository pins the consumed contract and generated output so API changes remain deterministic and reviewable. Generated SDK files should never be edited manually; update the contract, consumer configuration, package README source, or generator and regenerate.

🛠️ Validation

CI regenerates the Python SDK to detect contract mismatch or generated drift. It also formats and lints Python, compiles the package, builds its wheel, installs it through the package boundary, and exercises representative synchronous and asynchronous requests.

💡 Contribute

Ultralytics thrives on community collaboration, and we deeply value your contributions! Please see our Contributing Guide for details on how you can get involved. We also encourage you to share your feedback through our Survey. A huge thank you 🙏 to all our contributors!

API shape changes belong in the service OpenAPI contract; generated files should not be edited directly.

Ultralytics open-source contributors

📄 License

📫 Contact

For bug reports or feature suggestions related to this SDK, please submit an issue via GitHub Issues. Join our Discord, Reddit, or Community Forums for discussions and support!


Ultralytics GitHub space Ultralytics LinkedIn space Ultralytics Twitter space Ultralytics YouTube space Ultralytics TikTok space Ultralytics BiliBili space Ultralytics Discord

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ultralytics_platform-0.1.41.tar.gz (65.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ultralytics_platform-0.1.41-py3-none-any.whl (77.4 kB view details)

Uploaded Python 3

File details

Details for the file ultralytics_platform-0.1.41.tar.gz.

File metadata

  • Download URL: ultralytics_platform-0.1.41.tar.gz
  • Upload date:
  • Size: 65.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ultralytics_platform-0.1.41.tar.gz
Algorithm Hash digest
SHA256 1d33dc946bf936498fd2f465f5f37e995d41283a47fb8a152125d05e6376665e
MD5 e717740fbdf7bb5c6ffc942486c8f4f1
BLAKE2b-256 b9c50e4a3123a6c0b6d8038e5e9b9f8c41b140891a008d1fadb994c8d949a61d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultralytics_platform-0.1.41.tar.gz:

Publisher: publish.yml on ultralytics/sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultralytics_platform-0.1.41-py3-none-any.whl.

File metadata

File hashes

Hashes for ultralytics_platform-0.1.41-py3-none-any.whl
Algorithm Hash digest
SHA256 c49e7f0370148e132919fa3c10783601c191b79afc0dcda71e20aa69b0bf2bd9
MD5 88b331bd7e27a19bc80b906692b3588a
BLAKE2b-256 baa10a0a9c31c1b666d4bc7826a96cdee65c2c99b0b75f8f5976c96f0968f5db

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultralytics_platform-0.1.41-py3-none-any.whl:

Publisher: publish.yml on ultralytics/sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.48

2 files

0.1.46

2 files

0.1.45

2 files

0.1.44

2 files

This release

0.1.41 This release

2 files

0.1.40

2 files

0.1.39

2 files

0.1.38

2 files

0.1.35

2 files

0.1.34

2 files

0.1.33

2 files

0.1.32

2 files

0.1.31

2 files

0.1.29

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.16

2 files

0.1.14

2 files

0.1.13

2 files

0.1.11

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page