Справочник REST API

Ultralytics Platform предоставляет комплексный REST API для программного доступа к датасетам, моделям, обучению и развертываниям.

Обзор API Ultralytics Platform

Быстрый старт
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://platform.ultralytics.com/api/datasets
Интерактивная документация API

Изучи полный интерактивный справочник API в документации API Ultralytics Platform.

Обзор 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 шестнадцатеричных символов. Храни свой ключ в секрете — никогда не добавляй его в систему контроля версий и не распространяй публично.

Пример

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-адреса и загрузка датасетов
Предсказание20 запросов/минСовместный инференс модели (POST /api/models/{id}/predict)
Экспорт20 запросов/минЭкспорт форматов моделей (POST /api/exports), экспорт датасетов в NDJSON и создание версий
Скачивание30 запросов/минСкачивание файлов весов моделей (GET /api/models/{id}/download)
ВыделенныеБез ограниченийВыделенные эндпоинты — твой собственный сервис, без API-лимитов

Каждая категория имеет независимый счетчик на API-ключ. Например, выполнение 20 запросов на предсказание не влияет на твой лимит по умолчанию в 100 запросов/мин.

Выделенные эндпоинты (без ограничений)

Выделенные эндпоинты не подлежат лимитам частоты API-ключей. Когда ты разворачиваешь модель на выделенном эндпоинте, запросы к этому URL (например, https://predict-abc123.run.app/predict) идут напрямую к твоему выделенному сервису без ограничения скорости со стороны Платформы. Ты платишь за вычислительные мощности, поэтому получаешь пропускную способность, исходя из конфигурации твоего выделенного сервиса, а не общих лимитов API.

Обработка лимитов частоты

При получении кода состояния 429 подожди в течение времени, указанного в Retry-After (или до истечения X-RateLimit-Reset), перед повторной попыткой. См. FAQ по лимитам запросов для реализации экспоненциальной задержки.

Формат ответа

Ответы об успехе

Ответы возвращают JSON со специфическими для ресурса полями:

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

Ответы об ошибках

{
    "error": "Dataset not found"
}
HTTP статусЗначение
200Успешно
201Создано
400Неверный запрос
401Требуется аутентификация
403Недостаточно прав
404Ресурс не найден
409Конфликт (дубликат)
429Превышен лимит запросов
500Ошибка сервера

Datasets API

Создавай, просматривай и управляй размеченными датасетами изображений для обучения моделей YOLO. См. документацию Datasets.

Список датасетов

GET /api/datasets

Параметры запроса:

ПараметрТипОписание
usernamestringФильтр по имени пользователя
slugstringПолучить один набор данных по его слагу
limitintКоличество элементов на странице (по умолчанию: 20, макс.: 500)
ownerstringИмя пользователя владельца рабочего пространства
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

Возвращает JSON-ответ с подписанной ссылкой для скачивания последнего экспорта набора данных.

Параметры запроса:

ПараметрТипОписание
vintegerНомер версии (начиная с 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-инференс на изображениях набора данных для автоматической генерации аннотаций. Использует выбранную модель для предсказания меток на неразмеченных изображениях.

Тело запроса:

ПолеТипОбязательноОписание
imageHashstringДаХэш изображения для разметки
modelIdstringНет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

Параметры запроса:

ПараметрТипОписание
splitstringФильтр по разбиению: train, val, test
offsetintСмещение пагинации (по умолчанию: 0)
limitintКоличество элементов на странице (по умолчанию: 50, макс.: 5000)
sortstringПорядок сортировки: newest, oldest, name-asc, name-desc, height-asc, height-desc, width-asc, width-desc, size-asc, size-desc, labels-asc, labels-desc (некоторые отключены для наборов с более чем 100 000 изображений)
hasLabelstringФильтр по статусу наличия разметки (true или false)
hasErrorstringФильтр по статусу наличия ошибки (true или false)
searchstringПоиск по имени файла или хэшу изображения
includeThumbnailsstringВключить подписанные URL миниатюр (по умолчанию: true)
includeImageUrlsstringВключить подписанные 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] }
    ]
}
Формат координат

