REST APIリファレンス
Ultralytics Platformは、データセット、モデル、トレーニング、デプロイメントへのプログラムによるアクセスを可能にする包括的なREST APIを提供します。
クイックスタート
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
# Run inference on a model
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
https://platform.ultralytics.com/api/models/MODEL_ID/predict
認証
すべてのAPIリクエストには、APIキーによる認証が必要です。
APIキーの取得
- 設定 > APIキーに移動します。
- キーを作成をクリックします。
- 生成されたキーをコピーします。
詳細な手順については、APIキーを参照してください。
認証ヘッダー
すべてのリクエストにAPキーを含める:
Authorization: Bearer ul_your_api_key_here
例
curl -H "Authorization: Bearer ul_abc123..." \
https://platform.ultralytics.com/api/datasets
ベースURL
すべてのAPエンドポイントは以下を使用します:
https://platform.ultralytics.com/api
レート制限
| プラン | 1分あたりのリクエスト数 | 1日あたりのリクエスト数 |
|---|---|---|
| 無料 | 60 | 1,000 |
| Pro | 300 | 50,000 |
| エンタープライズ | カスタム | カスタム |
レート制限ヘッダーはレスポンスに含まれます:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1640000000
応答形式
すべてのレスポンスはJSON形式です:
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"limit": 20,
"total": 100
}
}
エラー応答
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid dataset ID",
"details": { ... }
}
}
データセットAPI
データセットのリスト表示
GET /api/datasets
クエリパラメータ:
| パラメータ | 種類 | 説明 |
|---|---|---|
page | int | ページ番号 (デフォルト: 1) |
limit | int | 1ページあたりの項目数 (デフォルト: 20) |
task | string | タスクタイプでフィルタリング |
レスポンス:
{
"success": true,
"data": [
{
"id": "dataset_abc123",
"name": "my-dataset",
"slug": "my-dataset",
"task": "detect",
"imageCount": 1000,
"classCount": 10,
"visibility": "private",
"createdAt": "2024-01-15T10:00:00Z"
}
]
}
データセットの取得
GET /api/datasets/{datasetId}
データセットの作成
POST /api/datasets
ボディ:
{
"name": "my-dataset",
"task": "detect",
"description": "A custom detection dataset"
}
データセットの削除
DELETE /api/datasets/{datasetId}
データセットのエクスポート
POST /api/datasets/{datasetId}/export
NDJSON形式のダウンロードURLを返します。
データセットでモデルを学習させる
GET /api/datasets/{datasetId}/models
このデータセットを使用して訓練されたモデルのリストを返します。データセットとそれらが生成したモデルとの関係を示します。
レスポンス:
{
"success": true,
"data": [
{
"id": "model_abc123",
"name": "experiment-1",
"projectId": "project_xyz",
"trainedAt": "2024-01-15T10:00:00Z",
"metrics": {
"mAP50": 0.85,
"mAP50-95": 0.72
}
}
]
}
プロジェクトAPI
プロジェクトの一覧表示
GET /api/projects
プロジェクトの取得
GET /api/projects/{projectId}
プロジェクトを作成します
POST /api/projects
ボディ:
{
"name": "my-project",
"description": "Detection experiments"
}
プロジェクトの削除
DELETE /api/projects/{projectId}
モデルAPI
モデルの一覧表示
GET /api/models
クエリパラメータ:
| パラメータ | 種類 | 説明 |
|---|---|---|
projectId | string | プロジェクトでフィルタリング |
task | string | タスクタイプでフィルタリング |
モデルの取得
GET /api/models/{modelId}
モデルのアップロード
POST /api/models
マルチパートフォーム:
| フィールド | 種類 | 説明 |
|---|---|---|
file | ファイル | モデルの.ptファイル |
projectId | string | 対象プロジェクト |
name | string | モデル名 |
モデルの削除
DELETE /api/models/{modelId}
モデルをダウンロードする
GET /api/models/{modelId}/files
モデルファイル用の署名付きダウンロードURLを返します。
推論の実行
POST /api/models/{modelId}/predict
マルチパートフォーム:
| フィールド | 種類 | 説明 |
|---|---|---|
file | ファイル | 画像ファイル |
conf | float | 信頼度しきい値 |
iou | float | IoUしきい値 |
レスポンス:
{
"success": true,
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
トレーニングAPI
学習を開始
POST /api/training/start
ボディ:
{
"modelId": "model_abc123",
"datasetId": "dataset_xyz789",
"epochs": 100,
"imageSize": 640,
"gpuType": "rtx-4090"
}
トレーニングステータスの取得
GET /api/models/{modelId}/training
トレーニングのキャンセル
DELETE /api/models/{modelId}/training
デプロイメントAP
デプロイメントを一覧表示
GET /api/deployments
クエリパラメータ:
| パラメータ | 種類 | 説明 |
|---|---|---|
modelId | string | モデルでフィルタ |
デプロイメントを作成
POST /api/deployments
ボディ:
{
"modelId": "model_abc123",
"region": "us-central1",
"minInstances": 0,
"maxInstances": 10
}
デプロイメントを取得
GET /api/deployments/{deploymentId}
デプロイメントを開始
POST /api/deployments/{deploymentId}/start
デプロイメントを停止
POST /api/deployments/{deploymentId}/stop
デプロイメントを削除
DELETE /api/deployments/{deploymentId}
メトリクスを取得
GET /api/deployments/{deploymentId}/metrics
ログを取得
GET /api/deployments/{deploymentId}/logs
クエリパラメータ:
| パラメータ | 種類 | 説明 |
|---|---|---|
severity | string | INFO, WARNING, ERROR |
limit | int | エントリ数 |
エクスポートAP
エクスポートを一覧表示
GET /api/exports
エクスポートを作成
POST /api/exports
ボディ:
{
"modelId": "model_abc123",
"format": "onnx"
}
サポートされている形式:
onnx, torchscript, openvino, tensorrt, coreml, tflite, saved_model, graphdef, paddle, ncnn, edgetpu, tfjs, mnn, rknn, imx, axelera, executorch
エクスポートステータスを取得
GET /api/exports/{exportId}
アクティビティAP
アカウントのアクティビティイベントをtrackし、管理します。
アクティビティを一覧表示
GET /api/activity
クエリパラメータ:
| パラメータ | 種類 | 説明 |
|---|---|---|
startDate | string | フィルタ開始日 (ISO) |
endDate | string | フィルタ終了日 (ISO) |
search | string | イベントメッセージ内で検索 |
イベントを既読にする
POST /api/activity/mark-seen
イベントをアーカイブ
POST /api/activity/archive
ゴミ箱AP
論理削除されたリソースを管理します (30日間保持)。
ゴミ箱を一覧表示
GET /api/trash
アイテムを復元
POST /api/trash
ボディ:
{
"itemId": "item_abc123",
"type": "dataset"
}
ゴミ箱を空にする
POST /api/trash/empty
ゴミ箱内のすべてのアイテムを完全に削除します。
請求API
クレジットとサブスクリプションを管理します。
残高を取得
GET /api/billing/balance
レスポンス:
{
"success": true,
"data": {
"cashBalance": 5000000,
"creditBalance": 20000000,
"reservedAmount": 0,
"totalBalance": 25000000
}
}
マイクロUSD
正確な会計処理のため、すべての金額はマイクロUSD (1,000,000 = $1.00) で表示されます。
使用状況の概要を取得
GET /api/billing/usage-summary
プランの詳細、制限、および使用状況メトリクスを返します。
チェックアウトセッションを作成
POST /api/billing/checkout-session
ボディ:
{
"amount": 25
}
クレジット購入 ($5-$1000) 用のStripeチェックアウトセッションを作成します。
サブスクリプションチェックアウトを作成
POST /api/billing/subscription-checkout
Proサブスクリプション用のStripeチェックアウトセッションを作成します。
ポータルセッションを作成
POST /api/billing/portal-session
サブスクリプション管理のためのStripe請求ポータルへのURLを返します。
支払い履歴を取得
GET /api/billing/payments
Stripeからの支払いトランザクションリストを返します。
ストレージAPI
ストレージ情報を取得
GET /api/storage
レスポンス:
{
"success": true,
"data": {
"used": 1073741824,
"limit": 107374182400,
"percentage": 1.0
}
}
GDPR API
データのエクスポートと削除のためのGDPR準拠エンドポイント。
アカウントデータのエクスポート/削除
POST /api/gdpr
ボディ:
{
"action": "export"
}
| アクション | 説明 |
|---|---|
export | すべてのカウントデータをダウンロード |
delete | アカウントとすべてのデータを削除 |
元に戻せない操作
アカウントの削除は永続的であり、元に戻すことはできません。すべてのデータ、モデル、およびデプロイメントが削除されます。
APIキーAPI
APIキーを一覧表示
GET /api/api-keys
APIキーを作成
POST /api/api-keys
ボディ:
{
"name": "training-server",
"scopes": ["training", "models"]
}
APIキーを削除
DELETE /api/api-keys/{keyId}
エラーコード
| コード | 説明 |
|---|---|
UNAUTHORIZED | 無効または不足しているAPIキー |
FORBIDDEN | 権限不足 |
NOT_FOUND | リソースが見つかりません |
VALIDATION_ERROR | 無効なリクエストデータ |
RATE_LIMITED | リクエストが多すぎます |
INTERNAL_ERROR | サーバーエラー |
Python
より簡単に統合するには、Ultralytics pythonパッケージを使用してください。
インストールとセットアップ
pip install ultralytics
インストールを確認してください:
yolo check
パッケージバージョンの要件
Platformとの統合にはultralytics>=8.4.0が必要です。それより低いバージョンはPlatformでは動作しません。
認証
方法1:CLI (推奨)
yolo settings api_key=YOUR_API_KEY
方法2: 環境変数
export ULTRALYTICS_API_KEY=YOUR_API_KEY
方法3: コード内で
from ultralytics import settings
settings.api_key = "YOUR_API_KEY"
プラットフォームデータセットの使用
参照データセット ul:// URI:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
# Train on your Platform dataset
model.train(
data="ul://your-username/your-dataset",
epochs=100,
imgsz=640,
)
URI形式:
ul://{username}/{resource-type}/{name}
Examples:
ul://john/datasets/coco-custom # Dataset
ul://john/my-project # Project
ul://john/my-project/exp-1 # Specific model
ul://ultralytics/yolo26/yolo26n # Official model
プラットフォームへのプッシュ
結果をプラットフォームプロジェクトに送信する:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
# Results automatically sync to Platform
model.train(
data="coco8.yaml",
epochs=100,
project="ul://your-username/my-project",
name="experiment-1",
)
同期されるもの:
- トレーニング指標(リアルタイム)
- 最終モデル重み
- 検証プロット
- コンソール出力
- システムメトリクス
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, half=True)
# Export to TensorRT
model.export(format="engine", imgsz=640, half=True)
# Export to CoreML
model.export(format="coreml", imgsz=640)
検証:
metrics = model.val(data="ul://username/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")
Webhook
Webhookは、プラットフォームイベントをサーバーに通知します:
| イベント | 説明 |
|---|---|
training.started | トレーニングジョブが開始されました |
training.epoch | エポックが完了しました |
training.completed | トレーニングが終了しました |
training.failed | トレーニングが失敗しました |
export.completed | エクスポート準備完了 |
Webhookの設定はEnterpriseプランで利用可能です。
よくある質問
大量の結果をページ分割するにはどうすればよいですか?
使用 page および limit パラメータ:
GET /api/datasets?page=2 &
limit=50
SDKなしでAPIを使用できますか?
はい、すべての機能はREST経由で利用可能です。SDKは便利なラッパーです。
APIクライアントライブラリはありますか?
現在、Ultralytics pythonパッケージを使用するか、直接HTTPリクエストを行ってください。他の言語向けの公式クライアントライブラリは計画中です。
レート制限はどのように処理すればよいですか?
指数関数的バックオフを実装してください:
import time
def api_request_with_retry(url, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code != 429:
return response
wait = 2**attempt
time.sleep(wait)
raise Exception("Rate limit exceeded")