REST API リファレンス

Ultralytics Platform は、データセット、モデル、トレーニング、およびデプロイメントにプログラムからアクセスするための包括的な REST API を提供します。

Ultralytics Platform Api Overview

クイックスタート
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://platform.ultralytics.com/api/datasets
インタラクティブ API ドキュメント

Ultralytics Platform API docs で、完全なインタラクティブ API リファレンスをご覧ください。

API 概要

API は、コアとなるプラットフォームリソースを中心に構成されています。

graph LR
    A[API Key] --> B[Datasets]
    A --> C[Projects]
    A --> D[Models]
    A --> E[Deployments]
    B -->|train on| D
    C -->|contains| D
    D -->|deploy to| E
    D -->|export| F[Exports]
    B -->|auto-annotate| B
リソース説明主な操作
Datasetsラベル付き画像コレクションCRUD、画像、ラベル、エクスポート、バージョン、クローン
ProjectsトレーニングワークスペースCRUD、クローン、アイコン
Models学習済みチェックポイントCRUD、予測、ダウンロード、クローン、エクスポート
Deployments専用推論エンドポイントCRUD、開始/停止、メトリクス、ログ、ヘルスチェック
Exportsフォーマット変換ジョブ作成、ステータス、ダウンロード
Trainingクラウド GPU トレーニングジョブ開始、ステータス、キャンセル
Billingクレジットとサブスクリプション残高、チャージ、支払い方法
Teamsワークスペースコラボレーションメンバー、招待、ロール

認証

データセット、プロジェクト、モデル、トレーニング、エクスポート、予測などのリソース API は、API キーによる認証を使用します。公開エンドポイント(公開データセット、プロジェクト、モデルのリスト取得)は、キーなしでの匿名読み取りアクセスをサポートしています。アクティビティ、設定、チーム、請求、GDPR フローを含むアカウント関連のルートは、現在認証されたブラウザセッションを必要とし、API キー経由では利用できません。

API キーの取得

  1. Settings > API Keys に移動します
  2. Create Key をクリックします
  3. 生成されたキーをコピーします

詳細な手順については API Keys を参照してください。

認証ヘッダー

すべてのリクエストに API キーを含めてください:

Authorization: Bearer YOUR_API_KEY
API キーの形式

API キーは ul_ で始まり、その後に 40 文字の 16 進数が続く形式です。キーは秘密にし、バージョン管理にコミットしたり公開したりしないでください。

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://platform.ultralytics.com/api/datasets

ベース URL

すべての API エンドポイントは以下を使用します:

https://platform.ultralytics.com/api

レート制限

API は、悪用を防ぎつつ正当な利用を制限しないよう、API キーごとのレート制限(スライディングウィンドウ方式、Upstash Redis ベース)を設けています。匿名トラフィックは、Vercel のプラットフォームレベルの悪用防止制御によって保護されています。

制限を超えた場合、API はリトライメタデータとともに 429 を返します:

Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z

API キーごとの制限

レート制限は、呼び出されるエンドポイントに基づいて自動的に適用されます。負荷の高い操作には悪用を防ぐため厳しい制限が適用され、標準的な CRUD 操作には余裕のあるデフォルト設定が共有されます:

エンドポイント制限適用対象
デフォルト100 リクエスト/分以下に記載されていないすべてのエンドポイント(リスト、取得、作成、更新、削除)
トレーニング10 リクエスト/分クラウドトレーニングジョブの開始 (POST /api/training/start)
アップロード10 リクエスト/分ファイルアップロード、署名付き URL、データセットの取り込み
推論 (Predict)20 リクエスト/分共有モデル推論 (POST /api/models/{id}/predict)
エクスポート20 リクエスト/分モデルフォーマットのエクスポート (POST /api/exports)、データセットの NDJSON エクスポート、バージョン作成
ダウンロード30 リクエスト/分モデル重みファイルのダウンロード (GET /api/models/{id}/download)
専用無制限Dedicated endpoints — 独自のサービスであり、API 制限はありません

各カテゴリには、API キーごとに独立したカウンタがあります。例えば、20 回の予測リクエストを行っても、100 リクエスト/分のデフォルト枠には影響しません。

専用エンドポイント(無制限)