Координаты разметки используют нормализованные значения YOLO от 0 до 1. Ограничивающие рамки (BBox) используют [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 проектов

Организуй свои модели по проектам. Каждая модель принадлежит одному проекту. См. документацию по проектам.

Список проектов

GET /api/projects

Параметры запроса:

ПараметрТипОписание
usernamestringФильтр по имени пользователя
limitintЭлементов на странице
ownerstringИмя пользователя владельца рабочего пространства

Получить проект

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-ключ.

Значок проекта

Загрузи значок проекта (multipart form с файлом изображения):

POST /api/projects/{projectId}/icon

Удалить значок проекта:

DELETE /api/projects/{projectId}/icon

Оба требуют активного сеанса браузера на платформе — недоступно через API-ключ.


API моделей

Управляй обученными моделями YOLO — просматривай метрики, скачивай веса, запускай инференс и экспортируй в другие форматы. См. документацию по моделям.

Список моделей

GET /api/models

Параметры запроса:

ПараметрТипОбязательноОписание
projectIdstringДаID проекта (обязательно)
fieldsstringНетНабор полей: summary, charts
idsstringНетID моделей, разделенные запятыми
limitintНетМаксимальное количество результатов (по умолчанию 20, максимум 100)

Список завершенных моделей

GET /api/models/completed

Возвращает модели, которые завершили обучение (для использования в селекторах моделей и развертывании).

Получить модель

GET /api/models/{modelId}

Создать модель

POST /api/models

JSON-тело:

ПолеТипОбязательноОписание
projectIdstringДаЦелевой ID проекта
slugstringНетURL-слаг (строчные латинские буквы/цифры/дефисы)
namestringНетОтображаемое имя (макс. 100 символов)
descriptionstringНетОписание модели (макс. 1000 символов)
taskstringНетТип задачи (detect, segment, pose, obb, classify)
Загрузка файла модели

Загрузка .pt-файлов моделей обрабатывается отдельно. Используй интерфейс платформы для перетаскивания файлов моделей в проект.

Обновить модель

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"
}
ПолеТипОбязательноОписание
targetProjectSlugstringДаСлаг целевого проекта
modelNamestringНетИмя для клонированной модели
descriptionstringНетОписание модели
ownerstringНетИмя пользователя команды (для клонирования рабочей области)

Отслеживать скачивание

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

Отслеживай аналитику скачивания моделей.

Запустить инференс

POST /api/models/{modelId}/predict

Multipart-форма:

