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

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, clonage
ProjetsEspaces de travail pour la formationCRUD, clone, icône
ModèlesPoints de contrôle formésCRUD, prédire, télécharger, cloner, exporter
DéploiementsPoints d'extrémité dédiés à l'inférenceCRUD, démarrage/arrêt, métriques, journaux, état de santé
ExportationsTâches de conversion de formatCréer, statut, télécharger
EntraînementTâches GPU dans le cloudDémarrer, statut, annuler
FacturationCrédits et abonnementsSolde, recharge, modes 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. Cliquez 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 ul_your_api_key_here

Format de la 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 ul_abc123..." \
  https://platform.ultralytics.com/api/datasets
import requests

headers = {"Authorization": "Bearer ul_abc123..."}
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 ul_abc123..." },
});
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 répertoriés ci-dessous (liste, obtention, création, mise à jour, suppression)
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) et exportations de jeux de données NDJSON
Télécharger30 requêtes/minTéléchargements de fichiers de poids des modèles (GET /api/models/{id}/download)
DédiéIllimitéTerminaux 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 quota par défaut de 100 requêtes/minute.

Terminaux dédiés (illimités)

Terminaux dédiés sont non soumis aux limites de débit des clés APILorsque vous déployez un modèle sur un point de terminaison dédié, les requêtes adressées à l'URL de ce point de terminaison (par exemple, https://predict-abc123.run.app/predict) accédez directement à votre service dédié sans limitation de débit depuis 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": "Invalid dataset ID"
}
Statut HTTPSignification
200Succès
201Créée
400Demande non valide
401Authentification requise
403Autorisations insuffisantes
404Ressource introuvable
409Conflit (duplicata)
429Limite de débit dépassée
500Erreur serveur

API des jeux de données

Gérer des collections d'images étiquetées pour l'entraînement YOLO .

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 $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 toutes les é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 le fichier d'exportation de l'ensemble de données.

Réponse :

{
    "downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
    "cached": 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 des ensembles 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 (valeur par défaut : 0,25)
iouflottantNonIoU (valeur par défaut : 0,45)

Ingestion de données

POST /api/datasets/ingest

Créez une tâche d'ingestion de données pour traiter les fichiers ZIP téléchargés contenant des images et des étiquettes.

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

Ensemble de données Images

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 YOLO : [x_center, y_center, width, height] où toutes les valeurs sont comprises entre 0 et 1.

Opérations groupées sur les images

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

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

Suppression groupée d'images :

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

API des projets

Gérer les espaces de travail de formation qui regroupent les modèles.

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 $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).

Projet Clone

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 les points de contrôle des modèles entraînés au sein des projets.

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èresNonIdentifiants 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 (100 caractères maximum)
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 modèles

GET /api/models/{modelId}/files

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

Modèle clone

POST /api/models/{modelId}/clone

Clonez un modèle public dans 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èresOuiDestination du projet slug
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 (valeur 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 $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

Démarrer, surveiller et annuler les tâches de formation 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 $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "modelId": "MODEL_ID",
    "projectId": "PROJECT_ID",
    "gpuType": "rtx-4090",
    "trainArgs": {
      "model": "yolo11n.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": "yolo11n.pt",
            "data": "ul://username/datasets/my-dataset",
            "epochs": 100,
            "imgsz": 640,
            "batch": 16,
        },
    },
)

GPU

GPU disponibles comprennent rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, et 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

Créer et gérer des points de terminaison d'inférence dédiés.

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 globalement via une URL unique.

Sélection de la région

Choisissez une région proche de vos utilisateurs pour bénéficier d'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 (valeur 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

Mesures 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

Convertissez les modèles en formats optimisés pour un déploiement en périphérie.

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 $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
OpenVINOopenvinoIntel
TensorRTengineGPU NVIDIA
CoreMLcoremlappareils Apple
TFLitetfliteMobile et intégré
TF SavedModelsaved_modelTensorFlow
TF GraphDefpbGraphique TensorFlow
PaddlePaddlepaddleBaidu PaddlePaddle
NCNNncnnRéseau neuronal mobile
Edge TPUedgetpuAppareils Google
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é

track et gérer les événements d'activité de votre compte.

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

Gérer les ressources supprimées logiquement (rétention de 30 jours).

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

Gérez les crédits, les abonnements et les modes de paiement.

Unités monétaires

Les montants facturés sont exprimés en centimes (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 $ à 1 000 $)
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 un achat à crédit.

Créer un paiement d'abonnement

POST /api/billing/subscription-checkout

Crée une session de paiement pour la mise à niveau vers 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 passe 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

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

Les téléchargements directs de fichiers utilisent un flux d'URL signé en deux étapes.

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 complet

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

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 $API_KEY" \
  "https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"

API Équipes et membres

Gérez la collaboration dans l'espace de travail avec les équipes, les membres et les invitations.

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

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

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

Processus d'intégration complet (définition de la région de données, nom d'utilisateur).


API RGPD

Points d'accès de conformité RGPD pour l'exportation et la suppression de données.

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 à 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("yolo11n.pt")

# Train on your Platform dataset
model.train(
    data="ul://your-username/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("yolo11n.pt")

# Results automatically sync to Platform
model.train(
    data="coco8.yaml",
    epochs=100,
    project="ul://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/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

Fonctionnalité Entreprise

Les points de terminaison Webhook personnalisés sont disponibles dans les forfaits Entreprise. Les Webhooks de formation pour le Python fonctionnent automatiquement dans tous les forfaits.


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 $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 $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 disponibles via REST. Le Python est un wrapper pratique qui ajoute des fonctionnalités telles que le streaming de métriques en temps réel et le téléchargement automatique de modèles.

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 1 mois ✏️ Mis à jour il y a 4 jours
glenn-jochersergiuwaxmannLaughing-q

Commentaires