Перейти к содержанию

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

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

Платформа Ultralytics: Обзор API

Быстрый старт

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

Интерактивная документация API

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

Обзор 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
РесурсОписаниеКлючевые операции
Наборы данныхКоллекции размеченных изображенийCRUD, изображения, метки, экспорт, версии, клонирование
ПроектыРабочие пространства для обученияCRUD, клонирование, значок
МоделиОбученные контрольные точкиCRUD, прогнозирование, загрузка, клонирование, экспорт
РазвертыванияВыделенные конечные точки выводаCRUD, запуск/остановка, метрики, логи, состояние
ЭкспортЗадачи преобразования форматаСоздание, статус, загрузка
ОбучениеЗадачи обучения на облачных GPUЗапуск, статус, отмена
ОплатаКредиты и подпискиБаланс, пополнение, способы оплаты
КомандыСотрудничество в рабочей областиУчастники, приглашения, роли

Аутентификация

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

Получить ключ API

  1. Перейти Settings > Profile (раздел API Keys)
  2. Нажмите Create Key
  3. Скопируйте сгенерированный ключ

Подробные инструкции см. в разделе Ключи API.

Заголовок авторизации

Включайте ваш ключ API во все запросы:

Authorization: Bearer YOUR_API_KEY

Формат ключа API

Ключи API используют формат ul_ за которым следуют 40 шестнадцатеричных символов. Храните ваш ключ в секрете — никогда не добавляйте его в систему контроля версий и не делитесь им публично.

Пример

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

headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(
    "https://platform.ultralytics.com/api/datasets",
    headers=headers,
)
data = response.json()
const response = await fetch("https://platform.ultralytics.com/api/datasets", {
  headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const data = await response.json();

Базовый URL

Все конечные точки API используют:

https://platform.ultralytics.com/api

Ограничения скорости запросов

API использует двухуровневую систему ограничения частоты запросов для защиты от злоупотреблений, сохраняя при этом неограниченное легитимное использование:

  • На каждый ключ API — Ограничения применяются для каждого ключа API к аутентифицированным запросам
  • По IP-адресу — 100 запросов/мин на IP-адрес для всех /api/* пути (применимо как к аутентифицированным, так и к неаутентифицированным запросам)

При ограничении скорости API возвращает 429 с метаданными повторных попыток:

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

Ограничения по ключу API

Ограничения частоты запросов применяются автоматически в зависимости от вызываемой конечной точки. Ресурсоемкие операции имеют более строгие ограничения для предотвращения злоупотреблений, в то время как стандартные CRUD-операции используют щедрые значения по умолчанию:

Конечная точкаЛимитПрименимо к
По умолчанию100 запросов/минВсе конечные точки, не перечисленные ниже (list, get, create, update, delete)
Обучение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) напрямую поступают в ваш выделенный сервис без ограничений скорости со стороны Платформы. Вы платите за вычисления, поэтому получаете неограниченную пропускную способность в пределах конфигурации масштабирования вашей конечной точки.

Управление лимитами частоты запросов

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

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

Успешные ответы

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

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

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

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

API наборов данных

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

Список наборов данных

GET /api/datasets

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

ПараметрТипОписание
usernameстрокаФильтровать по имени пользователя
slugстрокаПолучить один набор данных по слагу
limitintЭлементов на странице (по умолчанию: 20, макс.: 500)
ownerстрокаИмя пользователя владельца рабочей области
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/datasets?limit=10"
import requests

resp = requests.get(
    "https://platform.ultralytics.com/api/datasets",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"limit": 10},
)
for ds in resp.json()["datasets"]:
    print(f"{ds['name']}: {ds['imageCount']} images")

Ответ:

{
    "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

Создает копию набора данных со всеми изображениями и метками. Клонировать можно только общедоступные наборы данных.

Тело (все поля необязательны):

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

Экспорт набора данных

GET /api/datasets/{datasetId}/export

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

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

ПараметрТипОписание
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строкаНетИдентификатор модели для использования в инференсе
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)
limitintЭлементов на странице (по умолчанию: 50, макс.: 5000)
sortстрокаПорядок сортировки: newest, oldest, name-asc, name-desc, size-asc, size-desc, labels-asc, labels-desc
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] }]
}

Формат координат

Ограничивающие рамки используют нормализованный формат YOLO: [x_center, y_center, width, height] где все значения находятся в диапазоне от 0 до 1.

Массовые операции с изображениями

Перемещение изображений между разделами (обучающий/валидационный/тестовый) в рамках набора данных:

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

Массовое удаление изображений:

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

API проектов

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

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

GET /api/projects

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

ПараметрТипОписание
usernameстрокаФильтровать по имени пользователя
limitintЭлементов на странице
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
resp = requests.post(
    "https://platform.ultralytics.com/api/projects",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={"name": "my-project", "slug": "my-project", "description": "Detection experiments"},
)
project_id = resp.json()["projectId"]

Обновить проект

PATCH /api/projects/{projectId}

Удалить проект

DELETE /api/projects/{projectId}

Мягко удаляет проект (перемещен в корзину).

Клонировать проект

POST /api/projects/{projectId}/clone

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

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

POST /api/projects/{projectId}/icon

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

DELETE /api/projects/{projectId}/icon

API моделей

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

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

GET /api/models

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

ПараметрТипТребуетсяОписание
projectIdстрокаДаID проекта (обязательно)
fieldsстрокаНетНабор полей: summary, charts
idsстрокаНетИдентификаторы моделей, разделенные запятыми
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 загрузка файлов обрабатывается отдельно. Используйте пользовательский интерфейс платформы для перетаскивания файлов моделей в проект.

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

PATCH /api/models/{modelId}

Удалить модель

DELETE /api/models/{modelId}

Скачать файлы модели

GET /api/models/{modelId}/files

Возвращает подписанные URL-адреса для загрузки файлов модели.

Клонировать модель

POST /api/models/{modelId}/clone

Клонировать публичную модель в один из ваших проектов.

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

{
    "targetProjectSlug": "my-project",
    "modelName": "cloned-model",
    "description": "Cloned from public model",
    "owner": "team-username"
}
ПолеТипТребуетсяОписание
targetProjectSlugстрокаДаИдентификатор проекта назначения
modelNameстрокаНетИмя для клонированной модели
descriptionстрокаНетОписание модели
ownerстрокаНетИмя пользователя команды (для клонирования рабочего пространства)

track загрузки

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

track аналитики загрузки моделей.

Запуск Inference

POST /api/models/{modelId}/predict

Многокомпонентная форма:

ПолеТипОписание
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
with open("image.jpg", "rb") as f:
    resp = requests.post(
        f"https://platform.ultralytics.com/api/models/{model_id}/predict",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"file": f},
        data={"conf": 0.5},
    )
results = resp.json()["images"][0]["results"]

Ответ:

{
    "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

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

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

POST /api/models/{modelId}/predict/warmup

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


API обучения

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

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
resp = requests.post(
    "https://platform.ultralytics.com/api/training/start",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "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,
        },
    },
)

Типы GPU

Доступные типы GPU включают rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, и другие. См. Облачное обучение для полного списка с ценами.

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

GET /api/models/{modelId}/training

Возвращает текущий статус задания обучения, метрики и прогресс для модели.

Отменить обучение

DELETE /api/models/{modelId}/training

Завершает запущенный вычислительный экземпляр и помечает задание как отмененное.


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строкаДаИдентификатор модели для развертывания
nameстрокаДаИмя развертывания
regionстрокаДаРегион развертывания
resourcesобъектНетКонфигурация ресурсов (CPU, memoryGi, minInstances, maxInstances)

Создает выделенную конечную точку вывода в указанном регионе. Конечная точка глобально доступна по уникальному URL-адресу.

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

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

Получить развертывание

GET /api/deployments/{deploymentId}

Удалить развертывание

DELETE /api/deployments/{deploymentId}

Запустить развертывание

POST /api/deployments/{deploymentId}/start

Возобновить остановленное развертывание.

Остановить развертывание

POST /api/deployments/{deploymentId}/stop

Приостановить выполняемое развертывание (останавливает тарификацию).

Проверка работоспособности (Health Check)

GET /api/deployments/{deploymentId}/health

Возвращает статус работоспособности конечной точки развертывания.

Выполнить инференс при развертывании

POST /api/deployments/{deploymentId}/predict

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

Многокомпонентная форма:

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

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

GET /api/deployments/{deploymentId}/metrics

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

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

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

Получить журналы

GET /api/deployments/{deploymentId}/logs

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

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

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

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

GET /api/monitoring

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


API экспорта

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

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

GET /api/exports

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

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

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

POST /api/exports

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

ПолеТипТребуетсяОписание
modelIdстрокаДаID исходной модели
formatстрокаДаФормат экспорта (см. таблицу ниже)
gpuTypeстрокаУсловныйТребуется, когда 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
resp = requests.post(
    "https://platform.ultralytics.com/api/exports",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={"modelId": "MODEL_ID", "format": "onnx"},
)
export_id = resp.json()["exportId"]

Поддерживаемые форматы:

ФорматЗначениеВариант использования
ONNXonnxКроссплатформенный инференс
TorchScripttorchscriptРазвертывание PyTorch
OpenVINOopenvinoоборудование Intel
TensorRTengineОптимизация NVIDIA GPU
CoreMLcoremlУстройства Apple
TFLitetfliteМобильные и встраиваемые
TF SavedModelsaved_modelTensorFlow Serving
TF GraphDefpbTensorFlow frozen graph
PaddlePaddlepaddleBaidu PaddlePaddle
NCNNncnnМобильная нейронная сеть
Edge TPUedgetpuУстройства Google Coral
TF.jstfjsИнференс в браузере
MNNmnnИнференс Alibaba mobile
RKNNrknnNPU Rockchip
IMXimxДатчик Sony IMX500
AxeleraaxeleraУскорители ИИ Axelera
ExecuTorchexecutorchСреда выполнения Meta ExecuTorch

Получить статус экспорта

GET /api/exports/{exportId}

Отменить экспорт

DELETE /api/exports/{exportId}

track экспорта загрузки

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

API активности

Просматривайте ленту последних действий в вашей учетной записи — запуски обучения, загрузки и многое другое. См. документацию по активности.

Список активности

GET /api/activity

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

ПараметрТипОписание
limitintРазмер страницы (по умолчанию: 20, макс.: 100)
pageintНомер страницы (по умолчанию: 1)
archivedлогическийtrue для вкладки «Архив» 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строкаФильтр: all, project, dataset, model
pageintНомер страницы (по умолчанию: 1)
limitintЭлементов на странице (по умолчанию: 50, макс.: 200)
ownerстрокаИмя пользователя владельца рабочей области

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

POST /api/trash

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

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

Окончательно удалить элемент

DELETE /api/trash

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

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

Необратимо

Окончательное удаление невозможно отменить. Ресурс и все связанные с ним данные будут удалены.

Очистить корзину

DELETE /api/trash/empty

Окончательно удаляет все элементы из корзины.


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"
}
ПолеТипТребуетсяОписание
amountчислоДаСумма в долларах ($5-$1000)
ownerстрокаНетИмя пользователя команды для пополнения рабочего пространства (требуется роль администратора)

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

Создать оформление подписки

POST /api/billing/subscription-checkout

Создает сессию оформления заказа для обновления до Pro подписки.

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

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

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

POST /api/billing/portal-session

Возвращает URL-адрес портала выставления счетов для управления подписками.

Автопополнение

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

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

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 хранилища

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

Получить информацию о хранилище

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

Пересчитать хранилище

POST /api/storage

Запускает пересчет использования хранилища.


API загрузки

Загружайте файлы непосредственно в облачное хранилище, используя подписанные URL-адреса для быстрой и надежной передачи. Используется двухэтапный процесс: получение подписанного URL-адреса, затем загрузка файла. См. документацию по данным.

Получить подписанный 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.

Список ключей API

GET /api/api-keys

Создать ключ API

POST /api/api-keys

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

{
    "name": "training-server"
}

Удалить ключ API

DELETE /api/api-keys

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

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

Пример:

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

API команд и участников

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

Список команд

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Полный доступ, включая управление участниками

См. Команды для получения сведений о ролях в пользовательском интерфейсе.

Обновить роль участника

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

Ищите и просматривайте общедоступные наборы данных и проекты, которыми делится сообщество. См. документацию по разделу «Обзор».

Поиск общедоступного контента

GET /api/explore/search

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

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

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


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

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

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

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

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

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

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

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

Адаптация

POST /api/onboarding

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


API GDPR

Запросите экспорт всех ваших данных или безвозвратно удалите свою учетную запись. См. документацию по настройкам.

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

GET /api/gdpr

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

ПараметрТипОписание
jobIdстрокаID задачи 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.14. Более ранние версии НЕ будут работать с платформой.

Аутентификация

yolo settings api_key=YOUR_API_KEY
export ULTRALYTICS_API_KEY=YOUR_API_KEY
from ultralytics import settings

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Официальная модель

Загрузка на платформу

Отправка результатов в проект 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")

Выполнение инференса:

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

Вебхуки

Веб-хуки уведомляют ваш сервер о событиях платформы посредством HTTP POST колбэков:

СобытиеОписание
training.startedЗадача обучения начата
training.epochЭпоха завершена
training.completedОбучение завершено
training.failedОбучение не удалось
export.completedЭкспорт готов

Доступность планов

Все планы: Веб-хуки обучения через Python SDK (метрики в реальном времени, уведомления о завершении) работают автоматически на каждом плане — настройка не требуется.

Только для Enterprise: Пользовательские конечные точки веб-хуков, отправляющие обратные вызовы HTTP POST на URL-адрес вашего собственного сервера, требуют плана Enterprise. Свяжитесь с отделом продаж для получения подробной информации.


Часто задаваемые вопросы

Как осуществлять пагинацию больших результатов?

Большинство конечных точек используют limit параметр для контроля количества возвращаемых результатов на запрос:

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

Конечные точки Активность и Корзина также поддерживают page параметр для постраничной пагинации:

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

Конечная точка поиска «Обзор» использует 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-запросы. Официальные клиентские библиотеки для других языков планируются.

Как обрабатывать ограничения скорости запросов?

Используйте 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 моей модели или набора данных?

Идентификаторы ресурсов возвращаются при их создании через API. Их также можно найти в URL-адресе платформы:

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

Используйте конечные точки списка для поиска по имени или фильтрации по проекту.



📅 Создано 2 месяцев назад ✏️ Обновлено 2 дней назад
glenn-jochermykolaxboikosergiuwaxmannLaughing-q

Комментарии