ПолеТипОписание
fileфайлФайл изображения (JPEG, PNG, WebP)
conffloatПорог уверенности (по умолчанию: 0.25)
ioufloatПорог IoU (по умолчанию: 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 внутри приложения для выдачи кратковременных токенов инференса для прямых вызовов браузер → predict-service (меньшая задержка, без API-прокси). Он требует активного сеанса браузера на платформе и недоступен через API-ключ. Для программного инференса вызывай POST /api/models/{modelId}/predict со своим API-ключом.

Прогрев модели

POST /api/models/{modelId}/predict/warmup
Только сеанс браузера

Маршрут прогрева используется вкладкой Predict для предварительной загрузки весов модели в сервис предсказаний перед первым инференсом пользователя. Он требует активного сеанса браузера на платформе и недоступен через API-ключ.


API обучения

Запускай обучение YOLO на облачных GPU (24 типа GPU от RTX 2000 Ada до B300) и отслеживай прогресс в реальном времени. См. документацию по облачному обучению.

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-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, b300 и другие. См. облачное обучение для полного списка с ценами.

Получить статус обучения

GET /api/models/{modelId}/training

Возвращает текущий статус задания обучения, метрики и прогресс для модели. Публичные проекты доступны анонимно; приватные проекты требуют активного сеанса браузера на платформе (этот маршрут не принимает аутентификацию по API-ключу).

Отмена обучения

DELETE /api/models/{modelId}/training

Завершает работающий экземпляр вычислений и помечает задание как отмененное. Требует активного сеанса браузера на платформе — недоступно через API-ключ.


API развертывания

Развертывай модели на выделенных эндпоинтах инференса с проверками работоспособности и мониторингом. Новые развертывания по умолчанию используют масштабирование до нуля, а API принимает опциональный объект resources. См. документацию по эндпоинтам.

Поддержка API-ключа по маршрутам

Только GET /api/deployments, POST /api/deployments, GET /api/deployments/{deploymentId} и DELETE /api/deployments/{deploymentId} поддерживают аутентификацию по API-ключу. Подмаршруты predict, health, logs, metrics, start и 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

Параметры запроса:

ПараметрТипОписание
modelIdstringФильтр по модели
statusstringФильтр по статусу
limitintМаксимальное количество результатов (по умолчанию: 20, максимум: 100)
ownerstringИмя пользователя владельца рабочего пространства

Создать развертывание

POST /api/deployments

Тело запроса:

{
    "modelId": "model_abc123",
    "name": "my-deployment",
    "region": "us-central1",
    "resources": {
        "cpu": 1,
        "memoryGi": 2,
        "minInstances": 0,
        "maxInstances": 1
    }
}
ПолеТипОбязательноОписание
modelIdstringДаID модели для развертывания
namestringДаИмя развертывания
regionstringДаРегион развертывания
resourcesобъектНетКонфигурация ресурсов (cpu, memoryGi, minInstances, maxInstances)

Создает выделенный эндпоинт инференса в указанном регионе. Эндпоинт глобально доступен по уникальному URL.

Ресурсы по умолчанию

Диалоговое окно развертывания в настоящее время отправляет фиксированные значения по умолчанию: cpu=1, memoryGi=2, minInstances=0 и maxInstances=1. Маршрут API принимает объект resources, но лимиты тарифа ограничивают minInstances до 0, а maxInstances до 1.

Выбор региона

Выбирай регион ближе к своим пользователям для минимальной задержки. 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

Отправь изображение напрямую на эндпоинт развертывания для инференса. Функционально эквивалентно предсказанию модели, но маршрутизируется через выделенный эндпоинт для меньшей задержки.

Multipart-форма:

ПолеТипОписание
fileфайлФайл изображения (JPEG, PNG, WebP)
conffloatПорог уверенности (по умолчанию: 0.25)
ioufloatПорог IoU (по умолчанию: 0.7)
imgszintРазмер изображения в пикселях (по умолчанию: 640)

Получить метрики

GET /api/deployments/{deploymentId}/metrics

Возвращает количество запросов, задержку и метрики частоты ошибок со спарклайн-данными.

Параметры запроса:

ПараметрТипОписание
rangestringВременной диапазон: 1h, 6h, 24h (по умолчанию), 7d, 30d
sparklinestringУстанови true для оптимизированных данных спарклайна для вида дашборда

Получить логи

GET /api/deployments/{deploymentId}/logs

Параметры запроса:

ПараметрТипОписание
severitystringФильтр, разделенный запятыми: DEBUG, INFO, WARNING, ERROR, CRITICAL
limitintКоличество записей (по умолчанию: 50, максимум: 200)
pageTokenstringТокен пагинации из предыдущего ответа

API мониторинга

Только сеанс браузера

GET /api/monitoring — это маршрут только для UI, требующий активной сессии браузера на платформе. Он не поддерживает аутентификацию по API-ключу. Запрашивай метрики отдельных развертываний через маршруты для конкретных развертываний (они также доступны только через сессию браузера) или используй Cloud Monitoring exports на развернутом сервисе Cloud Run для программного доступа.

Агрегированные метрики

GET /api/monitoring

Возвращает агрегированные метрики по всем развертываниям пользователя: общее количество запросов, активные развертывания, частоту ошибок и среднюю задержку.


API экспорта

Конвертируй модели в оптимизированные форматы, такие как ONNX, TensorRT, CoreML и TFLite, для развертывания на периферийных устройствах. См. документацию по развертыванию.

Список экспортов

GET /api/exports

Параметры запроса:

ПараметрТипОписание
modelIdstringID модели (обязательно)
statusstringФильтр по статусу
limitintМаксимальное количество результатов (по умолчанию: 20, максимум: 100)

Создать экспорт

POST /api/exports

Тело запроса:

ПолеТипОбязательноОписание
modelIdstringДаID исходной модели
formatstringДаФормат экспорта (см. таблицу ниже)
gpuTypestringУсловный параметрОбязателен, если format имеет значение engine (TensorRT)
argsобъектНетАргументы экспорта (imgsz, half, dynamic и т. д.)
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Кроссплатформенный инференс
TorchScripttorchscriptРазвертывание PyTorch
OpenVINOopenvinoОборудование Intel
TensorRTengineОптимизация для NVIDIA GPU
CoreMLcoremlУстройства Apple
TFLitetfliteМобильные и встроенные системы
TF SavedModelsaved_modelTensorFlow Serving
TF GraphDefpbЗамороженный граф TensorFlow
PaddlePaddlepaddleBaidu PaddlePaddle
NCNNncnnМобильная нейронная сеть
Edge TPUedgetpuУстройства Google Coral
TF.jstfjsИнференс в браузере
MNNmnnМобильный инференс Alibaba
RKNNrknnRockchip NPU
IMXimxСенсор Sony IMX500
AxeleraaxeleraУскорители Axelera AI
ExecuTorchexecutorchСреда выполнения Meta 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)
archivedлогическое значениеtrue для вкладки архива, false для входящих
searchstringПоиск без учета регистра в полях событий

