Passer au contenu

Référence de l'API REST

La plateforme Ultralytics fournit une API REST complète pour l'accès programmatique aux jeux de données, aux modèles, à l'entraînement et aux déploiements.

Présentation de l'API de Ultralytics

Démarrage rapide

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

Documentation interactive sur les API

Consultez la documentation complète et interactive sur l'API dans la section « API » de Ultralytics .

Présentation de l'API

L'API est organisée autour des ressources principales de la plateforme :

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
RessourceDescriptionOpérations clés
Jeux de donnéesCollections d'images étiquetéesCRUD, images, étiquettes, exportation, versions, clonage
ProjetsEspaces de travail pour la formationCRUD, clonage, icône
ModèlesPoints de contrôle formésCRUD, prédiction, téléchargement, clonage, exportation
DéploiementsPoints de terminaison d'inférence dédiésCRUD, démarrage/arrêt, métriques, journaux, état de santé
ExportationsTâches de conversion de formatCréer, statut, télécharger
EntraînementTâches d'entraînement GPU dans le cloudDémarrer, statut, annuler
FacturationCrédits et abonnementsSolde, recharge, méthodes de paiement
ÉquipesCollaboration dans l'espace de travailMembres, invitations, rôles

Authentification

La plupart des requêtes API nécessitent une authentification via une clé API. Les points de terminaison publics (répertoriant les ensembles de données, les projets et les modèles publics) prennent en charge l'accès en lecture anonyme sans clé.

Obtenir la clé API

  1. Aller à Settings > Profile (section Clés API)
  2. Cliquer Create Key
  3. Copiez la clé générée

Consultez les Clés API pour des instructions détaillées.

En-tête d'autorisation

Incluez votre clé API dans toutes les requêtes :

Authorization: Bearer YOUR_API_KEY

Format de clé API

Les clés API utilisent le format ul_ suivi de 40 caractères hexadécimaux. Gardez votre clé secrète : ne la transmettez jamais au contrôle de version et ne la partagez jamais publiquement.

Exemple

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 de base

Tous les points d'accès API utilisent :

https://platform.ultralytics.com/api

Limites de débit