Dedicated endpointsAPI キーのレート制限の対象外です。モデルを専用エンドポイントにデプロイすると、そのエンドポイント URL(例: https://predict-abc123.run.app/predict)へのリクエストは、プラットフォーム側のレート制限を受けることなく、直接あなたの専用サービスへ送信されます。コンピューティングリソースに対して料金を支払っているため、共有 API 制限ではなく、専用サービスの構成に応じたスループットが得られます。

レート制限の処理

429 ステータスコードを受け取った場合は、Retry-After(または X-RateLimit-Reset まで)待機してからリトライしてください。エクスポネンシャルバックオフの実装については、rate limit FAQ を参照してください。

レスポンスフォーマット

成功レスポンス

レスポンスは、リソース固有のフィールドを含む JSON を返します:

{
    "datasets": [...],
    "total": 100
}

エラーレスポンス

{
    "error": "Dataset not found"
}
HTTP ステータス意味
200成功
201作成完了
400無効なリクエスト
401認証が必要
403権限不足
404リソースが見つかりません
409競合(重複)
429レート制限超過
500サーバーエラー

データセット API

YOLO モデルのトレーニング用に、ラベル付き画像データセットを作成、閲覧、管理します。Datasets documentation を参照してください。

データセットのリスト取得

GET /api/datasets

クエリパラメータ:

パラメータタイプ説明
username文字列ユーザー名によるフィルタリング
slug文字列スラッグを指定して単一のデータセットを取得
limitint1ページあたりのアイテム数 (デフォルト: 20、最大: 500)
owner文字列ワークスペース所有者のユーザー名
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/datasets?limit=10"

レスポンス:

{
    "datasets": [
        {
            "_id": "dataset_abc123",
            "name": "my-dataset",
            "slug": "my-dataset",
            "task": "detect",
            "imageCount": 1000,
            "classCount": 10,
            "classNames": ["person", "car"],
            "visibility": "private",
            "username": "johndoe",
            "starCount": 3,
            "isStarred": false,
            "sampleImages": [
                {
                    "url": "https://storage.example.com/...",
                    "width": 1920,
                    "height": 1080,
                    "labels": [{ "classId": 0, "bbox": [0.5, 0.4, 0.3, 0.6] }]
                }
            ],
            "createdAt": "2024-01-15T10:00:00Z",
            "updatedAt": "2024-01-16T08:30:00Z"
        }
    ],
    "total": 1,
    "region": "us"
}

データセットの取得

GET /api/datasets/{datasetId}

メタデータ、クラス名、分割ごとのカウントを含むデータセットの詳細全体を返します。

データセットの作成

POST /api/datasets

ボディ:

{
    "slug": "my-dataset",
    "name": "My Dataset",
    "task": "detect",
    "description": "A custom detection dataset",
    "visibility": "private",
    "classNames": ["person", "car"]
}
サポートされているタスク

有効な task 値: detect, segment, classify, pose, obb

データセットの更新

PATCH /api/datasets/{datasetId}

ボディ (部分更新):

{
    "name": "Updated Name",
    "description": "New description",
    "visibility": "public"
}

データセットの削除

DELETE /api/datasets/{datasetId}

データセットを論理削除します (ゴミ箱に移動され、30日間は復元可能です)。

データセットのクローン

POST /api/datasets/{datasetId}/clone

すべての画像とラベルを含むデータセットのコピーを作成します。公開データセットのみクローン可能です。アクティブなプラットフォームブラウザセッションが必要です(APIキー経由では利用できません)。

ボディ (全フィールド省略可能):

{
    "name": "cloned-dataset",
    "description": "My cloned dataset",
    "visibility": "private",
    "owner": "team-username"
}

データセットのエクスポート

GET /api/datasets/{datasetId}/export

最新のデータセットエクスポート用の署名付きダウンロードURLを含むJSONレスポンスを返します。

クエリパラメータ:

パラメータタイプ説明
v整数バージョン番号 (1から始まる)。省略した場合は、最新の(キャッシュされていない)エクスポートが返されます。

レスポンス:

{
    "downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
    "cached": true
}

データセットバージョンの作成

POST /api/datasets/{datasetId}/export

データセットの新しい番号付きバージョンスナップショットを作成します。所有者のみ可能です。このバージョンには、作成時点の画像数、クラス数、アノテーション数、分割分布が記録され、不変のNDJSONエクスポートが生成および保存されます。

リクエストボディ:

{
    "description": "Added 500 training images"
}

すべてのフィールドは省略可能です。description フィールドはユーザーが指定するバージョンのラベルです。

レスポンス:

{
    "version": 3,
    "downloadUrl": "https://storage.example.com/v3.ndjson?signed=..."
}

バージョン説明の更新

PATCH /api/datasets/{datasetId}/export

既存のバージョンの説明を更新します。所有者のみ可能です。

リクエストボディ:

{
    "version": 2,
    "description": "Fixed mislabeled classes"
}

レスポンス:

{
    "ok": true
}

クラス統計の取得

GET /api/datasets/{datasetId}/class-stats

クラス分布、場所のヒートマップ、および次元統計を返します。結果は最大5分間キャッシュされます。

レスポンス:

{
    "classes": [{ "classId": 0, "count": 1500, "imageCount": 450 }],
    "imageStats": {
        "widthHistogram": [{ "bin": 640, "count": 120 }],
        "heightHistogram": [{ "bin": 480, "count": 95 }],
        "pointsHistogram": [{ "bin": 4, "count": 200 }]
    },
    "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", "car", "dog"],
    "cached": true,
    "sampled": false,
    "sampleSize": 1000
}

データセットで学習したモデルの取得

GET /api/datasets/{datasetId}/models

このデータセットを使用して学習したモデルを返します。

レスポンス:

{
    "models": [
        {
            "_id": "model_abc123",
            "name": "experiment-1",
            "slug": "experiment-1",
            "status": "completed",
            "task": "detect",
            "epochs": 100,
            "bestEpoch": 87,
            "projectId": "project_xyz",
            "projectSlug": "my-project",
            "projectIconColor": "#3b82f6",
            "projectIconLetter": "M",
            "username": "johndoe",
            "startedAt": "2024-01-14T22:00:00Z",
            "completedAt": "2024-01-15T10:00:00Z",
            "createdAt": "2024-01-14T21:55:00Z",
            "metrics": {
                "mAP50": 0.85,
                "mAP50-95": 0.72,
                "precision": 0.88,
                "recall": 0.81
            }
        }
    ],
    "count": 1
}

データセットの自動アノテーション

POST /api/datasets/{datasetId}/predict

データセットの画像に対してYOLO推論を実行し、アノテーションを自動生成します。選択したモデルを使用して、アノテーションのない画像に対するラベルを予測します。

ボディ:

フィールドタイプ必須説明
imageHash文字列はいアノテーション対象画像のハッシュ
modelId文字列いいえ推論に使用するモデルID
confidencefloatいいえ信頼度のしきい値 (デフォルト: 0.25)
ioufloatいいえIoUのしきい値 (デフォルト: 0.45)

