REST APIリファレンス#
Ultralytics Platform は、データセット、画像、プロジェクト、モデル、トレーニング、エクスポート、デプロイメントにプログラムからアクセスするためのREST APIを提供します。

# List the datasets owned by a workspace
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets/YOUR_USERNAME以下の各エンドポイントには、このリファレンスと同じコントラクトから生成されたultralytics-platform SDKによるclient.<resource>.<method>(...)呼び出しが記載されています。
このページでは、APIを案内します。生成された常に最新のリファレンスはplatform.ultralytics.com/api/docsにあり、それを支える機械可読なOpenAPI 3.2ドキュメントはplatform.ultralytics.com/openapi.jsonで公開されています。どちらもサーバー側のコントラクトから直接生成されるため、このページとスキーマの内容が異なる場合は、これらが正しい情報源となります。
API概要#
APIは、Platformの主要リソースを中心に構成されています。
graph LR
A[API Key]:::start --> B[Datasets]:::proc
A --> C[Projects]:::proc
B -->|images| G[Images]:::proc
C -->|contains| D[Models]:::proc
B -->|train on| D
D -->|deploy| E[Deployments]:::proc
D -->|export| F[Exports]:::proc
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff| リソース | 説明 | 主な操作 |
|---|---|---|
| データセット | ラベル付き画像コレクション | CRUD、取り込み、バージョン、クラス、分割、クローン |
| 画像 | 個別の画像とラベル | 読み取り、アノテーション、分割間の移動、削除、自動アノテーション |
| プロジェクト | モデルのワークスペース | CRUD、クローン |
| モデル | トレーニング済みチェックポイント | CRUD、推論、ダウンロード、クローン、トレーニングステータス |
| トレーニング | クラウドGPUトレーニングジョブ | GPUの可用性、開始、進行状況、キャンセル |
| エクスポート | 形式変換ジョブ | 作成、一覧表示、ステータス確認、キャンセル |
| デプロイメント | 専用推論エンドポイント | 作成、開始/停止/置換、推論、メトリクス、ログ |
| ゴミ箱 | 論理削除されたリソース | 一覧表示、復元、完全削除 |
| ストレージ | クラウドストレージ連携 | 接続、検出、参照、切断 |
| アカウント | プラン、クレジット、ストレージ、プロフィール | アカウント概要、APIキー、ストレージ使用量、ユーザー検索 |
| 請求 | プラン使用量と台帳 | 使用量概要、トランザクション |
| 探索 | 公開コンテンツ検索 | プロジェクトとデータセットの検索 |
認証#
ほとんどのエンドポイントではAPIキーが必要です。公開データセット、プロジェクト、モデルの読み取り、公開データセット画像の一覧表示、公開モデルでの推論実行、Exploreでの検索など、公開コンテンツを提供するエンドポイントでは匿名リクエストも受け付け、キーが指定されると追加の結果を返します。
APIキーの取得#
Settings>API Keysに移動しますCreate Keyをクリックします- 生成されたキーをコピーします
詳しい手順については、APIキーを参照してください。
Authorizationヘッダー#
APIキーをBearerトークンとして含めます。
Authorization: Bearer YOUR_API_KEYAPIキーは、リテラルなプレフィックスul_の後に40個の16進数文字が続く形式で、合計43文字です(例:ul_a1b2c3d4e5f6789012345678901234567890abcd)。ヘッダーがない場合、キーの形式が不正な場合、またはキーが失効している場合、リクエストは401を返します。キーは秘密にし、決してバージョン管理システムにコミットしたり、公開したりしないでください。
例#
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/account/summaryベースURL#
すべてのAPIエンドポイントでは、次を使用します。
https://platform.ultralytics.com/apiリソースパス#
リソースには、データベースIDではなく、PlatformのURLに表示される人間が読みやすい名前を使用してアクセスします。
| リソース | パス | 例 |
|---|---|---|
| データセット | /api/datasets/{owner}/{dataset} | /api/datasets/acme-vision/warehouse |
| プロジェクト | /api/projects/{owner}/{project} | /api/projects/acme-vision/inspection |
| モデル | /api/models/{owner}/{project}/{model} | /api/models/acme-vision/inspection/v3 |
| デプロイ | /api/deployments/{owner}/{deployment} | /api/deployments/acme-vision/edge-1 |
| 画像 | /api/images/{imageId} | /api/images/65f1c0a2b3d4e5f601234567 |
{owner}は、個人のユーザー名またはチームのワークスペースハンドルです。4~32文字で、小文字の英数字を使用し、セグメント間には単一のハイフンを置きます。{dataset}、{project}、{model}、{deployment}は、同じ小文字とハイフンのパターンに従い、最大128文字です。{imageId}と{exportId}は、APIが返す24文字の16進数IDです。PATCHを通じてリソースの名前を変更すると、表示名のnameとURL名が同時に変更され、レスポンスには現在のURL名が返されるため、その名前を引き続き使用できます。
ownerクエリパラメーターはありません。ワークスペーススコープのパスには所有者がパス内に含まれ、アカウントスコープのエンドポイント(/api/account/summary、/api/api-keys、/api/storage、/api/billing/*、/api/trash、/api/integrations/buckets)は、APIキーを発行したワークスペースを操作します。チームのワークスペースを操作するには、そのワークスペースで作成したAPIキーを使用してください。
レート制限#
APIは、APIキーごとにスライディングウィンドウ方式の制限を適用します。各ルートは1つのカテゴリに分類され、カテゴリごとに独立したカウンターがあるため、predictリクエストを20回実行してもデフォルトの許容量は消費されません。
| カテゴリー | 上限 | 適用対象 |
|---|---|---|
| デフォルト | 100リクエスト/分 | 以下に記載されていないすべてのルート |
| トレーニング | 10リクエスト/分 | POST /api/training/start |
| アップロード | 10リクエスト/分 | 署名付きアップロードURL、アップロード完了、データセットの取り込み |
| 予測 | 20リクエスト/分 | Platform APIルート経由のモデルおよびデプロイメント推論 |
| エクスポート | 20リクエスト/分 | モデルエクスポートおよびデータセットのエクスポート/バージョンのルート(デフォルトの制限を使用するデータセットのエクスポート(GET)の読み取りを除く) |
| Download | 30リクエスト/分 | モデルファイルのダウンロード |
| 変更 | 10リクエスト/分 | APIキーの一覧表示、クラウドストレージの接続または検出、デプロイメントのPATCH操作 |
| Hydrate | 20リクエスト/分 | POST /api/datasets/{owner}/{dataset}/images(選択された画像セットの取得)および GET /api/images/{imageId}/similar |
| クラスタリング | 10リクエスト/分 | GET /api/datasets/{owner}/{dataset}/images/clustering および GET /api/models/{owner}/{project}/{model}/similar-images |
請求のチェックアウトやチーム管理など、ブラウザー専用のPlatformルートには独自の制限があり、APIキートラフィックには適用されません。
スロットリングが発生すると、APIはヘッダーとJSON本文の両方に429を含めて返します。
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z{
"error": "Rate limit exceeded",
"retryAfter": 12,
"resetAt": "2026-02-21T12:34:56.000Z"
}専用エンドポイント(無制限)#
専用エンドポイントは、デプロイメント固有のserviceUrlを直接呼び出す場合(例:https://predict-abc123.run.app/predict)、Platform APIキーのレート制限の対象外です。その場合のスループットは、デプロイされたサービスの構成によって決まります。
429を受信した場合は、再試行する前にRetry-After秒間(またはX-RateLimit-Resetまで)待機してください。指数バックオフの実装については、レート制限FAQを参照してください。
レスポンス形式#
成功レスポンス#
レスポンスは、リソース固有のフィールドを持つJSONオブジェクトです。汎用的なエンベロープはありません。一覧エンドポイントは、件数とともに名前付きコレクションを返し、変更操作は変更された識別子を返します。
{
"datasets": [{ "id": "65f1c0a2b3d4e5f601234567", "owner": "acme-vision", "dataset": "warehouse" }],
"total": 1,
"region": "us"
}データを含むレスポンスには、region(us、eu、またはap)も含まれます。これは、そのワークスペースのストレージリージョンです。
エラーレスポンス#
すべてのエラーレスポンスは、errorメッセージを含むJSONオブジェクトです。
{
"error": "Dataset not found"
}| HTTPステータス | 意味 |
|---|---|
200 | 成功 |
201 | 作成日時 |
202 | 受け付け済み、処理は非同期で継続中 |
400 | パス、クエリ、またはリクエスト本文が無効です |
401 | 認証情報がないか、無効です |
402 | クレジットが不足しています(トレーニング) |
403 | 権限、プラン、またはクォータが不足しています |
404 | リソースが見つかりません |
409 | 現在の状態と競合しています(重複した名前、実行中のジョブ) |
413 | Prediction の入力が大きすぎます |
422 | モデルのクラスがデータセットと一致しません(自動アノテーション) |
429 | レート制限を超えました |
500 | サーバーエラー |
502 | アップストリームプロバイダーまたはサービス呼び出しに失敗しました |
503 | 依存サービスが一時的に利用できません |
ページネーション#
ページネーションの方式はコレクションによって異なります:
| 方式 | エンドポイント | パラメーター数 |
|---|---|---|
| Limit のみ | データセット、プロジェクト、モデル、エクスポート、デプロイメントのリスト | limit |
| Offset と Limit | データセット画像、画像クラスタリング、Explore 検索 | レスポンスに offset、limit、および hasMore |
| Cursor | データセット画像(大規模データセット) | cursor、includeTotal、および nextCursor |
| ページ番号 | ゴミ箱 | page、limit、および totalPages |
| 不透明なページトークン | デプロイメントログ | pageToken、および nextPageToken |
データセット API#
YOLO モデルのトレーニングに使用するラベル付き画像データセットを作成、参照、管理します。データセットのドキュメントをご覧ください。
データセットの一覧表示#
GET /api/datasets/{owner}Python SDK: client.datasets.list(owner)
所有者のパブリックデータセットを返します。キーにそのワークスペースを表示する権限がある場合は、プライベートデータセットも返します。
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
limit | int | 返すデータセットの最大数(デフォルト:1000、最大:1000) |
includeSamples | boolean | サンプル画像のプレビューを含める(デフォルト:true) |
includeImageUrls | boolean | フルサイズのサンプル画像フォールバック URL を含める(デフォルト:false) |
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets/acme-vision?limit=10&includeSamples=false"レスポンス:
{
"datasets": [
{
"id": "65f1c0a2b3d4e5f601234567",
"owner": "acme-vision",
"dataset": "warehouse",
"name": "Warehouse",
"task": "detect",
"visibility": "private",
"imageCount": 1000,
"classCount": 2,
"classNames": ["person", "forklift"],
"splits": { "train": 800, "val": 200, "test": 0, "labeled": 1000 },
"annotationCount": 5400,
"starCount": 3,
"isStarred": false,
"status": "ready",
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-01-16T08:30:00Z"
}
],
"total": 1,
"region": "us"
}データセットの取得#
GET /api/datasets/{owner}/{dataset}Python SDK: client.datasets.retrieve(owner, dataset)
dataset キーの下に、classNames、splits、versions、source、およびユーザー定義の metadata オブジェクトを含む完全なデータセットオブジェクトを返します。
データセットの作成#
POST /api/datasetsPython SDK: client.datasets.create(dataset=..., name=...)
Body:
{
"dataset": "warehouse",
"name": "Warehouse",
"task": "detect",
"description": "Forklift and pedestrian safety dataset",
"classNames": ["person", "forklift"],
"visibility": "private",
"metadata": { "location": "factory-1", "reviewed": true },
"owner": "acme-vision"
}| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
dataset | string | はい | Platform URL で使用するデータセット名(小文字、ハイフン区切り、最大 128 文字) |
name | string | はい | 表示名(最大 100 文字) |
description | string | いいえ | 説明(最大 1000 文字) |
task | string | いいえ | タスクタイプ(デフォルト:detect) |
classNames | 配列 | いいえ | インデックス順のクラス名(最大 25,000) |
format | string | いいえ | アノテーション形式:yolo(デフォルト)、coco、raw、ndjson |
visibility | string | いいえ | publicまたはprivate |
tags | 配列 | いいえ | 各 50 文字までのタグを最大 50 個 |
license | string | いいえ | データセットライセンス識別子 |
metadata | オブジェクト | いいえ | カスタム JSON メタデータ |
owner | string | いいえ | チームワークスペースのハンドル。デフォルトは個人ワークスペースです |
requireExactSlug | boolean | いいえ | warehouse-2 のようなサフィックス付きの名前を作成する代わりに、dataset がすでに使用されている場合に 409 を返します(デフォルトは false) |
レスポンスは実際に作成された dataset のスラッグを返すため、requireExactSlug を設定しない限り、アップロードする前に読み返してください。
データセットの作成または更新時に有効な task の値:detect、segment、semantic、depth、classify、pose、および obb。Depth データセットにはクラスがありません。
レスポンス(201):
{
"id": "65f1c0a2b3d4e5f601234567",
"owner": "acme-vision",
"dataset": "warehouse",
"region": "us"
}データセットの更新#
PATCH /api/datasets/{owner}/{dataset}Python SDK: client.datasets.update(owner, dataset)
Body(部分更新):
{
"name": "Warehouse Safety",
"description": "New description",
"visibility": "public",
"metadata": { "location": "factory-2", "reviewed": true }
}受け付けるフィールド:name、description、visibility、metadata、tags、classNames、classColors、format、task、license、iconColor、iconLetter、および starred。カスタムメタデータをクリアするには、空の metadata オブジェクト({})を送信します。メタデータキーは 128 文字、シリアライズされたオブジェクトは 500,000 文字に制限されます。
レスポンス:
{
"success": true,
"dataset": "warehouse-safety"
}名前を変更すると URL 名も変更されるため、以降のリクエストでは返された dataset の値を使用してください。
データセットの削除#
DELETE /api/datasets/{owner}/{dataset}Python SDK: client.datasets.delete(owner, dataset)
データセットをゴミ箱に移動します。30 日間は復元可能です。
データセットのクローン#
POST /api/datasets/{owner}/{dataset}/clonePython SDK: client.datasets.clone(owner, dataset)
アクセス可能なデータセットを、その画像とラベルとともに、個人ワークスペースまたはチームワークスペースにコピーします。
Optional body(すべてのフィールドが任意):
{
"dataset": "warehouse-copy",
"name": "Warehouse Copy",
"description": "Cloned for experimentation",
"visibility": "private",
"license": "CC-BY-4.0",
"owner": "acme-vision"
}レスポンス(201): id、owner、dataset、name、imageCount、classCount、および region。接続されたストレージソースを使用するデータセットは、ファイルがコピーされないため 409 を返します。
データセットエクスポートのダウンロード#
GET /api/datasets/{owner}/{dataset}/exportPython SDK: client.datasets.export(owner, dataset)
署名付き NDJSON ダウンロード URL を返します。v を省略すると、データセットの現在の状態をエクスポートします。生成以降に変更がない場合は、キャッシュされたエクスポートを再利用します。
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
v | integer | 保存されたバージョン番号(1 始まり)。現在のデータセットの場合は省略します。 |
レスポンス:
{
"downloadUrl": "https://storage.googleapis.com/...&signature=...",
"cached": true
}特定のバージョンをリクエストすると、cached の代わりに downloadUrl と version を返します。
データセットバージョンの作成#
POST /api/datasets/{owner}/{dataset}/exportPython SDK: client.datasets.create_export(owner, dataset)
データセットの不変の番号付きスナップショットを作成し、その NDJSON エクスポートを保存します。エディターアクセスが必要です。
Body(任意):
{
"description": "Added 500 training images"
}レスポンス:
{
"version": 3,
"downloadUrl": "https://storage.googleapis.com/...&signature=...",
"reused": false
}データセットが前のバージョンから変更されておらず、そのスナップショットが代わりに返された場合、reused は true です。
バージョン説明の更新#
PATCH /api/datasets/{owner}/{dataset}/exportPython SDK: client.datasets.update_export(owner, dataset, version=..., description=...)
Body:
{
"version": 2,
"description": "Fixed mislabeled classes"
}レスポンス: {"ok": true}
データセットバージョンの復元#
POST /api/datasets/{owner}/{dataset}/restorePython SDK: client.datasets.restore(owner, dataset, version=...)
画像バイトをコピーせずに、保存されたバージョンから画像、アノテーション、クラスを再構築します。
Body:
{
"version": 2
}レスポンス: {"version": 2, "imageCount": 1000}
データセット統計の取得#
GET /api/datasets/{owner}/{dataset}/class-statsPython SDK: client.datasets.class_stats(owner, dataset)
クラスごとのアノテーション数、画像とアノテーションのヒストグラム、およびヒートマップを返します。大規模データセットはサンプリングされ、その場合は sampleSize に処理に使用された画像数が示されます。
レスポンス(抜粋):
{
"classes": [{ "classId": 0, "count": 1500, "imageCount": 450 }],
"imageStats": {
"widthHistogram": [{ "bin": 640, "count": 120, "size": 1 }],
"heightHistogram": [{ "bin": 480, "count": 95, "size": 1 }],
"pointsHistogram": [{ "bin": 4, "count": 200, "size": 1 }],
"formatDistribution": { "jpg": 900, "png": 100 },
"fileSizeHistogram": [{ "bin": 250000, "count": 300, "size": 50000 }],
"objectsPerImageHistogram": [{ "bin": 5, "count": 210, "size": 1 }],
"bboxWidthHistogram": [{ "bin": 120, "count": 340, "size": 20 }],
"bboxHeightHistogram": [{ "bin": 90, "count": 300, "size": 20 }]
},
"locationHeatmap": {
"bins": [
[5, 10],
[8, 3]
],
"maxCount": 50
},
"dimensionHeatmap": {
"bins": [
[2, 5],
[3, 1]
],
"maxCount": 12,
"minWidth": 10,
"maxWidth": 1920,
"minHeight": 10,
"maxHeight": 1080
},
"classNames": ["person", "forklift"],
"cached": true,
"sampleSize": null
}クラスの管理#
クラスのマージ(アノテーションを対象クラスに再割り当てしてから、元のクラスを削除します):
POST /api/datasets/{owner}/{dataset}/classes/mergePython SDK: client.datasets.merge_classes(owner, dataset, source_class_ids=..., target_class_id=...)
{
"sourceClassIds": [2, 4],
"targetClassId": 1
}クラスの削除(クラスのアノテーションが削除され、残りのクラス ID は繰り上がります):
POST /api/datasets/{owner}/{dataset}/classes/deletePython SDK: client.datasets.delete_classes(owner, dataset, class_ids=...)
{
"classIds": [2, 4]
}両方の操作は、success、更新された classNames と classColors、および変更内容の概要(mergedClassIds と targetClassId、または deletedClassIds と deletedAnnotations)を返します。
マージまたは削除後は残りの ID が変わるため、これらの操作は冪等ではありません。別のクラス操作を実行する前に、データセットを再取得して現在のクラスインデックスを取得してください。
分割の再配分#
POST /api/datasets/{owner}/{dataset}/splits/redistributePython SDK: client.datasets.redistribute_splits(owner, dataset, train=..., val=..., test=...)
画像を分割間でランダムに再割り当てします。3 つの割合の合計は 100 である必要があります。
{
"train": 80,
"val": 20,
"test": 0
}レスポンス: success、結果として得られる splits の件数、および modified(移動した画像数)。
データセット Embeddings#
GET /api/datasets/{owner}/{dataset}/embeddings
POST /api/datasets/{owner}/{dataset}/embeddings
DELETE /api/datasets/{owner}/{dataset}/embeddingsPython SDK: client.datasets.embeddings(owner, dataset)、client.datasets.create_embeddings(owner, dataset)、client.datasets.delete_embeddings(owner, dataset)
GET は分析概要(analyzedAt、embeddingsCount、latestImageAt、activeJob)を返します。POST は Embedding 分析をキューに追加し、jobId を含む 202 を返します。DELETE はアクティブなジョブをキャンセルし、キャンセルされたジョブ ID または null を返します。
画像クラスタリング#
GET /api/datasets/{owner}/{dataset}/images/clusteringPython SDK: client.datasets.clustering(owner, dataset)
完了した分析の UMAP 2D レイアウトを返します。offset と limit(デフォルトおよび最大 50,000)によるページネーションに対応しています。各エントリには id、umapX、umapY、split、classIds、width、height、bytes、labelCount、および missing が含まれます。
データセットでトレーニングされたモデルの一覧表示#
GET /api/datasets/{owner}/{dataset}/modelsPython SDK: client.datasets.models(owner, dataset)
レスポンス:
{
"models": [
{
"id": "65f1c0a2b3d4e5f601234599",
"owner": "acme-vision",
"project": "inspection",
"model": "v3",
"name": "v3",
"status": "completed",
"task": "detect",
"epochs": 100,
"bestEpoch": 87,
"metrics": { "mAP50": 0.85, "mAP50-95": 0.72, "precision": 0.88, "recall": 0.81 },
"startedAt": "2026-01-14T22:00:00Z",
"completedAt": "2026-01-15T10:00:00Z",
"createdAt": "2026-01-14T21:55:00Z"
}
],
"count": 1
}データセット画像の一覧表示#
GET /api/datasets/{owner}/{dataset}/imagesPython SDK: client.datasets.images(owner, dataset)
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
limit | int | 返す画像の最大数(デフォルト:50、最大:5000) |
offset | int | スキップする画像数(デフォルト:0) |
cursor | string | カーソルページネーション用の前ページの最後の画像 ID |
includeTotal | boolean | 一致する総数を含める(デフォルト:true) |
split | string | 分割でフィルター:train、val、test |
hasLabel | boolean | アノテーション状態でフィルター |
hasError | boolean | 処理エラー状態でフィルター |
classIds | string | カンマ区切りのクラス ID。いずれかを含む画像を返します |
search | string | ファイル名とカスタムメタデータの部分文字列一致(最大 200 文字) |
sort | string | newest(デフォルト)、oldest、name-asc、name-desc、height-asc、height-desc、width-asc、width-desc、size-asc、size-desc、labels-asc、labels-desc |
includeThumbnails | boolean | 署名付きサムネイルURLを含めます(デフォルト: true) |
includeImageUrls | boolean | 署名付きフルサイズ画像URLを含めます(デフォルト: false) |
includeLabels | boolean | 上限付きのプレビューアノテーションを含めます(デフォルト: false) |
レスポンス:
{
"images": [
{
"id": "65f1c0a2b3d4e5f601234567",
"hash": "9f2c1d4b6a8e0f3c5d7b9a1e2f4c6d8b",
"ext": "jpg",
"name": "aisle-04.jpg",
"thumbnailUrl": "https://storage.googleapis.com/...&signature=...",
"width": 1920,
"height": 1080,
"split": "train",
"labelCount": 6,
"bytes": 284213,
"error": null
}
],
"total": 1000,
"hasMore": true,
"classes": ["person", "forklift"],
"errorCount": 0,
"nextCursor": "65f1c0a2b3d4e5f601234567"
}選択した画像を取得#
POST /api/datasets/{owner}/{dataset}/imagesPython SDK: client.datasets.selected_images(owner, dataset, image_ids=...)
指定された画像IDが最大1,000件の場合に、同じ画像形式を返します。また、list操作と同じフィルターおよびURLクエリパラメーターを受け付けます
{
"imageIds": ["65f1c0a2b3d4e5f601234567", "65f1c0a2b3d4e5f601234568"]
}データセットデータを取り込む#
POST /api/datasets/{owner}/{dataset}/ingestPython SDK: client.datasets.ingest(owner, dataset, body=...)
完了したアップロード、リモートアーカイブ、または接続済みストレージソースを既存のデータセットに取り込みます。ソースを1つだけ指定してください:
| 項目 | 型 | 説明 |
|---|---|---|
sessionId | string | POST /api/upload/signed-urlからのアップロードセッション(完了済み) |
sourceUrl | string | ZIP、TAR、TAR.GZ、TGZ、またはNDJSONファイルのパブリックHTTPまたはHTTPS URL(最大4,096文字) |
reference | オブジェクト | 接続済みソース: クラウドストレージ(provider: "cloud"、integrationId、target、prefix)またはオンプレミス(provider: "local"、keyId、root、prefix) |
targetSplit | string | train、val、またはtest。アーカイブのsplit構造を上書きします |
conflictPolicy | string | ファイル名またはコンテンツの競合に対するskip、keep_both、またはreplace |
classMapping | オブジェクト | 入力クラス名をクラスインデックス、既存または新規のクラス名、またはスキップするnullにマッピングします |
imageMetadata | オブジェクト | 各画像のアーカイブ相対パスまたはNDJSONのfile値をキーとするカスタムメタデータ |
アップロードセッションは、POST /api/upload/signed-urlに渡されたassetIdによってデータセットに紐付けられます。取り込みでは、別のデータセットに属するセッションは拒否されます。
Body(アップロード済みアーカイブ):
{
"sessionId": "session_abc123",
"targetSplit": "train"
}Body(リモートアーカイブまたはNDJSON):
{
"sourceUrl": "https://example.com/my-dataset.zip"
}Body(後続の取り込みでラベルをインポートする場合):
{
"sessionId": "session_abc123",
"classMapping": { "person": 0, "automobile": "forklift", "background": null }
}Body(画像ごとのメタデータを付加する場合):
{
"sessionId": "session_abc123",
"imageMetadata": {
"airbus-wing.jpg": { "aircraft": { "family": "A350" }, "inspectionStatus": "reviewed" },
"images/tail.jpg": { "aircraft": { "family": "A320" }, "inspectionSeverity": 2 }
}
}メタデータキーは、フォルダーを含め、アーカイブ内の正規化されたパスと一致する必要があります。NDJSONインポートでは、各レコードに独自のmetadataオブジェクトを含めることができ、一致するimageMetadataエントリより優先されます。アーカイブパスは1,024文字、トップレベルのメタデータキーは128文字に制限されます。また、各メタデータオブジェクトとimageMetadataマップ全体は、シリアライズ後で500,000文字に制限されます。
最初の取り込みでは、アーカイブからクラスが自動的に作成されます。後続の取り込みでは、classMappingに含まれていないアーカイブクラスは、既存のデータセットクラスと大文字と小文字を区別せずに照合されます。ラベルがスキップされるのは、nullに明示的にマッピングされたクラス、または一致する既存クラスがないクラスの場合のみです。
レスポンス(201):
{
"jobId": "65f1c0a2b3d4e5f6012345aa",
"status": "queued"
}graph LR
A[POST /api/datasets]:::start --> B[POST /api/upload/signed-url]:::proc
B --> C[PUT archive to signed URL]:::proc
C --> D[POST /api/upload/complete]:::proc
D --> E["POST /api/datasets/{owner}/{dataset}/ingest"]:::proc
E --> F[Process archive]:::proc
F --> G[Dataset ready]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fffPythonでメタデータ付きの画像を1枚アップロードする
同じコードで複数の画像を処理できます。ZIPにファイルを追加し、imageMetadataに対応するエントリを追加してください。
import io
import zipfile
from pathlib import Path
import requests
api = "https://platform.ultralytics.com/api"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
owner, dataset = "acme-vision", "warehouse"
dataset_id = "65f1c0a2b3d4e5f601234567" # id returned by POST /api/datasets
image_path = Path("airbus-wing.jpg")
archive = io.BytesIO()
with zipfile.ZipFile(archive, "w", zipfile.ZIP_DEFLATED) as zf:
zf.write(image_path, image_path.name)
data = archive.getvalue()
signed = requests.post(
f"{api}/upload/signed-url",
headers=headers,
json={
"assetType": "datasets",
"assetId": dataset_id,
"filename": "images.zip",
"contentType": "application/zip",
"totalBytes": len(data),
},
)
signed.raise_for_status()
upload = signed.json()
requests.put(upload["uploadUrl"], headers={"Content-Type": "application/zip"}, data=data).raise_for_status()
requests.post(
f"{api}/upload/complete",
headers=headers,
json={"sessionId": upload["sessionId"]},
).raise_for_status()
ingest = requests.post(
f"{api}/datasets/{owner}/{dataset}/ingest",
headers=headers,
json={
"sessionId": upload["sessionId"],
"imageMetadata": {
"airbus-wing.jpg": {
"aircraft": {"family": "A350", "section": "wing"},
"inspectionStatus": "reviewed",
}
},
},
)
ingest.raise_for_status()
print(ingest.json())画像API#
24文字の画像IDを使用して、データセット画像の確認、アノテーション、移動、削除を行います。アノテーションのドキュメントを参照してください。
画像を取得#
GET /api/images/{imageId}Python SDK: client.images.retrieve(image_id)
metadata(カスタム、ユーザー定義)、properties(ファイル名、ハッシュ、サイズ、split、件数、タイムスタンプ)、labels、およびデータセットのclassNamesを返します。
画像を更新#
PATCH /api/images/{imageId}Python SDK: client.images.update(image_id, body=...)
アノテーションまたはカスタムメタデータのいずれか一方を置き換えます。2つの形式のうち一方だけを送信し、両方は送信しないでください。
Body(アノテーション):
{
"labels": [
{ "classId": 0, "bbox": [0.5, 0.5, 0.2, 0.3] },
{ "classId": 1, "segments": [0.1, 0.2, 0.3, 0.2, 0.2, 0.4] }
]
}Body(メタデータ):
{
"metadata": { "location": "strasbourg", "reviewed": true }
}ラベルの座標には、0~1のYOLO正規化値を使用します。バウンディングボックスには[x_center, y_center, width, height]を使用します。セグメンテーションラベルには、ポリゴン頂点を平坦化したリスト[x1, y1, x2, y2, ...]であるsegmentsを使用します。Poseラベルには、1つの一貫したフラット形式のkeypointsを使用します。これは、ペアの[x1, y1, x2, y2, ...]またはトリプルの[x1, y1, v1, x2, y2, v2, ...]で、可視性には通常0、1、または2を使用します。有向バウンディングボックスには、四隅のobbを使用します。保存される座標は小数点以下5桁に丸められ、1枚の画像に付けられるアノテーションは最大10,000件です。
画像を削除#
DELETE /api/images/{imageId}Python SDK: client.images.delete(image_id)
1枚の画像とそのアノテーションを完全に削除します。
画像を自動アノテーション#
POST /api/images/{imageId}/predictPython SDK: client.images.predict(image_id, model_id=...)
画像に対してYOLO推論を実行し、予測されたアノテーションを返します。アノテーションは保存されないため、内容に問題がなければPATCH /api/images/{imageId}を使用して結果を書き戻してください。
| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
modelId | string | はい | 完全修飾モデルURI、ul://{owner}/{project}/{model} |
confidence | float | いいえ | 信頼度しきい値、0.01~1.0(デフォルト: 0.25) |
iou | float | いいえ | non-maximum suppressionのIoUしきい値、0.0~0.95(デフォルト: 0.7) |
Response: success、predictions(アノテーションオブジェクト)、modelUsed、およびinferenceTime。クラスがデータセットと一致しないモデルの場合は、422を返します。
データセットを自動アノテーションする#
POST /api/datasets/{owner}/{dataset}/predict/batchPython SDK: client.datasets.create_batch(owner, dataset, model_id=...)
データセットバージョンを保存し、モデルを使用してデータセットの未アノテーション画像をラベル付けする実行をキューに入れて 202 を返します。
リクエストボディには、単一画像のエンドポイントと同じ modelId、confidence、iou の各フィールドに加え、すでにラベルが付いている画像もアノテーションするための includeAnnotated(デフォルトは false)、およびモデルクラスごとのデータセットクラスインデックスを指定するオプショナルな classMapping 配列(またはそれをスキップする null)を指定します。既存のラベルが変更されることはなく、実行の課金対象は実際に処理された画像のみです。
402 は残高の見積もり超過、409 はデータセットの未準備、アノテーション対象画像の不在、または実行の重複、422 はデータセットにクラスがないことを示しており、このエンドポイントを呼び出す前に classes endpoint でクラスを作成してください。これはアプリのクラスのマッピングステップが実行開始前に行う処理と同じです。
同じパス(client.datasets.batch(owner, dataset))に対する GET は、実行中の処理とその進捗、または破棄されるまでの直近の完了済み実行を返し、DELETE(client.datasets.delete_batch(owner, dataset))は実行中の処理をキャンセルするか、課金を確定させて完了済みサマリーを破棄します。
画像を一括移動#
PATCH /api/images/bulkPython SDK: client.images.update_bulk(image_ids=..., split=...)
最大1,000枚の画像を、あるデータセットから別のsplitに移動します。
{
"imageIds": ["65f1c0a2b3d4e5f601234567"],
"split": "val",
"conflictPolicy": "skip"
}ファイル名またはコンテンツの競合がある場合、skip、keep_both、またはreplaceのいずれかについて、バスケット全体に適用するconflictPolicyを選択するまで、409を返します。ResponseにはmodifiedCount、skippedCount、およびtargetSplitが含まれます。
画像を一括削除#
DELETE /api/images/bulkPython SDK: client.images.delete_bulk(image_ids=...)
{
"imageIds": ["65f1c0a2b3d4e5f601234567", "65f1c0a2b3d4e5f601234568"]
}1つのデータセットから最大1,000枚の画像を削除し、deletedCountとdeletedImageIdsを返します。
署名付き画像URLを取得#
POST /api/images/urlsPython SDK: client.images.urls(image_ids=...)
1つのデータセットから最大100個の画像IDについて、一時的な署名付きURLを返します。
{
"imageIds": ["65f1c0a2b3d4e5f601234567"]
}Response: 画像IDをキーとするurlsとthumbnailsを返します。
プロジェクトAPI#
モデルをプロジェクトに整理します。各モデルは1つのプロジェクトに属します。プロジェクトのドキュメントを参照してください。
プロジェクト一覧#
GET /api/projects/{owner}Python SDK: client.projects.list(owner)
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
limit | int | 返すプロジェクトの最大数(デフォルト: 20、最大: 500) |
プロジェクトを取得#
GET /api/projects/{owner}/{project}Python SDK: client.projects.retrieve(owner, project)
projectオブジェクト、モデルごとの概要(ステータス、メトリクス、エポック数、重み、トレーニング引数)を含むmodels配列、およびisOwnerを返します。
プロジェクトを作成#
POST /api/projectsPython SDK: client.projects.create(project=..., name=...)
| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
project | string | はい | Platform URLで使用するプロジェクト名 |
name | string | はい | 表示名(最大 100 文字) |
description | string | いいえ | 説明(最大 1000 文字) |
visibility | string | いいえ | publicまたはprivate |
tags | 配列 | いいえ | 最大50個のタグ |
license | string | いいえ | プロジェクトライセンス識別子 |
metadata | オブジェクト | いいえ | カスタム JSON メタデータ |
owner | string | いいえ | チームワークスペースのハンドル。デフォルトは個人ワークスペースです |
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project": "inspection",
"name": "Inspection",
"description": "Detection experiments",
"metadata": {"department": "manufacturing", "cost_center": "cv-01"}
}' \
https://platform.ultralytics.com/api/projectsResponse(201): id、owner、project、region。
プロジェクトを更新#
PATCH /api/projects/{owner}/{project}Python SDK: client.projects.update(owner, project)
受け付けるフィールド: name、description、visibility、metadata、tags、license、archived、iconColor、iconLetter、viewPreferences、およびstarred。
{
"metadata": { "department": "research", "program": "inspection" }
}空のmetadataオブジェクト({})を送信すると、消去できます。プロジェクトメタデータには、データセットメタデータと同じ128文字のキー制限および500,000文字のシリアライズ済みオブジェクト制限が適用されます。
プロジェクトの削除#
DELETE /api/projects/{owner}/{project}Python SDK: client.projects.delete(owner, project)
プロジェクトとそのモデルをゴミ箱に移動し、cascadedModelsを返します。
プロジェクトをクローン#
POST /api/projects/{owner}/{project}/clonePython SDK: client.projects.clone(owner, project)
アクセス可能なプロジェクトと、その完了済みモデルを複製します。オプションのBodyでは、project、name、description、visibility、license、および移行先のownerを指定できます。
モデルAPI#
トレーニング済みのYOLOモデルを管理します。メトリクスの表示、重みのダウンロード、推論の実行、トレーニングの監視を行えます。モデルのドキュメントを参照してください。
プロジェクト内のモデル一覧#
GET /api/models/{owner}/{project}Python SDK: client.models.list(owner, project)
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
limit | int | 返すモデルの最大数(デフォルト: 20、最大: 100) |
モデルを取得#
GET /api/models/{owner}/{project}/{model}Python SDK: client.models.retrieve(owner, project, model)
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
analysis | int | モデルの代わりに画像ごとの検証分析を返すには、1に設定します |
デフォルトのResponseには、ステータス、タスク、メトリクス、trainArgs、trainResults、classNames、computeCost、metadataなどを含むmodelオブジェクトと、isOwnerが含まれます。
モデルを作成#
POST /api/modelsPython SDK: client.models.create(body=...)
重みを関連付けたり、トレーニングしたりできる、未トレーニングのモデルレコードを作成します。
| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
project | string | はい | 移行先プロジェクト名 |
owner | string | いいえ | ワークスペースハンドル。デフォルトは個人用ワークスペースです |
model | string | いいえ | Platform URLで使用するモデル名。省略時に生成されます |
name | string | いいえ | 表示名(modelと同時に指定した場合のみ受け付けられます) |
description | string | いいえ | 説明(最大 1000 文字) |
task | string | いいえ | detect、segment、semantic、depth、classify、pose、またはobb |
metadata | オブジェクト | いいえ | カスタム JSON メタデータ |
trainArgs | オブジェクト | いいえ | 記録するトレーニング引数 |
metrics | オブジェクト | いいえ | mAP50、mAP50-95、precision、recallなどのメトリクス |
epochs | 数値 | いいえ | トレーニング済みモデルのエポック数 |
version | string | いいえ | バージョンラベル(最大50文字) |
Response(201): id、owner、project、model、region。
.ptの重みを関連付けるには、assetType: "models"で署名付きアップロードURLをリクエストし、このモデルのidをassetIdとして指定します。返されたURLにPUTでファイルをアップロードし、その後、返されたsessionIdを指定してPOST /api/upload/completeを呼び出します。
モデルを更新#
PATCH /api/models/{owner}/{project}/{model}Python SDK: client.models.update(owner, project, model)
受け入れられるフィールドには、name、description、color、metadata、status、license、datasetSlug、trainArgs、trainResults、epochs、bestEpoch、bestFitness、version、trainingError、および starred が含まれます。projectId を単体で渡すと、モデルは同じ所有者の別のプロジェクトに移動します。レスポンスは、移動先のモデルの slug、そこですでにそのスラッグが使用されていた場合は renamed: true、モデルがまだトレーニング中の場合は 409 を返します。
{
"metadata": { "release": "candidate-3", "reviewed": true }
}カスタムmetadataは、trainArgs、environment、trainResultsなどのトレーニング管理フィールドとは別であり、データセットメタデータと同じサイズ制限が適用されます。
モデルの削除#
DELETE /api/models/{owner}/{project}/{model}Python SDK: client.models.delete(owner, project, model)
モデルを30日間ゴミ箱に移動します。
モデルファイルをダウンロード#
GET /api/models/{owner}/{project}/{model}/filesPython SDK: client.models.files(owner, project, model)
モデルの重みに対する短期間有効な署名付きURLを返します。
{
"files": [
{
"name": "best.pt",
"size": 6534127,
"downloadUrl": "https://storage.googleapis.com/...&signature=..."
}
]
}モデルのクローン#
POST /api/models/{owner}/{project}/{model}/clonePython SDK: client.models.clone(owner, project, model, project_body=...)
アクセス可能なモデルを既存のプロジェクトにコピーします。
{
"owner": "acme-vision",
"project": "inspection",
"model": "v3-copy",
"name": "V3 Copy",
"description": "Cloned from a public model"
}| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
project | string | はい | 移行先プロジェクト名 |
owner | string | いいえ | 移行先ワークスペース。デフォルトは個人用ワークスペースです |
model | string | いいえ | 移行先モデル名 |
name | string | いいえ | 移行先表示名 |
description | string | いいえ | 複製するモデルの説明 |
推論を実行します#
POST /api/models/{owner}/{project}/{model}/predictPython SDK: client.models.predict(owner, project, model, body=...)
パブリックモデルは認証なしで予測できます。プライベートモデルおよび共有モデルには、親プロジェクトへのアクセス権を持つAPIキーが必要です。
Multipart Form:
| パラメータ | 型 | デフォルト | 範囲 | 説明 |
|---|---|---|---|---|
file | file | - | - | 画像または動画ファイル(sourceが設定されていない場合は必須) |
conf | float | 0.25 | 0.01 – 1.0 | 最小信頼度しきい値 |
iou | float | 0.7 | 0.0 – 0.95 | NMS IoUしきい値 |
imgsz | int | 640 | 32 – 1280 | 入力画像のピクセルサイズ |
normalize | bool | false | - | バウンディングボックス座標を0~1として返します |
decimals | int | 5 | 0 – 10 | 座標値の小数精度 |
bits | int | 8 | 8, 12, 16 | 深度マップの量子化(深度モデルのみ) |
source | string | - | - | 画像URLまたはbase64文字列(fileの代替) |
file または source のいずれかを指定してください。Depthモデルでは、bits(8、12、または 16)も指定して、Depth mapのPNG量子化を選択できます。
サービスの入力制限を超えるリクエストは 413 を返します。
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
-F "conf=0.5" \
https://platform.ultralytics.com/api/models/acme-vision/inspection/v3/predictレスポンス:
images の各エントリには、shape、speed、results と、dense predictionタスクの場合は semantic_mask または depth のPNGペイロードが含まれます(Depth値は pixel × max / divisor で、デフォルトの8-bit mapでは除数255、bits が12または16の場合は65535です)。metadata オブジェクトには、画像数、関数の実行時間、タスク、サービスのバージョンが示されます。内部モデルパスは返されません。
{
"images": [
{
"shape": [1080, 1920],
"speed": { "preprocess": 2.1, "inference": 12.4, "postprocess": 1.3 },
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
],
"metadata": {
"imageCount": 1,
"functionTimeAlive": 184.2,
"functionTimeCall": 0.31,
"task": "detect",
"version": { "ultralytics": "8.4.120" }
}
}トレーニングの進捗を確認#
GET /api/models/{owner}/{project}/{model}/trainingPython SDK: client.models.training(owner, project, model)
ステータス、エポックの進捗、実行時間、コンピューティングの詳細、トレーニング引数、エポックメトリクス、安全なエラー詳細を含む job を返します。モデルが一度もトレーニングされていない場合は null を返します。パブリックプロジェクトのモデルは認証なしで読み取れます。
トレーニングをキャンセルする#
DELETE /api/models/{owner}/{project}/{model}/trainingPython SDK: client.models.delete_training(owner, project, model)
実行中のコンピュートインスタンスを終了し、ジョブをキャンセル済みとしてマークします。トレーニングがすでにアクティブでない場合は 409 を返します。
トレーニング API#
クラウドGPUでYOLOのトレーニングを開始し、進捗をリアルタイムで監視します。 Cloud Trainingのドキュメントを参照してください。
graph LR
A[POST /api/training/start]:::start --> B[Job Created]:::proc
B --> C{Training}:::decide
C -->|progress| D[GET .../training]:::proc
C -->|cancel| E[DELETE .../training]:::error
C -->|complete| F[Model Ready]:::out
F --> G[Deploy or Export]:::proc
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef decide fill:#FF9800,color:#fff
classDef out fill:#9C27B0,color:#fff
classDef error fill:#F44336,color:#fffGPUの利用可能状況を取得#
GET /api/training/gpu-availabilityPython SDK: client.training.gpu_availability()
GPU IDごとに分類された現在の在庫状況を返します。パブリックで認証は不要です。managed=true を指定すると、APIキーが必要なマネージドトレーニング容量も含めることができます。
トレーニングを開始#
POST /api/training/startPython SDK: client.training.start(model_id=..., train_args=...)
| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
modelId | string | はい | トレーニング対象モデルのID |
trainArgs | オブジェクト | はい | YOLOのトレーニング引数。model、data、epochs は必須です |
gpuType | string | いいえ | 使用するクラウドGPU(デフォルト: rtx-4090) |
captureDatasetVersion | boolean | いいえ | この実行用にイミュータブルなデータセットバージョンを保存します(デフォルト: false) |
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"modelId": "65f1c0a2b3d4e5f601234599",
"gpuType": "rtx-4090",
"trainArgs": {
"model": "yolo26n.pt",
"data": "ul://acme-vision/datasets/warehouse",
"epochs": 100,
"imgsz": 640,
"batch": 16
}
}' \
https://platform.ultralytics.com/api/training/startレスポンス:
{
"modelId": "65f1c0a2b3d4e5f601234599",
"status": "starting",
"gpuType": "rtx-4090",
"estimatedCost": { "pricePerHour": 0.69, "gpuMemoryGb": 24 },
"billing": {
"estimatedCostCents": 138,
"estimatedCostDisplay": "$1.38",
"balanceCents": 2500
}
}クレジット残高が不足している場合、トレーニングは 402 を返し、要求されたGPUに利用可能な容量がない場合は 503 を返します。
26種類のGPUを利用できます。rtx-2000-ada から b300 までがあり、rtx-4090、l40s、a100-80gb-pcie、a100-80gb-sxm、rtx-pro-6000、h100-sxm、h200-sxm、b200 が含まれます。価格を含む完全なリストは、Cloud Trainingを参照してください。
Exports API#
モデルをONNX、TensorRT、CoreML、LiteRTなどの最適化フォーマットに変換して、エッジにデプロイします。 Deployのドキュメントを参照してください。
エクスポートを一覧表示#
GET /api/models/{owner}/{project}/{model}/exportsPython SDK: client.exports.list(owner, project, model)
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
status | string | queued、starting、running、completed、failed、または cancelled でフィルタリングします |
limit | int | 返すエクスポートの最大数(デフォルト: 20、最大: 100) |
エクスポートを作成#
POST /api/models/{owner}/{project}/{model}/exportsPython SDK: client.exports.create(owner, project, model, format=...)
| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
format | string | はい | 対象のエクスポートフォーマット(下表を参照) |
gpuType | string | 条件付き | format が engine の場合に必須です。サポートされている GPUまたはJetsonターゲットを使用してください |
args | オブジェクト | いいえ | エクスポートオプション: imgsz、quantize、dynamic、simplify、opset、conf、iou、batch、workspace、nms、optimize、keras、name (RKNN、QNN、Hailo、および Ascend フォーマットのデバイスターゲット) |
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"format": "onnx", "args": {"imgsz": 640, "quantize": 16}}' \
https://platform.ultralytics.com/api/models/acme-vision/inspection/v3/exportsレスポンス(201): id、format、status(queued または running)、gpuType、region。同等のエクスポートがすでに実行中の場合は 409 を返します。
サポートされているフォーマット:
下記の共通エクスポートテーブルにある format 引数を使用してください。PyTorchはソースフォーマットであり、APIエクスポートの対象ではありません。
| 形式 | format 引数 | モデル | メタデータ | 引数 |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz、quantize、dynamic、nms、batch、device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz、quantize、dynamic、simplify、opset、nms、batch、data、fraction、device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz、quantize、dynamic、nms、batch、data、fraction、device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz、quantize、dynamic、simplify、opset、workspace、nms、batch、data、fraction、device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz、dynamic、quantize、nms、batch、device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz、keras、quantize、opset、nms、batch、data、fraction、device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz、opset、batch、device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz、quantize、opset、data、fraction、device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz、batch、device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz、batch、dynamic、quantize、simplify、opset、nms、device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz、quantize、batch、device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz、quantize、data、fraction、nms、device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz、batch、device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz、batch、quantize、data、fraction、device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz、quantize、simplify、opset、data、optimize、device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz、quantize、batch、data、fraction、device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz、name、quantize、data、fraction、simplify、conf、iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz、batch、name、quantize、opset、simplify、nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz、batch、quantize |
nms=None は、外部 NMS の場合は生出力をデフォルトとします。nms=False を設定して利用可能な NMS なしのヘッドを選択します。サポートされていないフォーマットは、ネイティブ出力パスにフォールバックします。上記の nms エントリは、nms=True を使用して NMS を埋め込むことができるフォーマットを特定します。
エクスポートステータスを取得#
GET /api/models/{owner}/{project}/{model}/exports/{exportId}Python SDK: client.exports.retrieve(owner, project, model, export_id)
status、format、args、gpuType、タイムスタンプを含む export オブジェクトを返します。完了すると、size、downloadUrl、downloadFilename を含む file オブジェクトも返します。
エクスポートをキャンセルまたは削除#
DELETE /api/models/{owner}/{project}/{model}/exports/{exportId}Python SDK: client.exports.delete(owner, project, model, export_id)
アクティブなエクスポートをキャンセルするか、完了したエクスポートとそのファイルを削除します。レスポンスには実行された処理が示されます。
{
"success": true,
"action": "cancelled"
}Deployments API#
ヘルスチェックとモニタリングを備えた専用推論エンドポイントにモデルをデプロイします。 Endpointsのドキュメントを参照してください。
graph LR
A[Create]:::start --> B[Deploying]:::proc
B --> C[Ready]:::out
C -->|action stop| D[Stopped]:::extern
C -->|action replace| B
D -->|action start| C
C -->|delete| E[Deleted]:::error
D -->|delete| E
C -->|predict| F[Inference Results]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fff
classDef error fill:#F44336,color:#fff
classDef extern fill:#607D8B,color:#fffデプロイメントを一覧表示#
GET /api/deployments/{owner}Python SDK: client.deployments.list(owner)
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
status | string | creating、deploying、ready、stopping、stopped、または failed |
model | string | {project}/{model} でフィルタリングします。例: inspection/v3 |
limit | int | 返すデプロイメントの最大数(デフォルト: 20、最大: 100) |
匿名の呼び出し元は、1つのパブリックモデルでフィルタリングする必要があります。ワークスペース全体の一覧表示には認証が必要です。
デプロイメントを作成#
POST /api/deployments/{owner}Python SDK: client.deployments.create(owner, project=..., model=..., deployment=..., name=..., region=...)
Body:
{
"project": "inspection",
"model": "v3",
"deployment": "edge-1",
"name": "Edge 1",
"region": "us-central1"
}| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
project | string | はい | モデルを含むプロジェクト |
model | string | はい | デプロイするモデル |
deployment | string | はい | PlatformのURLで使用するデプロイメント名 |
name | string | はい | 表示名 |
region | string | はい | サポートされている42のデプロイメントリージョンのいずれか |
レスポンス(201): id、deployment、status(creating)、message、region。
CPU、メモリ、インスタンスのスケーリングはプランの上限に基づいてPlatformが管理するため、作成リクエストではリソース設定を受け付けません。現在の値は、すべてのデプロイメント読み取り時に resources オブジェクトで返されます。
レイテンシを最小限に抑えるため、ユーザーに近いリージョンを選択してください。Platform UIには、利用可能な42リージョンすべてのレイテンシ推定値が表示されます。
デプロイメントを取得#
GET /api/deployments/{owner}/{deployment}Python SDK: client.deployments.retrieve(owner, deployment)
status、statusMessage、region、serviceUrl、resources を含む deployment オブジェクトを返します。
デプロイメントを開始、停止、または置換#
PATCH /api/deployments/{owner}/{deployment}Python SDK: client.deployments.update(owner, deployment, body=...)
単一の action フィールドで操作を選択します。
{ "action": "start" }置換では、デプロイメントID、リージョン、エンドポイントURLを維持したまま新しいリビジョンをロールアウトします。ロールアウトに失敗した場合、既存のリビジョンは稼働し続けます。置換モデルは、完了済みで、キーからアクセスできる重みを持つモデルである必要があります。完了した操作は status および ready または stopped とともに 200 を返します。ロールアウト中の操作は deploying または stopping とともに 202 を返します。
デプロイメントを削除#
DELETE /api/deployments/{owner}/{deployment}Python SDK: client.deployments.delete(owner, deployment)
推論エンドポイントを完全に削除します。
Health Check#
GET /api/deployments/{owner}/{deployment}/healthPython SDK: client.deployments.health(owner, deployment)
エンドポイントにPingを送信してウォームアップし、healthy、latencyMs、アップストリームの status コードを返します。
デプロイメントで推論を実行#
POST /api/deployments/{owner}/{deployment}/predictPython SDK: client.deployments.predict(owner, deployment, body=...)
専用エンドポイントを介して画像または動画をルーティングします。リクエストとレスポンスのコントラクトは、model inferenceと一致します。
Multipart Form:
| パラメータ | 型 | デフォルト | 範囲 | 説明 |
|---|---|---|---|---|
file | file | - | - | 画像または動画ファイル(sourceが設定されていない場合は必須) |
conf | float | 0.25 | 0.01 – 1.0 | 最小信頼度しきい値 |
iou | float | 0.7 | 0.0 – 0.95 | NMS IoUしきい値 |
imgsz | int | 640 | 32 – 1280 | 入力画像のピクセルサイズ |
normalize | bool | false | - | バウンディングボックス座標を0~1として返します |
decimals | int | 5 | 0 – 10 | 座標値の小数精度 |
bits | int | 8 | 8, 12, 16 | 深度マップの量子化(深度モデルのみ) |
source | string | - | - | 画像URLまたはbase64文字列(fileの代替) |
メトリクスを取得#
GET /api/deployments/{owner}/{deployment}/metricsPython SDK: client.deployments.metrics(owner, deployment)
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
range | string | 1h、6h、24h(デフォルト)、7d、または 30d |
sparkline | boolean | 完全な系列の代わりにコンパクトなダッシュボード概要を返します(デフォルト: false) |
完全なレスポンスには、summary(リクエスト総数、エラー率、平均レイテンシ、p50/p95/p99レイテンシ)と timeSeries(リクエスト、エラー、レイテンシ、CPU、メモリ、インスタンス数)が含まれます。スパークラインレスポンスは requests24h、totalRequests、errorRate、avgLatencyMs を返します。
ログを取得#
GET /api/deployments/{owner}/{deployment}/logsPython SDK: client.deployments.logs(owner, deployment)
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
severity | string | カンマ区切り: DEBUG、INFO、NOTICE、WARNING、ERROR、CRITICAL、ALERT、EMERGENCY |
limit | int | 返すエントリ数(デフォルト: 50、最大: 200) |
pageToken | string | 前回のレスポンスから取得したページネーション トークン |
Trash API#
論理削除されたプロジェクト、データセット、モデルを表示、復元、完全削除します。アイテムは30日後に自動的に消去されます。Trashのドキュメントを参照してください。
ゴミ箱の一覧表示#
GET /api/trashPython SDK: client.lifecycle.trash()
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
type | string | all(デフォルト)、project、dataset、または model |
page | int | ページ番号(デフォルト: 1) |
limit | int | 1ページあたりのアイテム数(デフォルト: 50、最大: 200) |
レスポンスには、items(それぞれに daysRemaining を含む)、total、page、limit、totalPages、およびタイプ別の合計を含む summary が含まれます。
アイテムの復元#
POST /api/trashPython SDK: client.lifecycle.restore(id=..., type=...)
{
"id": "65f1c0a2b3d4e5f601234567",
"type": "dataset"
}プロジェクトを復元すると、そのプロジェクトとともにゴミ箱に移動されたモデルも復元され、restoredModels として報告されます。
完全削除#
DELETE /api/trashPython SDK: client.lifecycle.delete_trash(body=...)
1つのアイテムを削除します。
{
"id": "65f1c0a2b3d4e5f601234567",
"type": "dataset"
}または、ゴミ箱全体を空にします。
{
"all": true
}レスポンスには deletedCount と、該当する場合は cascadedModels および survivingDeployments が含まれます。
完全削除は取り消せません。リソースと関連するすべてのデータが削除されます。
Upload API#
署名付きURLを使用して、ファイルをクラウドストレージに直接アップロードします。モデルのアップロードを完了するとその重みが関連付けられ、データセットアーカイブのアップロードを完了するとセッションが記録されます。その後、そのセッションをデータセット取り込みに渡します。Dataのドキュメントも参照してください。
署名付きアップロードURLを取得#
POST /api/upload/signed-urlPython SDK: client.upload.signed_url(body=...)
Body:
{
"assetType": "datasets",
"assetId": "65f1c0a2b3d4e5f601234567",
"filename": "warehouse.zip",
"contentType": "application/zip",
"totalBytes": 52428800
}| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
assetType | string | はい | datasets、models、images、または videos |
assetId | string | はい | 対象データセットまたはモデルのID |
filename | string | はい | 元のファイル名(最大256文字) |
contentType | string | はい | MIMEタイプ |
totalBytes | 数値 | はい | ファイルサイズ(バイト) |
assetType が datasets の場合、filename は .zip、.tar、.tar.gz、.tgz、または .ndjson で終わる必要があります。個別の画像をアーカイブにまとめてからアップロードしてください。
レスポンス:
{
"sessionId": "session_abc123",
"uploadUrl": "https://storage.googleapis.com/...&signature=...",
"expiresAt": "2026-02-22T12:00:00Z",
"headers": { "x-goog-if-generation-match": "0" }
}宣言した同じ Content-Type と headers で返されたすべてのヘッダーを使用して、PUT リクエストでファイルを uploadUrl にアップロードします。データセットのアップロードURLは12時間有効であり、作成専用です。同じURLへの2回目の PUT は 412 を返し、返されたヘッダーなしでの PUT は 400 を返します。
アップロードを完了#
POST /api/upload/completePython SDK: client.upload.complete(session_id=...)
{
"sessionId": "session_abc123",
"md5": "<optional md5 hex>"
}レスポンス: success と、size および contentType を含む file オブジェクト。モデルの場合は重みが関連付けられ、データセットアーカイブの場合は、次に ingest を呼び出して処理を開始します。
md5 が提供された場合、保存されたオブジェクトと照合されます。不一致がある場合は 400 が返されます。まだ完了していないセッションでは、アップロードされたファイルも削除されてセッションが未完了のままになるため、新しい署名付きURLをリクエストして再度アップロードしてください。完了したデータセットセッションは、アーカイブが存在する間は再び完了させることができますが、ダイジェストが異なる競合する完了処理は 409 を返します。モデルセッションは完了時に削除されます。checksum はモデルファイルメタデータとして保存され、検証されません。
Storage Integrations API#
読み取り専用のGoogle Cloud Storage、Amazon S3、またはAzure Blob Storageアカウントを接続し、データセットソースとして参照します。 Integrationsのドキュメントを参照してください。
インテグレーション一覧#
GET /api/integrations/bucketsPython SDK: client.storage_integrations.list()
integrationsを返します。それぞれにid、provider、credentialIdentity、targets、createdAtが含まれます。認証情報は返されません。
ロケーションを検出#
POST /api/integrations/buckets/discoverPython SDK: client.storage_integrations.discover(body=...)
指定された認証情報で読み取り可能なバケットまたはコンテナを、保存せずに一覧表示します。
{
"provider": "gcs",
"credentials": {
"client_email": "svc@project.iam.gserviceaccount.com",
"private_key": "-----BEGIN PRIVATE KEY-----\n...",
"project_id": "my-project"
}
}レスポンス: {"targets": ["my-bucket", "another-bucket"]}
ストレージを接続#
POST /api/integrations/bucketsPython SDK: client.storage_integrations.create(body=...)
検出と同じ認証情報の形式に加え、1~50個のバケット名またはコンテナ名を含む必須のtargets配列を指定します。保存されたインテグレーションを含む201を返します。一時的なS3認証情報(ASIAアクセスキー)は拒否されます。
オブジェクトを参照#
GET /api/integrations/buckets/{id}/objectsPython SDK: client.storage_integrations.objects(id, target=...)
クエリパラメーター:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
target | string | はい | バケット名またはコンテナ名 |
prefix | string | いいえ | フォルダーのプレフィックス(最大1024文字) |
cursor | string | いいえ | 前のページから取得したプロバイダーのページネーションカーソル |
entriesを返します(各kindはfolderまたはfileです)。次のページ用のオプションのcursorも返します。
ストレージを切断#
DELETE /api/integrations/buckets/{id}Python SDK: client.storage_integrations.delete(id)
プロバイダーのデータを削除せずに、保存された認証情報を削除します。接続済みのデータセットは引き続き表示されますが、同じストレージアカウントを再接続するまで、ファイルは利用できません。ワークスペース管理者のアクセス権が必要です。
データセットインポート API#
サードパーティサービスからデータセットをインポートします。Roboflowインテグレーションを参照してください。
Roboflowインポートをプレビュー#
POST /api/integrations/roboflow/previewPython SDK: client.datasets.preview_roboflow(api_key=...)
Roboflow APIキーをインポート計画に解決します。これには、ワークスペースの詳細、インポートされるnewDatasets、スキップ・非対応・解決不能なプロジェクトの件数、bytesTotal、およびstorageの残容量が含まれます。Roboflow APIキーはリクエストボディから読み取られ、永続化されません。
{
"apiKey": "ROBOFLOW_API_KEY"
}Roboflowからインポート#
POST /api/integrations/roboflow/importPython SDK: client.datasets.import_roboflow(api_key=..., items=...)
プレビューで返された項目を使用して、選択した最大500件のRoboflowプロジェクトバージョンの取り込みジョブをキューに追加します。
{
"apiKey": "ROBOFLOW_API_KEY",
"items": [
{
"workspace": "my-workspace",
"projectId": "warehouse-safety",
"projectName": "Warehouse Safety",
"projectType": "object-detection",
"latestVersion": 4
}
]
}レスポンス(201): imported、failed、skippedの配列です。インポートにはストレージの残容量が必要であり、各データセットはプランごとのインポートサイズ上限以内である必要があります。
アカウント API#
Platformアカウント、キー、ストレージ、公開プロフィールを確認します。設定ドキュメントを参照してください。
アカウント概要#
GET /api/account/summaryPython SDK: client.account.summary()
キーを発行したワークスペースのプラン、クレジット残高、リソース数を返します。
{
"username": "acme-vision",
"name": "Acme Vision",
"accountType": "team",
"plan": "pro",
"creditsCents": 2500,
"counts": { "projects": 4, "datasets": 7, "models": 21 },
"teams": []
}ブラウザーセッションではteamsが設定されます。APIキーのレスポンスでは空のリストが返されます。これは、キーがすでに単一のワークスペースにスコープされているためです。
APIキー一覧#
GET /api/api-keysPython SDK: client.account.api_keys()
キーのワークスペースに対するkeyId、name、keyPrefix、createdAtを含むkeysを返します。APIキーで認証されたリクエストにはメタデータのみが返されます。完全なキー値は、Platform UIのワークスペース所有者にSettings > API Keysで表示され、キーの作成と失効も同じ場所で行います。
ストレージ使用量を確認#
GET /api/storagePython SDK: client.account.storage()
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
details | boolean | ストレージ使用量が最大の項目を10件含めます(デフォルト:false) |
レスポンス:
{
"tier": "pro",
"usage": {
"storage": { "current": 1073741824, "limit": 107374182400, "percent": 1.0 },
"datasets": { "current": 536870912, "limit": 107374182400, "percent": 0.5 }
},
"breakdown": {
"byCategory": {
"datasets": { "bytes": 536870912, "count": 2 },
"models": { "bytes": 268435456, "count": 4 },
"exports": { "bytes": 268435456, "count": 3 }
},
"topItems": [
{
"_id": "65f1c0a2b3d4e5f601234567",
"name": "Warehouse",
"slug": "warehouse",
"sizeBytes": 536870912,
"type": "dataset"
}
]
},
"region": "us",
"username": "acme-vision",
"updatedAt": "2026-01-15T10:00:00Z"
}公開ユーザープロフィールを取得#
GET /api/usersPython SDK: client.account.profile(username=...)
クエリパラメーター:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
username | string | はい | 検索するユーザー名 |
公開userプロフィールを返します。followerCountも含まれ、認証済みの呼び出し元にはisFollowedも含まれます。
ユーザーをフォローまたはフォロー解除#
PATCH /api/usersPython SDK: client.account.follow(username=..., followed=...)
{
"username": "target-user",
"followed": true
}レスポンス: followedと更新されたfollowerCountです。
Billing API#
プランの使用状況とクレジット台帳を確認します。Billingドキュメントを参照してください。
請求額は米ドルのセント単位の整数です。100 = $1.00です。
プランと使用状況を表示#
GET /api/billing/usage-summaryPython SDK: client.billing.usage_summary()
plan(ID、ステータス、請求サイクル、期間終了)、metrics(ストレージ上限と使用量)、trainingCredit、features、creditsCents、およびシート数を返します。
トランザクションを表示#
GET /api/billing/transactionsPython SDK: client.billing.transactions()
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
from | string | 最も早いトランザクションのタイムスタンプ(ISO 8601) |
to | string | 最も遅いトランザクションのタイムスタンプ(ISO 8601) |
各トランザクションには、id、type(purchase、training、monthly_grant、refundなど)、amountCents、balanceAfter、createdAt、オプションのreceiptUrl、およびトレーニング料金のモデルコンテキストが含まれます。内部の請求詳細は返されません。
APIを探索#
コミュニティが共有している公開プロジェクトとデータセットを検索します。Exploreドキュメントを参照してください。
公開コンテンツを検索#
GET /api/explore/searchPython SDK: client.explore.search()
クエリパラメーター:
| パラメータ | 型 | 説明 |
|---|---|---|
q | string | 検索語(最大200文字) |
type | string | all(デフォルト)、projects、またはdatasets |
sort | string | newest(デフォルト)、oldest、stars、name-asc、name-desc、count-desc、count-asc |
offset | int | スキップする結果(デフォルト:0) |
limit | int | リソースタイプごとの最大結果数(デフォルト:20、最大:100) |
task | string | カンマ区切りのタスクフィルター:detect、segment、semantic、depth、classify、pose、obb |
author | string | 所有者のユーザー名フィルター |
starred | boolean | 認証済みの呼び出し元がスターを付けたコンテンツのみを返します。APIキーが必要です。 |
レスポンス: projects、datasets、hasMoreです。
curl "https://platform.ultralytics.com/api/explore/search?type=datasets&task=detect&sort=stars&limit=20"Python SDK#
ultralytics-platformは、OpenAPIコントラクトから生成された型付きPythonクライアントです。エンドポイントごとに1つのメソッド(client.datasets.list、client.models.predict、client.exports.create、...)があります。各メソッドは、パスパラメーターを位置引数として、その他の入力をキーワード引数として受け取り、リクエストごとのオプションのtimeoutとextra_headersも受け取ります。
pip install "ultralytics-platform>=0.1.45" # Python 3.11+from ultralytics_platform import Platform
with Platform() as client: # reads ULTRALYTICS_API_KEY or the key saved by yolo login
dataset = client.datasets.retrieve("acme-vision", "warehouse")
images = client.datasets.images("acme-vision", "warehouse", limit=10)
export = client.exports.create("acme-vision", "inspection", "v3", format="onnx")AsyncPlatformはasync/awaitコード用に同じリソースツリーを公開します。失敗したレスポンスではstatus_code、body、解析済みのjsonを含むAPIErrorが送出され、接続失敗ではAPIConnectionErrorが送出されます。完全なREADMEについてはSDKリポジトリを参照してください。
Pythonインテグレーション#
トレーニングおよび推論のワークフローには、認証、アップロード、およびリアルタイムのメトリックストリーミングを自動的に処理する Ultralytics Python パッケージを使用します。Python 3.11+ では、pip install ultralytics は ultralytics-platform SDK もインストールします。model.train(project=...) が Platform を対象とする場合、トレーニングコールバックは SDK の client.training.metrics() を通じてイベントをストリーミングし、OpenAPI ドキュメント内の POST /api/webhooks/training/metrics および POST /api/webhooks/models/upload の操作である client.models.upload_checkpoint() を通じてチェックポイントのアップロード URL を要求するため、ご自身で呼び出す必要はありません。
インストールとセットアップ#
プラットフォーム統合には Python>=3.11 および ultralytics>=8.4.120 が必要です:
pip install "ultralytics>=8.4.120"インストールを確認します。
yolo check認証#
yolo login YOUR_API_KEYPlatform データセットの使用#
ul:// URIでデータセットを参照します。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Train on your Platform dataset
model.train(
data="ul://your-username/datasets/your-dataset",
epochs=100,
imgsz=640,
)URI形式:
| パターン | 説明 |
|---|---|
ul://username/datasets/slug | データセット |
ul://username/project-name | プロジェクト |
ul://username/project/model-name | 特定のモデル |
ul://ultralytics/yolo26/yolo26n | 公式モデル |
Platformへプッシュ#
結果をPlatformプロジェクトに送信します。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Results automatically sync to Platform
model.train(
data="coco8.yaml",
epochs=100,
project="your-username/my-project",
name="experiment-1",
)同期される内容:
- トレーニングメトリクス(リアルタイム)
- 最終モデルの重み
- 検証プロット
- コンソール出力
- システムメトリクス
- トレーニング引数とホスト環境(ホスト名、OS、Python、ハードウェア、git コミット、コマンドライン)
API例#
Platformからモデルをロード:
# Your own model
model = YOLO("ul://username/project/model-name")
# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")推論を実行:
results = model("image.jpg")
# Access results
for r in results:
boxes = r.boxes # Detection boxes
masks = r.masks # Segmentation masks
keypoints = r.keypoints # Pose keypoints
probs = r.probs # Classification probabilitiesモデルをエクスポート:
# Export to ONNX
model.export(format="onnx", imgsz=640, quantize=16)
# Export to TensorRT
model.export(format="engine", imgsz=640, quantize=16)
# Export to CoreML
model.export(format="coreml", imgsz=640) # use imgsz=224 for classification検証:
metrics = model.val(data="ul://username/datasets/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")FAQ#
Platform URLに表示されるものと同じ所有者および名前のセグメントを使用してください。
https://platform.ultralytics.com/acme-vision/inspection/v3にあるモデルはGET /api/models/acme-vision/inspection/v3です。データベースIDは引き続きレスポンス(id)で返され、一部のルートではIDを直接受け取ります。画像ルートはimageIdを、アップロードはassetIdを受け取り、POST /api/training/startはmodelIdを受け取ります。コレクションによって異なります。ほとんどの一覧エンドポイントは
limitを受け取ります。curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://platform.ultralytics.com/api/datasets/acme-vision?limit=50"データセット画像、クラスタリング、Explore検索では、
limitとともにoffsetを使用し、hasMoreを返します。curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&limit=20&sort=stars"非常に大規模な画像セットは、
nextCursorとして返されるカーソルを使用して順に処理するのが最適です。curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://platform.ultralytics.com/api/datasets/acme-vision/warehouse/images?limit=1000&includeTotal=false&cursor=LAST_IMAGE_ID"ゴミ箱では
pageを使用し、デプロイメントログではnextPageTokenとして返される不透明なpageTokenを使用します。はい。このページのすべての操作は通常のHTTPSリクエストであり、完全なコントラクトはOpenAPI 3.2としてplatform.ultralytics.com/openapi.jsonで公開されています。これは任意の言語のクライアントジェネレーターに入力できます。
ultralytics-platformパッケージはまさにそれであり、コントラクトから生成された型付きクライアントです。一方、ultralyticsパッケージは、トレーニングと推論に加えてリアルタイムメトリクスのストリーミングとモデルの自動アップロードを提供します。請求チェックアウトやチーム管理など、ブラウザーセッション専用のアカウントフローはPlatform UIに残ります。429レスポンスのRetry-Afterヘッダーを使用して、適切な時間待機してください。import time import requests def api_request_with_retry(url, headers, max_retries=3): for attempt in range(max_retries): response = requests.get(url, headers=headers) if response.status_code != 429: return response wait = int(response.headers.get("Retry-After", 2**attempt)) time.sleep(wait) raise RuntimeError("Rate limit exceeded")404は、リソースが存在しないか、キーからはまったく見えないことを意味します。403は、リソースは見つかったものの、アクションにキーが持つ以上のアクセス権が必要であることを意味します。たとえば、データセットの変更には編集者アクセス権、デプロイメントの削除には所有者アクセス権、ストレージの切断には管理者アクセス権、エクスポートとデプロイメントにはより上位のプランまたはクォータが必要です。公開データセット、プロジェクト、モデルの読み取りと、それらの画像、署名付き画像URL、クラス統計、埋め込みステータス、クラスタリングレイアウト、エクスポート一覧の取得。公開モデルのトレーニング進捗の確認。公開モデルのファイルのダウンロード。公開モデルでの推論の実行。公開ユーザープロフィールの検索。1つの公開モデルでフィルタリングしたデプロイメントの一覧表示。Exploreの検索。
GET /api/training/gpu-availabilityは、マネージド容量をリクエストしない限り完全に公開されています。それ以外にはすべてキーが必要で、公開エンドポイントにキーを指定すると、非公開リソースも表示されます。