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

Les API de ressources telles que les ensembles de données, les projets, les modèles, l'entraînement, les exportations et les prédictions utilisent l'authentification par clé API. Les points de terminaison publics (qui répertorient les ensembles de données, les projets et les modèles publics) prennent en charge l'accès en lecture anonyme sans clé. Les routes liées au compte — notamment l'activité, les paramètres, les équipes, la facturation et les flux RGPD — nécessitent actuellement une session de navigateur authentifiée et ne sont pas accessibles via une clé API.

Obtenir la clé API

  1. Aller à Settings > API Keys
  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 applique des limites de débit par clé API (sur une fenêtre glissante, avec Upstash Redis en arrière-plan) afin de prévenir les abus tout en laissant l'utilisation légitime sans restriction. Le trafic anonyme bénéficie en outre de la protection offerte par les contrôles anti-abus de la plateforme Vercel.

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) sont acheminés directement vers votre service dédié, sans aucune limitation de débit imposée par la plateforme. Comme vous payez pour la puissance de calcul, vous bénéficiez du débit correspondant à la configuration de votre service dédié, et non des limites imposées par l'API partagée.

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 de l'ensemble de données contenant toutes les images et toutes les étiquettes. Seuls les ensembles de données publics peuvent être clonés. Nécessite une session active dans le navigateur de la plateforme — cette fonctionnalité n'est pas disponible via une clé API.

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, height-asc, height-desc, width-asc, width-desc, size-asc, size-desc, labels-asc, labels-desc (certaines sont désactivées pour les ensembles de données d'images de plus de 100 000 images)
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] },
        { "classId": 1, "segments": [0.1, 0.2, 0.3, 0.2, 0.2, 0.4] }
    ]
}

Format des coordonnées

Les coordonnées des étiquettes utilisent les valeurs YOLO comprises entre 0 et 1. Les cadres de sélection utilisent [x_center, y_center, width, height]. Utilisation des étiquettes de segmentation segments, une liste aplatie des sommets d'un polygone [x1, y1, x2, y2, ...].

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

Clone un projet public (avec tous ses modèles) dans votre espace de travail. Nécessite une session active sur le navigateur de la plateforme — cette fonctionnalité n'est pas disponible via une clé API.

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

Ces deux opérations nécessitent une session active sur le navigateur de la plateforme — elles ne sont pas disponibles via une clé API.


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

Clonez un modèle public dans l'un de vos projets. Une session active dans le navigateur de la plateforme est requise — cette fonctionnalité n'est pas disponible via une clé API.

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

Uniquement pendant la session du navigateur

Cet itinéraire est utilisé par l'onglet « Predict » de l'application pour émettre des jetons d'inférence à durée de vie limitée destinés aux appels directs du navigateur vers le service de prédiction (latence réduite, pas de proxy API). Il nécessite une session de navigateur active sur la plateforme et n'est pas disponible via une clé API. Pour l'inférence programmatique, appelez POST /api/models/{modelId}/predict avec votre clé API.

Modèle d'échauffement

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

Uniquement pendant la session du navigateur

L'itinéraire de préchauffage est utilisé par l'onglet « Predict » pour précharger les poids d'un modèle sur le service de prédiction avant la première inférence de l'utilisateur. Il nécessite une session active dans le navigateur de la plateforme et n'est pas disponible via une clé API.


API d'entraînement

Lancez YOLO sur des GPU cloud (23 GPU , de la RTX 2000 Ada à la B200) 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. Les projets publics sont accessibles de manière anonyme ; les projets privés nécessitent une session active dans le navigateur de la plateforme (cette route n'accepte pas l'authentification par clé API).

Annuler l'entraînement

DELETE /api/models/{modelId}/training

Arrête l'instance de calcul en cours d'exécution et marque le travail comme annulé. Nécessite une session active dans le navigateur de la plateforme — cette opération n'est pas disponible via une clé API.


API des déploiements

Déployez des modèles sur des points de terminaison d'inférence dédiés, avec des contrôles d'intégrité et une surveillance. Les nouveaux déploiements utilisent par défaut la fonctionnalité « scale-to-zero », et l'API accepte un paramètre facultatif resources objet. Voir Documentation sur les points de terminaison.

Prise en charge des clés API par route