データセットの取り込み

POST /api/datasets/ingest

画像とラベルを含むZIPまたはTARファイル(.tar.gz.tgz を含む)を処理するためのデータセット取り込みジョブを作成します。

graph LR
    A[Upload Archive] --> B[POST /api/datasets/ingest]
    B --> C[Process Archive]
    C --> D[Extract images]
    C --> E[Parse labels]
    C --> F[Generate thumbnails]
    D & E & F --> G[Dataset ready]

データセットの画像

画像の一覧表示

GET /api/datasets/{datasetId}/images

クエリパラメータ:

パラメータタイプ説明
split文字列分割によるフィルタリング: train, val, test
offsetintページネーションのオフセット (デフォルト: 0)
limitint1ページあたりのアイテム数 (デフォルト: 50、最大: 5000)
sort文字列並び順: newest, oldest, name-asc, name-desc, height-asc, height-desc, width-asc, width-desc, size-asc, size-desc, labels-asc, labels-desc (10万枚を超える画像データセットでは一部無効)
hasLabel文字列ラベルの状態によるフィルタリング (true または false)
hasError文字列エラーの状態によるフィルタリング (true または false)
search文字列ファイル名または画像ハッシュによる検索
includeThumbnails文字列署名付きサムネイルURLを含める (デフォルト: true)
includeImageUrls文字列署名付きフル画像URLを含める (デフォルト: false)

署名付き画像URLの取得

POST /api/datasets/{datasetId}/images/urls

一連の画像ハッシュに対する署名付きURLを取得します(ブラウザ表示用)。

画像の削除

DELETE /api/datasets/{datasetId}/images/{hash}

画像ラベルの取得

GET /api/datasets/{datasetId}/images/{hash}/labels

特定の画像のアノテーションとクラス名を返します。

画像ラベルの更新

PUT /api/datasets/{datasetId}/images/{hash}/labels

ボディ:

{
    "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] }
    ]
}
座標形式

ラベル座標は、0から1の間のYOLO正規化値を使用します。バウンディングボックスは [x_center, y_center, width, height] を使用します。セグメンテーションラベルは、ポリゴン頂点のフラットなリストである segments[x1, y1, x2, y2, ...] を使用します。

画像の一括操作

データセット内の分割(train/val/test)間で画像を移動します:

PATCH /api/datasets/{datasetId}/images/bulk

画像の一括削除:

DELETE /api/datasets/{datasetId}/images/bulk

プロジェクトAPI

モデルをプロジェクトに整理します。各モデルは1つのプロジェクトに属します。プロジェクトのドキュメントを参照してください。

プロジェクトの一覧表示

GET /api/projects

クエリパラメータ:

パラメータタイプ説明
username文字列ユーザー名によるフィルタリング
limitint1ページあたりのアイテム数
owner文字列ワークスペース所有者のユーザー名

プロジェクトの取得

GET /api/projects/{projectId}

プロジェクトの作成

POST /api/projects
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-project", "slug": "my-project", "description": "Detection experiments"}' \
  https://platform.ultralytics.com/api/projects

プロジェクトの更新

PATCH /api/projects/{projectId}

プロジェクトの削除

DELETE /api/projects/{projectId}

プロジェクトを論理削除します (ゴミ箱に移動されます)。

プロジェクトのクローン

POST /api/projects/{projectId}/clone

公開プロジェクト(すべてのモデルを含む)をワークスペースにクローンします。アクティブなプラットフォームブラウザセッションが必要です(APIキー経由では利用できません)。

プロジェクトアイコン

プロジェクトアイコンをアップロードします(画像ファイルを含むマルチパートフォーム):

POST /api/projects/{projectId}/icon

プロジェクトアイコンを削除します:

DELETE /api/projects/{projectId}/icon

どちらもアクティブなプラットフォームブラウザセッションが必要です(APIキー経由では利用できません)。


モデルAPI

トレーニング済みのYOLOモデルを管理します。メトリクスの表示、ウェイトのダウンロード、推論の実行、他のフォーマットへのエクスポートが可能です。Modelsドキュメントを参照してください。

モデルの一覧表示

GET /api/models

クエリパラメータ:

パラメータタイプ必須説明
projectId文字列はいプロジェクトID(必須)
fields文字列いいえフィールドセット: summarycharts
ids文字列いいえカンマ区切りのモデルID
limitintいいえ最大結果数(デフォルト20、最大100)

完了済みモデルの一覧表示

GET /api/models/completed

トレーニングが完了したモデルを返します(モデルセレクターおよびデプロイメントで使用)。

モデルの取得

GET /api/models/{modelId}

モデルの作成

POST /api/models

JSONボディ:

フィールドタイプ必須説明
projectId文字列はいターゲットプロジェクトID
slug文字列いいえURLスラッグ(小文字の英数字/ハイフン)
name文字列いいえ表示名(最大100文字)
description文字列いいえモデルの説明(最大1000文字)
task文字列いいえタスクタイプ(detect、segment、pose、obb、classify)
モデルファイルのアップロード

モデルの.ptファイルのアップロードは別途処理されます。プラットフォームのUIを使用して、モデルファイルをプロジェクトにドラッグ&ドロップしてください。

モデルの更新

PATCH /api/models/{modelId}

モデルを削除

DELETE /api/models/{modelId}

モデルファイルのダウンロード

GET /api/models/{modelId}/files

モデルファイル用の署名付きダウンロードURLを返します。

モデルのクローン

POST /api/models/{modelId}/clone

公開モデルを自分のプロジェクトのいずれかに複製します。有効なプラットフォームのブラウザセッションが必要です(APIキー経由では利用できません)。