L'API utilise un système de limitation de débit à deux niveaux pour se protéger contre les abus tout en laissant libre cours aux utilisations légitimes :

  • Par clé API — Limites appliquées par clé API sur les requêtes authentifiées
  • Par IP — 100 requêtes/min par adresse IP sur tous les /api/* chemins (s'applique aux requêtes authentifiées et non authentifiées)

Lorsqu'elle est limitée, l'API renvoie 429 avec les métadonnées de nouvelle tentative :

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

Limites par clé API

Les limites de débit sont appliquées automatiquement en fonction du point de terminaison appelé. Les opérations coûteuses ont des limites plus strictes afin d'éviter les abus, tandis que les opérations CRUD standard bénéficient d'une limite par défaut généreuse :

Point de terminaisonLimiteS'applique à
Par défaut100 requêtes/minTous les points de terminaison non listés ci-dessous (list, get, create, update, delete)
Entraînement10 requêtes/minCommencer des emplois dans le domaine de la formation au cloud (POST /api/training/start)
Téléversement10 requêtes/minTéléchargements de fichiers, URL signées et ingestion d'ensembles de données
Prédire20 requêtes/minInférence de modèle partagé (POST /api/models/{id}/predict)
Exporter20 requêtes/minExportations au format modèle (POST /api/exports), les exportations NDJSON de jeux de données et la création de versions
Télécharger30 requêtes/minTéléchargements de fichiers de poids des modèles (GET /api/models/{id}/download)
DédiéIllimitéPoints de terminaison dédiés — votre propre service, sans limites d'API

Chaque catégorie dispose d'un compteur indépendant par clé API. Par exemple, effectuer 20 requêtes de prédiction n'affecte pas votre allocation par défaut de 100 requêtes/min.

Points de terminaison dédiés (Illimités)

Points de terminaison dédiés sont non soumis aux limites de débit des clés API. Lorsque vous déployez un modèle sur un point de terminaison dédié, les requêtes vers l'URL de ce point de terminaison (par exemple, https://predict-abc123.run.app/predict) vont directement à votre service dédié sans limitation de débit de la part de la Plateforme. Vous payez pour la puissance de calcul, vous bénéficiez donc d'un débit illimité jusqu'à la configuration de mise à l'échelle de votre point de terminaison.

Limites de débit de traitement

Lorsque vous recevez un 429 code d'état, attendre Retry-After (ou jusqu'à ce que X-RateLimit-Reset) avant de réessayer. Voir le FAQ sur la limite de débit pour une implémentation du backoff exponentiel.

Format de réponse

Réponses positives

Les réponses renvoient un JSON avec des champs spécifiques à la ressource :

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

Réponses d'erreur

{
    "error": "Dataset not found"
}
Statut HTTPSignification
200Succès
201Créée
400Demande non valide
401Authentification requise
403Autorisations insuffisantes
404Ressource introuvable
409Conflit (doublon)
429Limite de débit dépassée
500Erreur serveur

API des jeux de données

Créer, parcourir et gérer des jeux de données d'images étiquetées pour l'entraînement des modèles YOLO. Consulter la documentation des jeux de données.

Lister les ensembles de données

GET /api/datasets

Paramètres de requête :

ParamètreTypeDescription
usernamechaîne de caractèresFiltrer par nom d'utilisateur
slugchaîne de caractèresRécupérer un ensemble de données unique par slug
limitintÉléments par page (par défaut : 20, max. : 500)
ownerchaîne de caractèresNom d'utilisateur du propriétaire de l'espace de travail
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")

Réponse :

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

Obtenir un jeu de données

GET /api/datasets/{datasetId}

Renvoie tous les détails de l'ensemble de données, y compris les métadonnées, les noms de classe et les nombres de divisions.

Créer un jeu de données

POST /api/datasets

Corps :

{
    "slug": "my-dataset",
    "name": "My Dataset",
    "task": "detect",
    "description": "A custom detection dataset",
    "visibility": "private",
    "classNames": ["person", "car"]
}

Tâches prises en charge

Valide task valeurs : detect, segment, classify, pose, obb.

Mettre à jour l'ensemble de données

PATCH /api/datasets/{datasetId}

Corps (mise à jour partielle) :

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

Supprimer l'ensemble de données

DELETE /api/datasets/{datasetId}

Supprime temporairement l'ensemble de données (déplacé vers la corbeille, récupérable pendant 30 jours).

Cloner le jeu de données

POST /api/datasets/{datasetId}/clone

Crée une copie du jeu de données avec toutes les images et étiquettes. Seuls les jeux de données publics peuvent être clonés.

Corps (tous les champs sont facultatifs) :

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

Exporter le jeu de données

GET /api/datasets/{datasetId}/export

Renvoie une réponse JSON avec une URL de téléchargement signée pour la dernière exportation de l'ensemble de données.

Paramètres de requête :

ParamètreTypeDescription
ventierNuméro de version (indexé à partir de 1). Si omis, renvoie la dernière exportation (non mise en cache).

Réponse :

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

Créer une version de jeu de données

POST /api/datasets/{datasetId}/export

Créer un nouvel instantané de version numérotée du jeu de données. Réservé au propriétaire. La version capture le nombre actuel d'images, le nombre de classes, le nombre d'annotations et la distribution des divisions, puis génère et stocke une exportation NDJSON immuable.

Corps de la requête :

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

Tous les champs sont facultatifs. Le description Le champ est une étiquette fournie par l'utilisateur pour la version.

Réponse :

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

Description de la version mise à jour

PATCH /api/datasets/{datasetId}/export

Mettre à jour la description d'une version existante. Réservé au propriétaire.

Corps de la requête :

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

Réponse :

{
    "ok": true
}

Obtenir les statistiques de classe

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

Renvoie la distribution des classes, la carte thermique des emplacements et les statistiques dimensionnelles. Les résultats sont mis en cache pendant 5 minutes maximum.

Réponse :

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

Obtenir des modèles formés sur un ensemble de données

GET /api/datasets/{datasetId}/models

Renvoie les modèles qui ont été entraînés à l'aide de cet ensemble de données.

Réponse :

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

Annotation automatique de jeu de données

POST /api/datasets/{datasetId}/predict

Exécutez YOLO sur les images de l'ensemble de données pour générer automatiquement des annotations. Utilise un modèle sélectionné pour prédire les étiquettes des images non annotées.

Corps :

ChampTypeObligatoireDescription
imageHashchaîne de caractèresOuiHachage de l'image à annoter
modelIdchaîne de caractèresNonID du modèle à utiliser pour l'inférence
confidenceflottantNonSeuil de confiance (par défaut : 0,25)
iouflottantNonIoU (valeur par défaut : 0,45)

Ingestion du jeu de données

POST /api/datasets/ingest

Créer une tâche d'ingestion de jeu de données pour traiter les fichiers ZIP ou TAR téléchargés, y compris .tar.gz et .tgz, contenant des images et des étiquettes.

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]

Images du jeu de données

Liste des images

GET /api/datasets/{datasetId}/images

Paramètres de requête :

ParamètreTypeDescription
splitchaîne de caractèresFiltrer par fractionnement : train, val, test
offsetintDécalage de pagination (par défaut : 0)
limitintÉléments par page (par défaut : 50, max. : 5000)
sortchaîne de caractèresOrdre de tri : newest, oldest, name-asc, name-desc, size-asc, size-desc, labels-asc, labels-desc
hasLabelchaîne de caractèresFiltrer par statut de l'étiquette (true ou false)
hasErrorchaîne de caractèresFiltrer par statut d'erreur (true ou false)
searchchaîne de caractèresRecherche par nom de fichier ou hachage d'image
includeThumbnailschaîne de caractèresInclure les URL des vignettes signées (par défaut : true)
includeImageUrlschaîne de caractèresInclure les URL complètes signées des images (par défaut : false)

Obtenir les URL des images signées

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

Obtenir des URL signées pour un lot de hachages d'images (à afficher dans le navigateur).

Supprimer l'image

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

Obtenir des étiquettes d'image

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

Renvoie les annotations et les noms de classe pour une image spécifique.

Mettre à jour les étiquettes d'image

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

Corps :

{
    "labels": [{ "classId": 0, "bbox": [0.5, 0.5, 0.2, 0.3] }]
}

Format des coordonnées

Les boîtes englobantes utilisent le format normalisé YOLO : [x_center, y_center, width, height] où toutes les valeurs sont comprises entre 0 et 1.

Opérations d'images en masse

Déplacer des images entre les divisions (train/val/test) au sein d'un ensemble de données :

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

Supprimer les images en masse :

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

API des projets

Regroupez vos modèles dans des projets. Chaque modèle appartient à un seul projet. Consultez la documentation sur les projets.

Lister les projets

GET /api/projects

Paramètres de requête :

ParamètreTypeDescription
usernamechaîne de caractèresFiltrer par nom d'utilisateur
limitintÉléments par page
ownerchaîne de caractèresNom d'utilisateur du propriétaire de l'espace de travail

Obtenir un projet

GET /api/projects/{projectId}

Créer un projet

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

Mettre à jour le projet

PATCH /api/projects/{projectId}

Supprimer le projet

DELETE /api/projects/{projectId}

Supprime temporairement le projet (déplacé vers la corbeille).

Cloner le projet

POST /api/projects/{projectId}/clone

Icône du projet

Télécharger une icône de projet (formulaire en plusieurs parties avec fichier image) :

POST /api/projects/{projectId}/icon

Supprimer l'icône du projet :

DELETE /api/projects/{projectId}/icon

API des modèles

Gérer YOLO entraînés : consulter les métriques, télécharger les poids, effectuer des inférences et exporter vers d'autres formats. Consultez la documentation sur les modèles.

Lister les modèles

GET /api/models

Paramètres de requête :

ParamètreTypeObligatoireDescription
projectIdchaîne de caractèresOuiIdentifiant du projet (obligatoire)
fieldschaîne de caractèresNonEnsemble de champs : summary, charts
idschaîne de caractèresNonID de modèle séparés par des virgules
limitintNonRésultats maximums (par défaut 20, maximum 100)

Liste des modèles terminés

GET /api/models/completed

Renvoie les modèles dont la formation est terminée (à utiliser dans les sélecteurs de modèles et le déploiement).

Obtenir le modèle

GET /api/models/{modelId}

Créer un modèle

POST /api/models

Corps JSON :

ChampTypeObligatoireDescription
projectIdchaîne de caractèresOuiID du projet cible
slugchaîne de caractèresNonURL slug (caractères alphanumériques minuscules/tirets)
namechaîne de caractèresNonNom d'affichage (max 100 caractères)
descriptionchaîne de caractèresNonDescription du modèle (1000 caractères maximum)
taskchaîne de caractèresNonType de tâche (detect, segment, pose, obb, classify)

Téléchargement du fichier modèle

Modèle .pt Les téléchargements de fichiers sont traités séparément. Utilisez l'interface utilisateur de la plateforme pour glisser-déposer les fichiers de modèle dans un projet.

Mettre à jour le modèle

PATCH /api/models/{modelId}

Supprimer le modèle

DELETE /api/models/{modelId}

Télécharger les fichiers du modèle

GET /api/models/{modelId}/files

Renvoie les URL de téléchargement signées pour les fichiers de modèle.

Cloner le modèle

POST /api/models/{modelId}/clone

Cloner un modèle public vers l'un de vos projets.

Corps :

{
    "targetProjectSlug": "my-project",
    "modelName": "cloned-model",
    "description": "Cloned from public model",
    "owner": "team-username"
}
ChampTypeObligatoireDescription
targetProjectSlugchaîne de caractèresOuiSlug du projet de destination
modelNamechaîne de caractèresNonNom du modèle cloné
descriptionchaîne de caractèresNonDescription du modèle
ownerchaîne de caractèresNonNom d'utilisateur de l'équipe (pour le clonage de l'espace de travail)

Suivre le téléchargement

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

Suivre les statistiques de téléchargement des modèles.

Exécuter l'inférence

POST /api/models/{modelId}/predict

Formulaire multipartie :

ChampTypeDescription
filefichierFichier image (JPEG, PNG, WebP)
confflottantSeuil de confiance (par défaut : 0,25)
iouflottantIoU (par défaut : 0,7)
imgszintTaille de l'image en pixels (valeur par défaut : 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"]

Réponse :

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

Obtenir un jeton Predict

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

Obtenez un jeton à durée limitée pour les demandes de prédiction directe. Le jeton contourne le proxy API pour une inférence à faible latence à partir des applications côté client.

Modèle d'échauffement

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

Préchargez un modèle pour accélérer la première inférence. Appelez cette fonction avant d'exécuter les prédictions afin d'éviter tout retard lors de la requête initiale.


API d'entraînement

Lancez YOLO sur des GPU cloud (RTX 4090, A100, H100) et suivez la progression en temps réel. Consultez la documentation sur l'entraînement dans le cloud.

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]

Démarrer l'entraînement

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

Types de GPU disponibles : rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, et d'autres. Voir Formation Cloud pour obtenir la liste complète avec les prix.

Obtenir le statut d'entraînement

GET /api/models/{modelId}/training

Renvoie l'état actuel de la tâche d'entraînement, les métriques et la progression d'un modèle.

Annuler l'entraînement

DELETE /api/models/{modelId}/training

Met fin à l'instance de calcul en cours d'exécution et marque le travail comme annulé.


API des déploiements

Déployez des modèles sur des points de terminaison d'inférence dédiés avec auto-mise à l'échelle, vérifications de l'état et surveillance. Consultez la documentation des points de terminaison.

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]

Lister les déploiements

GET /api/deployments

Paramètres de requête :

ParamètreTypeDescription
modelIdchaîne de caractèresFiltrer par modèle
statuschaîne de caractèresFiltrer par statut
limitintRésultats maximum (par défaut : 20, maximum : 100)
ownerchaîne de caractèresNom d'utilisateur du propriétaire de l'espace de travail

Créer un déploiement

POST /api/deployments

Corps :

{
    "modelId": "model_abc123",
    "name": "my-deployment",
    "region": "us-central1",
    "resources": {
        "cpu": 1,
        "memoryGi": 2,
        "minInstances": 0,
        "maxInstances": 1
    }
}
ChampTypeObligatoireDescription
modelIdchaîne de caractèresOuiID du modèle à déployer
namechaîne de caractèresOuiNom du déploiement
regionchaîne de caractèresOuiRégion de déploiement
resourcesobjetNonConfiguration des ressources (cpu, mémoireGi, minInstances, maxInstances)

Crée un point de terminaison d'inférence dédié dans la région spécifiée. Le point de terminaison est accessible mondialement via une URL unique.

Sélection de la région

Choisissez une région proche de vos utilisateurs pour une latence minimale. L'interface utilisateur de la plateforme affiche les estimations de latence pour les 43 régions disponibles.

Obtenir le déploiement

GET /api/deployments/{deploymentId}

Supprimer le déploiement

DELETE /api/deployments/{deploymentId}

Démarrer le déploiement

POST /api/deployments/{deploymentId}/start

Reprendre un déploiement interrompu.

Arrêter le déploiement

POST /api/deployments/{deploymentId}/stop

Suspendre un déploiement en cours (arrête la facturation).

Vérification de l'état

GET /api/deployments/{deploymentId}/health

Renvoie l'état de santé du point de terminaison de déploiement.

Exécuter l'inférence lors du déploiement

POST /api/deployments/{deploymentId}/predict

Envoyez une image directement à un point de terminaison de déploiement pour l'inférence. Fonctionnellement équivalent à la prédiction du modèle, mais acheminé via le point de terminaison dédié pour une latence réduite.

Formulaire multipartie :

ChampTypeDescription
filefichierFichier image (JPEG, PNG, WebP)
confflottantSeuil de confiance (par défaut : 0,25)
iouflottantIoU (par défaut : 0,7)
imgszintTaille de l'image en pixels (valeur par défaut : 640)

Obtenir les métriques

GET /api/deployments/{deploymentId}/metrics

Renvoie les métriques relatives au nombre de demandes, à la latence et au taux d'erreur avec des données sparkline.

Paramètres de requête :

ParamètreTypeDescription
rangechaîne de caractèresPériode : 1h, 6h, 24h (par défaut), 7d, 30d
sparklinechaîne de caractèresRéglé sur true pour des données sparkline optimisées pour l'affichage du tableau de bord

Obtenir les journaux

GET /api/deployments/{deploymentId}/logs

Paramètres de requête :

ParamètreTypeDescription
severitychaîne de caractèresFiltre séparé par des virgules : DEBUG, INFO, WARNING, ERROR, CRITICAL
limitintNombre d'entrées (par défaut : 50, max. : 200)
pageTokenchaîne de caractèresJeton de pagination provenant de la réponse précédente

API de surveillance

Métriques Agrégées

GET /api/monitoring

Renvoie des mesures agrégées pour tous les déploiements utilisateur : nombre total de requêtes, déploiements actifs, taux d'erreur et latence moyenne.


API d'exportation

Convertir les modèles vers des formats optimisés tels que ONNX, TensorRT, CoreML et TFLite pour le déploiement en périphérie. Consulter la documentation de déploiement.

Lister les exportations

GET /api/exports

Paramètres de requête :

ParamètreTypeDescription
modelIdchaîne de caractèresIdentifiant du modèle (obligatoire)
statuschaîne de caractèresFiltrer par statut
limitintRésultats maximum (par défaut : 20, maximum : 100)

Créer une exportation

POST /api/exports

Corps :

ChampTypeObligatoireDescription
modelIdchaîne de caractèresOuiID du modèle source
formatchaîne de caractèresOuiFormat d'exportation (voir tableau ci-dessous)
gpuTypechaîne de caractèresConditionnelRequis lorsque format est engine (TensorRT)
argsobjetNonArguments d'exportation (imgsz, half, dynamic, etc.)
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"]

Formats pris en charge :

FormatValeurCas d'utilisation
ONNXonnxInférence multiplateforme
TorchScripttorchscriptDéploiement PyTorch
OpenVINOopenvinoMatériel Intel
TensorRTengineGPU NVIDIA
CoreMLcoremlAppareils Apple
TFLitetfliteMobile et intégré
TF SavedModelsaved_modelTensorFlow
TF GraphDefpbGraphique TensorFlow
PaddlePaddlepaddleBaidu PaddlePaddle
NCNNncnnRéseau neuronal mobile
Edge TPUedgetpuAppareils Google Coral
TF.jstfjsInférence du navigateur
MNNmnnInférence mobile Alibaba
RKNNrknnNPU Rockchip
IMXimxCapteur Sony IMX500
AxeleraaxeleraAccélérateurs Axelera AI
ExecuTorchexecutorchMoteur d'exécution Meta ExecuTorch

Obtenir le statut d'exportation

GET /api/exports/{exportId}

Annuler l'exportation

DELETE /api/exports/{exportId}

Suivre l'exportation Télécharger

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

API d'activité

Consultez le flux des actions récentes sur votre compte : séances d'entraînement, fichiers téléchargés, etc. Consultez la documentation sur l'activité.

Lister l'activité

GET /api/activity

Paramètres de requête :

ParamètreTypeDescription
limitintTaille de la page (par défaut : 20, max. : 100)
pageintNuméro de page (par défaut : 1)
archivedbooléentrue pour l'onglet Archive, false pour la boîte de réception
searchchaîne de caractèresRecherche insensible à la casse dans les champs d'événement

Marquer les événements comme vus

POST /api/activity/mark-seen

Corps :

{
    "all": true
}

Ou transmettre des identifiants spécifiques :

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

Archiver les événements

POST /api/activity/archive

Corps :

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

Ou transmettre des identifiants spécifiques :

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

API Corbeille

Afficher et restaurer les éléments supprimés. Les éléments sont définitivement supprimés au bout de 30 jours. Consultez la documentation relative à la corbeille.

Lister la corbeille

GET /api/trash

Paramètres de requête :

ParamètreTypeDescription
typechaîne de caractèresFiltre : all, project, dataset, model
pageintNuméro de page (par défaut : 1)
limitintÉléments par page (par défaut : 50, max. : 200)
ownerchaîne de caractèresNom d'utilisateur du propriétaire de l'espace de travail

Restaurer l'élément

POST /api/trash

Corps :

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

Supprimer définitivement l'élément

DELETE /api/trash

Corps :

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

Irréversible

La suppression définitive est irréversible. La ressource et toutes les données associées seront supprimées.

Vider la corbeille

DELETE /api/trash/empty

Supprime définitivement tous les éléments de la corbeille.


API Facturation

Vérifiez votre solde de crédits, achetez des crédits, consultez l'historique des transactions et configurez le rechargement automatique. Consultez la documentation de facturation.

Devises

Les montants de facturation sont en cents (creditsCents) où 100 = $1.00.

Obtenir le solde

GET /api/billing/balance

Paramètres de requête :

ParamètreTypeDescription
ownerchaîne de caractèresNom d'utilisateur du propriétaire de l'espace de travail

Réponse :

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

Obtenir le résumé d'utilisation

GET /api/billing/usage-summary

Retourne les détails du plan, les limites et les métriques d'utilisation.

Obtenir les transactions

GET /api/billing/transactions

Renvoie l'historique des transactions (les plus récentes en premier).

Paramètres de requête :

ParamètreTypeDescription
ownerchaîne de caractèresNom d'utilisateur du propriétaire de l'espace de travail

Créer une session de paiement

POST /api/billing/checkout-session

Corps :

{
    "amount": 25,
    "owner": "team-username"
}
ChampTypeObligatoireDescription
amountnuméroOuiMontant en dollars (5 $ - 1000 $)
ownerchaîne de caractèresNonNom d'utilisateur de l'équipe pour les recharges d'espace de travail (nécessite un rôle d'administrateur)

Crée une session de paiement pour l'achat de crédits.

Créer un paiement d'abonnement

POST /api/billing/subscription-checkout

Crée une session de paiement pour la mise à niveau de l'abonnement Pro.

Corps :

{
    "planId": "pro",
    "billingCycle": "monthly",
    "owner": "team-username"
}
ChampTypeObligatoireDescription
planIdchaîne de caractèresOuiPrévoyez de vous abonner à (pro)
billingCyclechaîne de caractèresNonCycle de facturation : monthly (par défaut) ou yearly
ownerchaîne de caractèresNonNom d'utilisateur de l'équipe pour les mises à niveau de l'espace de travail (nécessite un rôle d'administrateur)

Créer une session de portail

POST /api/billing/portal-session

Renvoie l'URL vers le portail de facturation pour la gestion des abonnements.

Recharge automatique

Ajouter automatiquement des crédits lorsque le solde tombe en dessous d'un seuil.

Obtenir la configuration de la recharge automatique

GET /api/billing/auto-topup

Paramètres de requête :

ParamètreTypeDescription
ownerchaîne de caractèresNom d'utilisateur du propriétaire de l'espace de travail

Mettre à jour la configuration de la recharge automatique

PATCH /api/billing/auto-topup

Corps :

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

Méthodes de paiement

Liste des modes de paiement

GET /api/billing/payment-methods

Créer une intention de configuration

POST /api/billing/payment-methods/setup

Renvoie un secret client pour ajouter un nouveau mode de paiement.

Définir le mode de paiement par défaut

POST /api/billing/payment-methods/default

Corps :

{
    "paymentMethodId": "pm_123"
}

Mettre à jour les informations de facturation

PATCH /api/billing/payment-methods

Corps :

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

Supprimer le mode de paiement

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

API Stockage

Vérifiez la répartition de votre utilisation du stockage par catégorie (jeux de données, modèles, exportations) et visualisez vos éléments les plus volumineux.

Obtenir les informations de stockage

GET /api/storage

Réponse :

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

Recalculer le stockage

POST /api/storage

Déclenche un nouveau calcul de l'utilisation du stockage.


API de téléchargement

Téléchargez des fichiers directement vers un espace de stockage dans le cloud à l'aide d'URL signées pour des transferts rapides et fiables. La procédure se déroule en deux étapes : obtenez une URL signée, puis téléchargez le fichier. Consultez la documentation relative aux données.

Obtenir l'URL de téléchargement signée

POST /api/upload/signed-url

Demandez une URL signée pour télécharger un fichier directement vers le stockage cloud. L'URL signée contourne le serveur API pour les transferts de fichiers volumineux.

Corps :

{
    "assetType": "images",
    "assetId": "abc123",
    "filename": "my-image.jpg",
    "contentType": "image/jpeg",
    "totalBytes": 5242880
}
ChampTypeDescription
assetTypechaîne de caractèresType d'actif : models, datasets, images, videos
assetIdchaîne de caractèresIdentifiant de l'actif cible
filenamechaîne de caractèresNom de fichier d'origine
contentTypechaîne de caractèresType MIME
totalBytesintTaille du fichier en octets

Réponse :

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

Téléchargement terminé

POST /api/upload/complete

Informez la plateforme que le téléchargement d'un fichier est terminé afin qu'elle puisse commencer le traitement.

Corps :

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

API Clés API

Gérez vos clés API pour l'accès programmatique. Consultez la documentation sur les clés API.

Lister les clés API

GET /api/api-keys

Créer une clé API

POST /api/api-keys

Corps :

{
    "name": "training-server"
}

Supprimer une clé API

DELETE /api/api-keys

Paramètres de requête :

ParamètreTypeDescription
keyIdchaîne de caractèresID de clé API à révoquer

Exemple :

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

API Équipes et membres

Créer des espaces de travail d'équipe, inviter des membres et gérer les rôles pour la collaboration. Consulter la documentation des équipes.

Liste des équipes

GET /api/teams

Créer une équipe

POST /api/teams/create

Corps :

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

Liste des membres

GET /api/members

Renvoie les membres de l'espace de travail actuel.

Inviter un membre

POST /api/members

Corps :

{
    "email": "user@example.com",
    "role": "editor"
}

Rôles des membres

RôlePermissions
viewerAccès en lecture seule aux ressources de l'espace de travail
editorCréer, modifier et supprimer des ressources
adminAccès complet, y compris la gestion des membres

Consultez Teams pour obtenir des détails sur les rôles dans l'interface utilisateur.

Mettre à jour le rôle des membres

PATCH /api/members/{userId}

Supprimer le membre

DELETE /api/members/{userId}

Transfert de propriété

POST /api/members/transfer-ownership

Invitations

Accepter l'invitation

POST /api/invites/accept

Obtenir les informations relatives à l'invitation

GET /api/invites/info

Paramètres de requête :

ParamètreTypeDescription
tokenchaîne de caractèresJeton d'invitation

Annuler l'invitation

DELETE /api/invites/{inviteId}

Renvoyer l'invitation

POST /api/invites/{inviteId}/resend

Explorer l'API

Recherchez et parcourez les ensembles de données publics et les projets partagés par la communauté. Consultez la documentation « Explorer ».

Rechercher du contenu public

GET /api/explore/search

Paramètres de requête :

ParamètreTypeDescription
qchaîne de caractèresRequête de recherche
typechaîne de caractèresType de ressource : all (par défaut), projects, datasets
sortchaîne de caractèresOrdre de tri : stars (par défaut), newest, oldest, name-asc, name-desc, count-desc, count-asc
offsetintDécalage de pagination (valeur par défaut : 0). Les résultats renvoient 20 éléments par page.
GET /api/explore/sidebar

Renvoie du contenu sélectionné pour la barre latérale Explorer.


API utilisateur et paramètres

Gérez votre profil, vos clés API, votre utilisation du stockage et vos paramètres de confidentialité des données. Consultez la documentation relative aux paramètres.

Obtenir l'utilisateur par nom d'utilisateur

GET /api/users

Paramètres de requête :

ParamètreTypeDescription
usernamechaîne de caractèresNom d'utilisateur à rechercher

Suivre ou ne plus suivre un utilisateur

PATCH /api/users

Corps :

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

Vérifier la disponibilité du nom d'utilisateur

GET /api/username/check

Paramètres de requête :

ParamètreTypeDescription
usernamechaîne de caractèresNom d'utilisateur à vérifier
suggestboolFacultatif : true inclure une suggestion si pris

Paramètres

GET /api/settings
POST /api/settings

Obtenir ou mettre à jour les paramètres du profil utilisateur (nom d'affichage, biographie, liens vers les réseaux sociaux, etc.).

Icône de profil

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

Télécharger ou supprimer l'avatar du profil.

Intégration

POST /api/onboarding

Compléter le parcours d'intégration (définir la région des données, le nom d'utilisateur).


API RGPD

Demandez une exportation de toutes vos données ou supprimez définitivement votre compte. Consultez la documentation relative aux paramètres.

Obtenir le statut d'emploi RGPD

GET /api/gdpr

Paramètres de requête :

ParamètreTypeDescription
jobIdchaîne de caractèresIdentifiant de poste RGPD à vérifier

Renvoie le statut de la tâche. Pour les tâches d'exportation terminées, la réponse inclut un downloadUrl.

Lancer l'exportation ou supprimer le flux

POST /api/gdpr

Corps :

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

Facultatif pour les espaces de travail d'équipe :

{
    "action": "delete",
    "confirmationWord": "DELETE",
    "teamUsername": "my-team"
}

Action irréversible

La suppression du compte est permanente et ne peut être annulée. Toutes les données, modèles et déploiements seront supprimés.


Codes d'erreur

CodeStatut HTTPDescription
UNAUTHORIZED401Clé API invalide ou manquante
FORBIDDEN403Autorisations insuffisantes
NOT_FOUND404Ressource introuvable
VALIDATION_ERROR400Données de requête invalides
RATE_LIMITED429Trop de requêtes
INTERNAL_ERROR500Erreur serveur

Python

Pour faciliter l'intégration, utilisez lePython Ultralytics qui gère automatiquement l'authentification, les téléchargements et la diffusion en temps réel des métriques.

Installation et configuration

pip install ultralytics

Vérifier l'installation :

yolo check

Version de package requise

L'intégration de la plateforme nécessite ultralytics>=8.4.14. Les versions antérieures NE fonctionneront PAS avec la plateforme.

Authentification

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

settings.api_key = "YOUR_API_KEY"

Utilisation des jeux de données de la plateforme

Ensembles de données de référence avec 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,
)

Format URI :

MotifDescription
ul://username/datasets/slugEnsemble de données
ul://username/project-nameProjet
ul://username/project/model-nameModèle spécifique
ul://ultralytics/yolo26/yolo26nModèle officiel

Poussée vers la plateforme

Envoyer les résultats à un projet 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",
)

Ce qui se synchronise :

  • Indicateurs de formation (en temps réel)
  • Poids des modèles finaux
  • Graphiques de validation
  • Sortie de la console
  • Mesures du système

Exemples d'API

Charger un modèle depuis Platform :

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

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

Exécuter l'inférence :

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

Modèle d'exportation :

# 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)

Validation :

metrics = model.val(data="ul://username/datasets/my-dataset")

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

Webhooks

Les webhooks informent votre serveur des événements de la plateforme via des rappels HTTP POST :

ÉvénementDescription
training.startedTâche d'entraînement démarrée
training.epochÉpoque terminée
training.completedEntraînement terminé
training.failedÉchec de l'entraînement
export.completedExportation prête

Disponibilité des formules

Tous les plans : Les webhooks d'entraînement via le SDK python (métriques en temps réel, notifications de fin) fonctionnent automatiquement sur chaque plan -- aucune configuration requise.

Réservé aux entreprises : Les points de terminaison de webhook personnalisés qui envoient des rappels HTTP POST à l'URL de votre propre serveur nécessitent un plan Entreprise. Contactez le service commercial pour plus de détails.


FAQ

Comment paginer de grands ensembles de résultats ?

La plupart des terminaux utilisent un limit paramètre permettant de contrôler le nombre de résultats renvoyés par requête :

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

Les points de terminaison Activity et Trash prennent également en charge un page paramètre pour la pagination basée sur les pages :

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

Le point de terminaison Explore Search utilise offset au lieu de page, avec une taille de page fixe de 20 :

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

Puis-je utiliser l'API sans SDK ?

Oui, toutes les fonctionnalités sont accessibles via REST. Le Python est une interface pratique qui ajoute des fonctionnalités telles que la diffusion de métriques en temps réel et le téléchargement automatique de modèles. Vous pouvez également explorer tous les points de terminaison de manière interactive sur platform.ultralytics.com/api/docs.

Existe-t-il des bibliothèques clientes API ?

Actuellement, utilisez le package python Ultralytics ou effectuez des requêtes HTTP directes. Des bibliothèques clientes officielles pour d'autres langages sont prévues.

Comment gérer les limites de débit ?

Utilisez la Retry-After En-tête de la réponse 429 pour attendre le temps nécessaire :

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

Comment trouver l'ID de mon modèle ou de mon ensemble de données ?

Les identifiants de ressources sont renvoyés lorsque vous créez des ressources via l'API. Vous pouvez également les trouver dans l'URL de la plateforme :

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

Utilisez les points de terminaison de la liste pour effectuer une recherche par nom ou filtrer par projet.



📅 Créé il y a 2 mois ✏️ Mis à jour il y a 4 jours
glenn-jochermykolaxboikosergiuwaxmannLaughing-q

Commentaires