Отметить события как просмотренные

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

Параметры запроса:

ПараметрТипОписание
typestringФильтр: all, project, dataset, model
pageintНомер страницы (по умолчанию: 1)
limitintЭлементов на странице (по умолчанию: 50, макс: 200)
ownerstringИмя пользователя владельца рабочего пространства

Восстановить элемент

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

Параметры запроса:

ПараметрТипОписание
ownerstringИмя пользователя владельца рабочего пространства

Ответ:

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

Получить сводку использования

GET /api/billing/usage-summary

Возвращает детали плана, лимиты и метрики использования.

Получить транзакции

GET /api/billing/transactions

Возвращает историю транзакций (сначала самые недавние).

Параметры запроса:

ПараметрТипОписание
ownerstringИмя пользователя владельца рабочего пространства

Создать сессию оплаты

POST /api/billing/checkout-session

Тело запроса:

{
    "amount": 25,
    "owner": "team-username"
}
ПолеТипОбязательноОписание
amountчислоДаСумма в долларах ($5-$1000)
ownerstringНетИмя пользователя команды для пополнения рабочего пространства (требуется роль администратора)

Создает сессию оплаты для покупки кредитов.

Создать оплату подписки

POST /api/billing/subscription-checkout

Создает сессию оплаты для перехода на подписку Pro.

Тело запроса:

{
    "planId": "pro",
    "billingCycle": "monthly",
    "owner": "team-username"
}
ПолеТипОбязательноОписание
planIdstringДаПлан для подписки (pro)
billingCyclestringНетЦикл оплаты: monthly (по умолчанию) или yearly
ownerstringНетИмя пользователя команды для повышения уровня рабочего пространства (требуется роль администратора)

Отмена или возобновление подписки

DELETE /api/billing/subscription-checkout

По умолчанию отменяет подписку Pro в конце периода. Отправь {"resume": true}, чтобы возобновить уже запланированную отмену до окончания биллингового периода.

Тело запроса:

{
    "resume": true
}

Автоматическое пополнение

Автоматически добавлять кредиты, когда баланс падает ниже порогового значения.

Получить конфигурацию автопополнения

GET /api/billing/auto-topup

Параметры запроса:

ПараметрТипОписание
ownerstringИмя пользователя владельца рабочего пространства

Обновить конфигурацию автопополнения

PATCH /api/billing/auto-topup

Тело запроса:

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

Способы оплаты

Список способов оплаты

GET /api/billing/payment-methods

Создать намерение настройки

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 ключ. Используй страницу 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, затем загрузка файла. См. Data documentation.

Получить подписанный URL для загрузки

POST /api/upload/signed-url

Запроси подписанный URL для загрузки файла напрямую в облачное хранилище. Подписанный URL позволяет обойти сервер API при передаче больших файлов.

Тело запроса:

{
    "assetType": "images",
    "assetId": "abc123",
    "filename": "my-image.jpg",
    "contentType": "image/jpeg",
    "totalBytes": 5242880
}
ПолеТипОписание
assetTypestringТип ресурса: models, datasets, images, videos
assetIdstringID целевого ресурса
filenamestringОригинальное имя файла
contentTypestringТип 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

Параметры запроса:

ПараметрТипОписание
keyIdstringID API ключа для отзыва

Пример:

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

Параметры запроса:

ПараметрТипОписание
tokenstringТокен приглашения

Отозвать приглашение

DELETE /api/invites/{inviteId}

Отправить приглашение повторно

POST /api/invites/{inviteId}/resend

API исследования (Explore)

Ищи и просматривай публичные наборы данных и проекты, которыми поделилось сообщество. См. Explore documentation.

Поиск публичного контента

GET /api/explore/search

Параметры запроса:

ПараметрТипОписание
qstringПоисковый запрос
typestringТип ресурса: all (по умолчанию), projects, datasets
sortstringПорядок сортировки: stars (по умолчанию), newest, oldest, name-asc, name-desc, count-desc, count-asc
offsetintСмещение пагинации (по умолчанию: 0). Результаты возвращаются по 20 элементов на страницу.

Данные боковой панели

GET /api/explore/sidebar

Возвращает отобранный контент для боковой панели Explore.


API пользователей и настроек

Управляй своим профилем, API ключами, использованием хранилища и настройками конфиденциальности данных. См. Settings documentation.

Получить пользователя по имени

GET /api/users

Параметры запроса:

ПараметрТипОписание
usernamestringИмя пользователя для поиска

Подписаться или отписаться от пользователя

PATCH /api/users

Тело запроса:

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

Проверить доступность имени пользователя

GET /api/username/check

Параметры запроса:

ПараметрТипОписание
usernamestringИмя пользователя для проверки
suggestboolОпционально: true, чтобы включить предложение, если имя занято

Настройки

GET /api/settings
POST /api/settings

Получить или обновить настройки профиля пользователя (отображаемое имя, биография, социальные ссылки и т.д.).

Значок профиля

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

Загрузи или удали аватар профиля.

Онбординг

POST /api/onboarding

Заверши процесс онбординга (установи регион данных, имя пользователя).


API GDPR

Запроси экспорт всех своих данных или навсегда удали свою учетную запись. См. Settings documentation.

Получить статус задачи GDPR

GET /api/gdpr

Параметры запроса:

ПараметрТипОписание
jobIdstringID задачи GDPR для проверки

Возвращает статус задачи. Для завершенных задач экспорта ответ включает downloadUrl.

Начать процесс экспорта или удаления

POST /api/gdpr

Тело запроса:

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

Опционально для командных рабочих пространств:

{
    "action": "delete",
    "confirmationWord": "DELETE",
    "teamUsername": "my-team"
}
Необратимое действие

Удаление аккаунта необратимо и не может быть отменено. Все данные, модели и развертывания будут удалены.


Коды ошибок

КодHTTP статусОписание
UNAUTHORIZED401Неверный или отсутствующий API ключ
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

Использование наборов данных платформы

Ссылка на наборы данных с помощью URI ul://:

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

Что синхронизируется:

  • Метрики обучения (в реальном времени)
  • Финальные веса модели
  • Графики валидации
  • Вывод консоли
  • Системные метрики

Примеры API

Загрузка модели из Platform:

# Your own model
model = YOLO("ul://username/project/model-name")

# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")

Запуск вывода (inference):

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

Вебхуки

Platform использует внутренние вебхуки для передачи метрик обучения в реальном времени из Python SDK ultralytics (работающего на облачных GPU или удаленных/локальных машинах) обратно на Platform — loss по эпохам, mAP, системную статистику и статус завершения. Эти вебхуки проходят аутентификацию через HMAC webhookSecret, предоставленный для каждой задачи обучения, и не предназначены для использования пользовательскими приложениями.

Работа на твоей стороне

Все тарифы: Прогресс обучения через SDK ultralytics (метрики в реальном времени, уведомления о завершении) работает автоматически на любом тарифе — просто установи project=username/my-project name=my-run при обучении, и SDK будет транслировать события обратно на Platform. Регистрация вебхуков на стороне пользователя не требуется.

Подписки на вебхуки для пользователей (POST-коллбэки на контролируемый тобой URL) находятся в плане развития Enterprise и в данный момент недоступны. Тем временем используй опрос GET /api/models/{modelId}/training для получения статуса или используй ленту активности в интерфейсе.


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"

Эндпоинт Explore Search использует offset вместо page с фиксированным размером страницы 20:

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

Могу ли я использовать API без SDK?

Да, весь функционал доступен через REST. Python SDK — это удобная обертка, добавляющая такие функции, как потоковая передача метрик в реальном времени и автоматическая загрузка моделей. Ты также можешь интерактивно изучить все эндпоинты на platform.ultralytics.com/api/docs.

Существуют ли клиентские библиотеки API?

В настоящий момент используй пакет Ultralytics для Python или выполняй прямые HTTP-запросы. Официальные клиентские библиотеки для других языков запланированы.

Как обрабатывать лимиты запросов (rate limits)?

Используй заголовок Retry-After из ответа 429, чтобы подождать необходимое время:

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

Используй эндпоинты списка (list endpoints) для поиска по имени или фильтрации по проекту.

Комментарии