ボディ:

{
    "targetProjectSlug": "my-project",
    "modelName": "cloned-model",
    "description": "Cloned from public model",
    "owner": "team-username"
}
フィールドタイプ必須説明
targetProjectSlug文字列はい宛先プロジェクトスラッグ
modelName文字列いいえ複製されたモデルの名前
description文字列いいえモデルの説明
owner文字列いいえチームユーザー名(ワークスペース複製用)

ダウンロードの追跡

POST /api/models/{modelId}/track-download

モデルダウンロードの分析を追跡します。

推論の実行

POST /api/models/{modelId}/predict

マルチパートフォーム:

フィールドタイプ説明
fileファイル画像ファイル(JPEG、PNG、WebP)
conffloat信頼度のしきい値 (デフォルト: 0.25)
ioufloatIoU閾値(デフォルト: 0.7)
imgszint画像サイズ(ピクセル単位、デフォルト: 640)
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@image.jpg" \
  -F "conf=0.5" \
  https://platform.ultralytics.com/api/models/MODEL_ID/predict

レスポンス:

{
    "images": [
        {
            "shape": [1080, 1920],
            "results": [
                {
                    "class": 0,
                    "name": "person",
                    "confidence": 0.92,
                    "box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
                }
            ]
        }
    ],
    "metadata": {
        "imageCount": 1
    }
}

予測トークンの取得

POST /api/models/{modelId}/predict/token
ブラウザセッション限定

このルートは、アプリ内の「予測」タブで使用され、ブラウザからpredict-serviceへの直接呼び出し(低レイテンシ、APIプロキシなし)を行うための短期間有効な推論トークンを発行します。有効なプラットフォームのブラウザセッションが必要であり、APIキー経由では利用できません。プログラムによる推論を行う場合は、APIキーを使用してPOST /api/models/{modelId}/predictを呼び出してください。

モデルのウォームアップ

POST /api/models/{modelId}/predict/warmup
ブラウザセッション限定

ウォームアップルートは、ユーザーの最初の推論の前に予測サービス上でモデルのウェイトをプリロードするために「予測」タブで使用されます。有効なプラットフォームのブラウザセッションが必要であり、APIキー経由では利用できません。


トレーニングAPI

クラウドGPU(RTX 2000 AdaからB300まで24種類のGPUタイプ)でYOLOトレーニングを開始し、リアルタイムで進行状況を監視します。クラウドトレーニングドキュメントを参照してください。

graph LR
    A[POST /training/start] --> B[Job Created]
    B --> C{Training}
    C -->|progress| D[GET /models/id/training]
    C -->|cancel| E[DELETE /models/id/training]
    C -->|complete| F[Model Ready]
    F --> G[Deploy or Export]

トレーニングの開始

POST /api/training/start
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "modelId": "MODEL_ID",
    "projectId": "PROJECT_ID",
    "gpuType": "rtx-4090",
    "trainArgs": {
      "model": "yolo26n.pt",
      "data": "ul://username/datasets/my-dataset",
      "epochs": 100,
      "imgsz": 640,
      "batch": 16
    }
  }' \
  https://platform.ultralytics.com/api/training/start
GPUタイプ

利用可能なGPUタイプには、rtx-4090a100-80gb-pciea100-80gb-sxmh100-sxmrtx-pro-6000b300などが含まれます。価格を含む全リストはクラウドトレーニングを参照してください。

トレーニングステータスの取得

GET /api/models/{modelId}/training

モデルの現在のトレーニングジョブステータス、メトリクス、進捗状況を返します。公開プロジェクトは匿名でアクセス可能ですが、プライベートプロジェクトには有効なプラットフォームのブラウザセッションが必要です(このルートはAPIキー認証を受け付けません)。

トレーニングをキャンセルする

DELETE /api/models/{modelId}/training

実行中のコンピューティングインスタンスを終了し、ジョブをキャンセル済みとしてマークします。有効なプラットフォームのブラウザセッションが必要であり、APIキー経由では利用できません。


デプロイメントAPI

ヘルスチェックと監視を備えた専用の推論エンドポイントにモデルをデプロイします。新しいデプロイメントではデフォルトでスケール・トゥ・ゼロが使用され、APIはオプションのresourcesオブジェクトを受け付けます。エンドポイントドキュメントを参照してください。

ルートごとのAPIキーサポート