Seulement GET /api/deployments, POST /api/deployments, GET /api/deployments/{deploymentId}, et DELETE /api/deployments/{deploymentId} prennent en charge l'authentification par clé API. Le predict, health, logs, metrics, start, et stop Les sous-routes nécessitent une session active du navigateur de la plateforme : il s'agit de raccourcis pratiques vers l'interface utilisateur intégrée à l'application. Pour l'inférence programmatique, appelez l'URL du point de terminaison propre au déploiement (par exemple, https://predict-abc123.run.app/predict) directement à l'aide de votre clé API. Points de terminaison dédiés ne sont pas limités par le débit.

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, memoryGi, 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.

Ressources par défaut

La boîte de dialogue de déploiement propose actuellement les valeurs par défaut suivantes : cpu=1, memoryGi=2, minInstances=0, et maxInstances=1. La route API accepte un resources objet, mais le plafond du plan minInstances à 0 et maxInstances à 1.

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

Uniquement pendant la session du navigateur

GET /api/monitoring Il s'agit d'une route accessible uniquement via l'interface utilisateur et qui nécessite une session de navigateur active sur la plateforme. Elle n'accepte pas l'authentification par clé API. Pour consulter les métriques de déploiement individuelles, utilisez les routes spécifiques à chaque déploiement (qui sont elles aussi accessibles uniquement via une session de navigateur) ou utilisez Exportations de Cloud Monitoring sur le service Cloud Run déployé pour permettre un accès programmatique.

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é.

Uniquement pendant la session du navigateur

Les routes d'activité sont alimentées par des requêtes authentifiées via le navigateur depuis l'interface utilisateur de la plateforme. Elles ne sont pas exposées sous forme d'API publique, n'acceptent pas l'authentification par clé API, et les structures de routes ci-dessous sont documentées à titre de référence uniquement. Utilisez le flux d'activité dans l'interface utilisateur de la plateforme pour consulter, marquer ou archiver des événements.

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.

Authentification

DELETE /api/trash/empty nécessite une session de navigateur authentifiée et n'est pas accessible via une clé API. Utilisez le Vider la corbeille bouton de l'interface utilisateur à la place.


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)

Résilier ou réactiver l'abonnement

DELETE /api/billing/subscription-checkout

Annule par défaut l'abonnement Pro à la fin de la période. Envoyer {"resume": true} pour annuler une réservation déjà programmée avant la fin de la période de facturation.

Corps :

{
    "resume": true
}

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.

Uniquement pendant la session du navigateur

Les parcours de stockage nécessitent une session active dans le navigateur de la plateforme et ne sont pas accessibles via une clé API. Pour obtenir des analyses détaillées interactives, accédez à la page Paramètres > Profil dans l'interface utilisateur.

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

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
adminGérer les membres, la facturation et toutes les ressources (fonction réservée au propriétaire de l'équipe)

L'équipe owner est le créateur et ne peut pas être invité. La propriété est transférée séparément via POST /api/members/transfer-ownership. Voir Équipes pour plus de détails sur le poste.

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 à Platform nécessite la version 8.4.35 ou supérieureultralytics. Les versions antérieures ne fonctionneront PAS avec Platform.

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

La plateforme utilise des webhooks internes pour transmettre en continu les indicateurs de formation en temps réel depuis le ultralytics Python (exécuté sur des GPU dans le cloud ou sur des machines distantes/locales) renvoie à la plateforme les données suivantes : perte par époque, mAP, statistiques système et état d'avancement. Ces webhooks sont authentifiés via HMAC webhookSecret sont allouées par tâche de formation et ne sont pas destinées à être utilisées par les applications utilisateur.

À vos côtés

Toutes les formules: Suivi des progrès de formation via le ultralytics Le SDK (statistiques en temps réel, notifications d'achèvement) fonctionne automatiquement avec tous les forfaits — il suffit de le configurer project=username/my-project name=my-run lors de l'entraînement et lorsque le SDK transmet les événements à la plateforme. Aucun enregistrement de webhook n'est requis du côté de l'utilisateur.

Abonnements aux webhooks destinés aux utilisateurs (Les rappels POST vers une URL que vous contrôlez) font partie de la feuille de route de la version Enterprise et ne sont pas disponibles pour le moment. En attendant, utilisez la méthode poll GET /api/models/{modelId}/training pour vérifier l'état ou utiliser le fil d'activité dans l'interface utilisateur.


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 3 mois ✏️ Mis à jour il y a 5 jours
glenn-jochermykolaxboikoraimbekovmsergiuwaxmannLaughing-q

Commentaires