GET /api/deploymentsPOST /api/deploymentsGET /api/deployments/{deploymentId}、およびDELETE /api/deployments/{deploymentId}のみがAPIキー認証をサポートしています。predicthealthlogsmetricsstart、およびstopサブルートには有効なプラットフォームのブラウザセッションが必要です。これらはアプリ内UIのための便利なプロキシです。プログラムによる推論を行う場合は、デプロイメント独自のエンドポイントURL(例: https://predict-abc123.run.app/predict)をAPIキーを使用して直接呼び出してください。専用エンドポイントはレート制限を受けません。

graph LR
    A[Create] --> B[Deploying]
    B --> C[Ready]
    C -->|stop| D[Stopped]
    D -->|start| C
    C -->|delete| E[Deleted]
    D -->|delete| E
    C -->|predict| F[Inference Results]

デプロイメントの一覧表示

GET /api/deployments

クエリパラメータ:

パラメータタイプ説明
modelId文字列モデルによるフィルタリング
status文字列ステータスによるフィルタリング
limitint最大結果数(デフォルト: 20、最大: 100)
owner文字列ワークスペース所有者のユーザー名

デプロイメントの作成

POST /api/deployments

ボディ:

{
    "modelId": "model_abc123",
    "name": "my-deployment",
    "region": "us-central1",
    "resources": {
        "cpu": 1,
        "memoryGi": 2,
        "minInstances": 0,
        "maxInstances": 1
    }
}
フィールドタイプ必須説明
modelId文字列はいデプロイするモデルID
name文字列はいデプロイメント名
region文字列はいデプロイメントリージョン
resourcesオブジェクトいいえリソース構成(cpumemoryGiminInstancesmaxInstances

指定されたリージョンに専用の推論エンドポイントを作成します。エンドポイントはユニークなURLを介してグローバルにアクセス可能です。

デフォルトのリソース

デプロイメントダイアログは現在、cpu=1memoryGi=2minInstances=0maxInstances=1という固定されたデフォルト値を送信します。APIルートはresourcesオブジェクトを受け付けますが、プランの制限によりminInstances0maxInstances1に上限設定されます。

リージョンの選択

低レイテンシを実現するため、ユーザーに近いリージョンを選択してください。プラットフォームUIには、利用可能な43の全リージョンのレイテンシ見積もりが表示されます。

デプロイメントの取得

GET /api/deployments/{deploymentId}

デプロイメントの削除

DELETE /api/deployments/{deploymentId}

デプロイメントの開始

POST /api/deployments/{deploymentId}/start

停止したデプロイメントを再開します。

デプロイメントの停止

POST /api/deployments/{deploymentId}/stop

実行中のデプロイメントを一時停止します(課金を停止します)。

ヘルスチェック

GET /api/deployments/{deploymentId}/health

デプロイメントエンドポイントのヘルスステータスを返します。

デプロイメントでの推論実行

POST /api/deployments/{deploymentId}/predict

推論のために画像を直接デプロイメントエンドポイントに送信します。機能的にはモデルの予測と同等ですが、低レイテンシのために専用エンドポイントを経由します。

マルチパートフォーム:

フィールドタイプ説明
fileファイル画像ファイル(JPEG、PNG、WebP)
conffloat信頼度のしきい値 (デフォルト: 0.25)
ioufloatIoU閾値(デフォルト: 0.7)
imgszint画像サイズ(ピクセル単位、デフォルト: 640)

メトリクスの取得

GET /api/deployments/{deploymentId}/metrics

スパークラインデータを含むリクエスト数、レイテンシ、エラー率のメトリクスを返します。

クエリパラメータ:

パラメータタイプ説明
range文字列期間: 1h6h24h(デフォルト)、7d30d
sparkline文字列ダッシュボード表示用に最適化されたスパークラインデータを得るにはtrueに設定します

ログの取得

GET /api/deployments/{deploymentId}/logs

クエリパラメータ:

パラメータタイプ説明
severity文字列カンマ区切りのフィルタ: DEBUGINFOWARNINGERRORCRITICAL
limitintエントリ数(デフォルト: 50、最大: 200)
pageToken文字列前回のレスポンスからのページネーショントークン

監視API

ブラウザセッション限定

GET /api/monitoringはUI専用のルートであり、アクティブなプラットフォームブラウザセッションが必要です。APIキー認証には対応していません。デプロイメントごとのルート(これもブラウザセッション専用)を介して個別のデプロイメントメトリクスをクエリするか、プログラムによるアクセスのためにデプロイ済みのCloud RunサービスでCloud Monitoring exportsを使用してください。

集計メトリクス

GET /api/monitoring

すべてのユーザーデプロイメントにわたる集計メトリクス(総リクエスト数、アクティブなデプロイメント数、エラー率、平均レイテンシ)を返します。


エクスポートAPI

エッジデプロイメント用に、モデルをONNX、TensorRT、CoreML、TFLiteなどの最適化フォーマットに変換します。デプロイのドキュメントを参照してください。

エクスポートの一覧

GET /api/exports

クエリパラメータ:

パラメータタイプ説明
modelId文字列モデルID(必須)
status文字列ステータスによるフィルタリング
limitint最大結果数(デフォルト: 20、最大: 100)

エクスポートの作成

POST /api/exports

ボディ:

フィールドタイプ必須説明
modelId文字列はいソースモデルID
format文字列はいエクスポートフォーマット(下表を参照)
gpuType文字列条件付きformatengine(TensorRT)の場合に必須
argsオブジェクトいいえエクスポート引数(imgszhalfdynamicなど)
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"modelId": "MODEL_ID", "format": "onnx"}' \
  https://platform.ultralytics.com/api/exports

サポートされているフォーマット:

形式ユースケース
ONNXonnxクロスプラットフォーム推論
TorchScripttorchscriptPyTorchデプロイメント
OpenVINOopenvinoIntel ハードウェア
TensorRTengineNVIDIA GPU最適化
CoreMLcoremlApple デバイス
TFLitetfliteモバイルおよび組み込み
TF SavedModelsaved_modelTensorFlow Serving
TF GraphDefpbTensorFlowフローズングラフ
PaddlePaddlepaddleBaidu PaddlePaddle
NCNNncnnモバイルニューラルネットワーク
Edge TPUedgetpuGoogle Coral デバイス
TF.jstfjsブラウザ推論
MNNmnnAlibabaモバイル推論
RKNNrknnRockchip NPU
IMXimxSony IMX500 センサー
AxeleraaxeleraAxelera AI アクセラレータ
ExecuTorchexecutorchMeta ExecuTorchランタイム

エクスポートステータスの取得

GET /api/exports/{exportId}

エクスポートのキャンセル

DELETE /api/exports/{exportId}

エクスポートダウンロードの追跡

POST /api/exports/{exportId}/track-download

アクティビティAPI

アカウントでの最近のアクション(トレーニング実行、アップロードなど)のフィードを表示します。アクティビティのドキュメントを参照してください。

ブラウザセッション専用

アクティビティルートは、プラットフォームUIからのブラウザ認証リクエストによって動作します。これらは公開APIとして公開されておらず、APIキー認証も受け付けません。以下のルート形状は参照用としてのみドキュメント化されています。イベントの表示、マーク付け、アーカイブにはプラットフォームUIのアクティビティフィードを使用してください。

アクティビティの一覧

GET /api/activity

クエリパラメータ:

パラメータタイプ説明
limitintページサイズ(デフォルト: 20、最大: 100)
pageintページ番号(デフォルト: 1)
archivedbooleantrueはアーカイブタブ、falseは受信トレイ用
search文字列イベントフィールド内の大文字小文字を区別しない検索

イベントを既読にする

POST /api/activity/mark-seen

ボディ:

{
    "all": true
}

または特定のIDを渡す:

{
    "eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}

イベントをアーカイブする

POST /api/activity/archive

ボディ:

{
    "all": true,
    "archive": true
}

または特定のIDを渡す:

{
    "eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
    "archive": false
}

ゴミ箱API

削除されたアイテムの表示と復元を行います。アイテムは30日後に完全に削除されます。ゴミ箱のドキュメントを参照してください。

ゴミ箱の一覧

GET /api/trash

クエリパラメータ:

パラメータタイプ説明
type文字列フィルタ: allprojectdatasetmodel
pageintページ番号(デフォルト: 1)
limitint1ページあたりのアイテム数(デフォルト: 50、最大: 200)
owner文字列ワークスペース所有者のユーザー名

アイテムを復元する

POST /api/trash

ボディ:

{
    "id": "item_abc123",
    "type": "dataset"
}

アイテムを完全に削除する

DELETE /api/trash

ボディ:

{
    "id": "item_abc123",
    "type": "dataset"
}
取り消し不可

完全に削除すると元に戻せません。リソースおよび関連するすべてのデータは削除されます。

ゴミ箱を空にする

DELETE /api/trash/empty

ゴミ箱内のすべてのアイテムを完全に削除します。

認証

DELETE /api/trash/emptyには認証されたブラウザセッションが必要であり、APIキーでは利用できません。代わりにUIのゴミ箱を空にするボタンを使用してください。


課金API

クレジット残高の確認、クレジットの購入、取引履歴の表示、自動チャージの設定を行います。課金のドキュメントを参照してください。

通貨単位

課金額にはセント(creditsCents)を使用します。ここで100 = $1.00です。

残高の取得

GET /api/billing/balance

クエリパラメータ:

パラメータタイプ説明
owner文字列ワークスペース所有者のユーザー名

レスポンス:

{
    "creditsCents": 2500,
    "plan": "free",
    "cashBalance": 25,
    "creditBalance": 0,
    "reservedAmount": 0,
    "totalBalance": 25
}

使用状況サマリーの取得

GET /api/billing/usage-summary

プランの詳細、制限、使用量メトリクスを返します。

取引履歴の取得

GET /api/billing/transactions

取引履歴(最新のものから順に)を返します。

クエリパラメータ:

パラメータタイプ説明
owner文字列ワークスペース所有者のユーザー名

チェックアウトセッションの作成

POST /api/billing/checkout-session

ボディ:

{
    "amount": 25,
    "owner": "team-username"
}
フィールドタイプ必須説明
amountnumberはいドル単位の金額($5-$1000)
owner文字列いいえワークスペースチャージ用のチームユーザー名(管理者ロールが必要)

クレジット購入のためのチェックアウトセッションを作成します。

サブスクリプションチェックアウトの作成

POST /api/billing/subscription-checkout

Proサブスクリプションアップグレードのためのチェックアウトセッションを作成します。

ボディ:

{
    "planId": "pro",
    "billingCycle": "monthly",
    "owner": "team-username"
}
フィールドタイプ必須説明
planId文字列はいサブスクライブするプラン(pro
billingCycle文字列いいえ課金サイクル: monthly(デフォルト)またはyearly
owner文字列いいえワークスペースアップグレード用のチームユーザー名(管理者ロールが必要)

サブスクリプションのキャンセルまたは再開

DELETE /api/billing/subscription-checkout

デフォルトでは、期間終了時にProサブスクリプションがキャンセルされます。請求期間終了前にキャンセルを再開するには、{"resume": true}を送信してください。

ボディ:

{
    "resume": true
}

自動チャージ (Auto Top-Up)

残高がしきい値を下回った際に自動的にクレジットを追加します。

自動チャージ設定の取得

GET /api/billing/auto-topup

クエリパラメータ:

パラメータタイプ説明
owner文字列ワークスペース所有者のユーザー名

自動チャージ設定の更新

PATCH /api/billing/auto-topup

ボディ:

{
    "enabled": true,
    "thresholdCents": 500,
    "amountCents": 2500
}

支払い方法

支払い方法の一覧取得

GET /api/billing/payment-methods

Setup Intentの作成

POST /api/billing/payment-methods/setup

新しい支払い方法を追加するためのクライアントシークレットを返します。

デフォルトの支払い方法の設定

POST /api/billing/payment-methods/default

ボディ:

{
    "paymentMethodId": "pm_123"
}

請求情報の更新

PATCH /api/billing/payment-methods

ボディ:

{
    "name": "Jane Doe",
    "address": {
        "line1": "123 Main St",
        "city": "San Francisco",
        "state": "CA",
        "postal_code": "94105",
        "country": "US"
    }
}

支払い方法の削除

DELETE /api/billing/payment-methods/{id}

ストレージAPI

カテゴリー別(データセット、モデル、エクスポート)のストレージ使用内訳を確認し、容量の大きい項目を表示します。

ブラウザセッション限定

ストレージ関連のルートにはアクティブなプラットフォームのブラウザセッションが必要であり、APIキーではアクセスできません。対話的な内訳については、UIのSettings > Profileページを使用してください。

ストレージ情報の取得

GET /api/storage

レスポンス:

{
    "tier": "free",
    "usage": {
        "storage": {
            "current": 1073741824,
            "limit": 107374182400,
            "percent": 1.0
        }
    },
    "region": "us",
    "username": "johndoe",
    "updatedAt": "2024-01-15T10:00:00Z",
    "breakdown": {
        "byCategory": {
            "datasets": { "bytes": 536870912, "count": 2 },
            "models": { "bytes": 268435456, "count": 4 },
            "exports": { "bytes": 268435456, "count": 3 }
        },
        "topItems": [
            {
                "_id": "dataset_abc123",
                "name": "my-dataset",
                "slug": "my-dataset",
                "sizeBytes": 536870912,
                "type": "dataset"
            },
            {
                "_id": "model_def456",
                "name": "experiment-1",
                "slug": "experiment-1",
                "sizeBytes": 134217728,
                "type": "model",
                "parentName": "My Project",
                "parentSlug": "my-project"
            }
        ]
    }
}

アップロードAPI

署名付きURLを使用してファイルをクラウドストレージに直接アップロードし、高速かつ信頼性の高い転送を実現します。署名付きURLの取得とファイルアップロードの2ステップ構成です。Data documentationを参照してください。

署名付きアップロードURLの取得

POST /api/upload/signed-url

ファイルをクラウドストレージへ直接アップロードするための署名付きURLを要求します。署名付きURLを使用することで、大容量ファイル転送時にAPIサーバーを経由しません。

ボディ:

{
    "assetType": "images",
    "assetId": "abc123",
    "filename": "my-image.jpg",
    "contentType": "image/jpeg",
    "totalBytes": 5242880
}
フィールドタイプ説明
assetType文字列アセットタイプ: models, datasets, images, videos
assetId文字列ターゲットアセットのID
filename文字列元のファイル名
contentType文字列MIMEタイプ
totalBytesintバイト単位のファイルサイズ

レスポンス:

{
    "sessionId": "session_abc123",
    "uploadUrl": "https://storage.example.com/...",
    "objectPath": "images/abc123/my-image.jpg",
    "downloadUrl": "https://cdn.example.com/...",
    "expiresAt": "2026-02-22T12:00:00Z"
}

アップロードの完了

POST /api/upload/complete

ファイルのアップロードが完了したことをプラットフォームに通知し、処理を開始します。

ボディ:

{
    "datasetId": "abc123",
    "objectPath": "datasets/abc123/images/my-image.jpg",
    "filename": "my-image.jpg",
    "contentType": "image/jpeg",
    "size": 5242880
}

APIキー API

プログラムによるアクセスのためにAPIキーを管理します。API Keys documentationを参照してください。

APIキーの一覧取得

GET /api/api-keys

APIキーの作成

POST /api/api-keys

ボディ:

{
    "name": "training-server"
}

APIキーの削除

DELETE /api/api-keys

クエリパラメータ:

パラメータタイプ説明
keyId文字列取り消すAPIキーID

例:

curl -X DELETE \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"

チームとメンバーAPI

チームワークスペースの作成、メンバーの招待、共同作業のためのロール管理を行います。Teams documentationを参照してください。

チームの一覧取得

GET /api/teams

チームの作成

POST /api/teams/create

ボディ:

{
    "username": "my-team",
    "fullName": "My Team"
}

メンバーの一覧取得

GET /api/members

現在のワークスペースのメンバーを返します。

メンバーの招待

POST /api/members

ボディ:

{
    "email": "user@example.com",
    "role": "editor"
}
メンバーのロール
ロール権限
viewerワークスペースリソースへの読み取り専用アクセス
editorリソースの作成、編集、削除
adminメンバー、請求、全リソースの管理(チームオーナーのみ割り当て可能)

チームのownerは作成者であり、招待することはできません。オーナー権限の譲渡はPOST /api/members/transfer-ownershipを介して個別に行われます。ロールの詳細についてはTeamsを参照してください。

メンバーロールの更新

PATCH /api/members/{userId}

メンバーの削除

DELETE /api/members/{userId}

オーナー権限の譲渡

POST /api/members/transfer-ownership

招待

招待の承認

POST /api/invites/accept

招待情報の取得

GET /api/invites/info

クエリパラメータ:

パラメータタイプ説明
token文字列招待トークン

招待の取り消し

DELETE /api/invites/{inviteId}

招待の再送

POST /api/invites/{inviteId}/resend

探索API

コミュニティによって共有された公開データセットやプロジェクトを検索・閲覧します。Explore documentationを参照してください。

公開コンテンツの検索

GET /api/explore/search

クエリパラメータ:

パラメータタイプ説明
q文字列検索クエリ
type文字列リソースタイプ: all(デフォルト)、projectsdatasets
sort文字列並び替え順: stars(デフォルト)、newestoldestname-ascname-desccount-desccount-asc
offsetintページネーションのオフセット(デフォルト: 0)。結果は1ページあたり20件返されます。

サイドバーデータ

GET /api/explore/sidebar

探索サイドバー用の厳選されたコンテンツを返します。


ユーザーおよび設定API

プロファイル、APIキー、ストレージ使用量、データプライバシー設定を管理します。Settings documentationを参照してください。

ユーザー名によるユーザー取得

GET /api/users

クエリパラメータ:

パラメータタイプ説明
username文字列検索するユーザー名

ユーザーのフォローまたはフォロー解除

PATCH /api/users

ボディ:

{
    "username": "target-user",
    "followed": true
}

ユーザー名の利用可否確認

GET /api/username/check

クエリパラメータ:

パラメータタイプ説明
username文字列確認するユーザー名
suggestboolオプション: 使用中の場合に提案を含める場合はtrue

設定

GET /api/settings
POST /api/settings

ユーザープロファイル設定(表示名、自己紹介、SNSリンクなど)の取得または更新を行います。

プロファイルアイコン

POST /api/settings/icon
DELETE /api/settings/icon

プロファイルアバターのアップロードまたは削除を行います。

オンボーディング

POST /api/onboarding

オンボーディングフロー(データリージョン、ユーザー名の設定)を完了させます。


GDPR API

全データの書き出し要求、またはアカウントの永久削除を行います。Settings documentationを参照してください。

GDPRジョブステータスの取得

GET /api/gdpr

クエリパラメータ:

パラメータタイプ説明
jobId文字列確認するGDPRジョブID

ジョブステータスを返します。完了したエクスポートジョブについては、レスポンスにdownloadUrlが含まれます。

エクスポートまたは削除フローの開始

POST /api/gdpr

ボディ:

{
    "action": "export"
}
{
    "action": "delete",
    "confirmationWord": "DELETE"
}

チームワークスペース向けのオプション:

{
    "action": "delete",
    "confirmationWord": "DELETE",
    "teamUsername": "my-team"
}
取り消し不可能なアクション

アカウントの削除は永久的であり、元に戻すことはできません。すべてのデータ、モデル、デプロイメントが削除されます。


エラーコード

コードHTTP ステータス説明
UNAUTHORIZED401APIキーが無効、または指定されていません
FORBIDDEN403権限不足
NOT_FOUND404リソースが見つかりません
VALIDATION_ERROR400リクエストデータが無効です
RATE_LIMITED429リクエストが多すぎます
INTERNAL_ERROR500サーバーエラー

Python統合

より簡単に統合するには、認証、アップロード、リアルタイムのメトリクスストリーミングを自動的に処理するUltralytics Pythonパッケージを使用してください。

インストールとセットアップ

pip install ultralytics

インストールの確認:

yolo check
パッケージのバージョン要件

プラットフォームの統合には ultralytics>=8.4.35 が必要です。それより古いバージョンではプラットフォームは動作しません。

認証

yolo settings api_key=YOUR_API_KEY

プラットフォームデータセットの使用

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公式モデル

プラットフォームへのプッシュ

プラットフォームのプロジェクトに結果を送信します:

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",
)

同期対象:

  • トレーニングメトリクス(リアルタイム)
  • 最終的なモデルウェイト
  • 検証プロット
  • コンソール出力
  • システムメトリクス

API例

プラットフォームからモデルをロード:

# 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/datasets/my-dataset")

print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")

Webhook

プラットフォームは内部Webhookを使用して、ultralytics Python SDK(クラウドGPUやリモート/ローカルマシン上で実行)からエポックごとの損失、mAP、システム統計、完了ステータスなどのリアルタイムトレーニングメトリクスをプラットフォームにストリーミングします。これらのWebhookは、トレーニングジョブごとにプロビジョニングされたHMAC webhookSecret を介して認証されるため、ユーザーアプリケーションによる使用は想定されていません。

作業環境について

すべてのプラン: ultralytics SDKを介したトレーニングの進捗(リアルタイムメトリクス、完了通知)は、すべてのプランで自動的に機能します。トレーニング時に project=username/my-project name=my-run を設定するだけで、SDKがイベントをプラットフォームにストリーミングします。ユーザー側でのWebhook登録は不要です。

ユーザー向けのWebhookサブスクリプション(ユーザー管理のURLへのPOSTコールバック)はEnterpriseロードマップにありますが、現在利用できません。それまでの間は、GET /api/models/{modelId}/training をポーリングしてステータスを確認するか、UIのアクティビティフィードを使用してください。


FAQ

大量の結果をページネーションするにはどうすればよいですか?

ほとんどのエンドポイントは limit パラメータを使用して、リクエストごとに返される結果の数を制御します:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/datasets?limit=50"

ActivityおよびTrashエンドポイントも、ページベースのページネーション用に page パラメータをサポートしています:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/activity?page=2&limit=20"

The Explore Search endpoint uses offset instead of page, with a fixed page size of 20:

curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&sort=stars"

SDKなしでAPIを使用できますか?

はい、すべての機能がRESTを介して利用可能です。Python SDKは、リアルタイムメトリクスのストリーミングや自動モデルアップロードなどの機能を追加する便利なラッパーです。また、platform.ultralytics.com/api/docsで、すべてのエンドポイントを対話的に確認できます。

APIクライアントライブラリはありますか?

現在は、Ultralytics Pythonパッケージを使用するか、直接HTTPリクエストを行ってください。他の言語向けの公式クライアントライブラリを計画中です。

レート制限にはどう対処すればよいですか?

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 Exception("Rate limit exceeded")

モデルまたはデータセットIDはどのように見つけますか?

リソースIDは、APIを介してリソースを作成した際に返されます。プラットフォームのURLから確認することも可能です:

https://platform.ultralytics.com/username/project/model-name
                                  ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
                                  username project   model

リストエンドポイントを使用して、名前で検索するかプロジェクトでフィルタリングしてください。

コメント