REST API
Ultralytics fournit une REST API complète REST API l'accès programmatique aux ensembles de données, aux modèles, à la formation et aux déploiements.
Démarrage rapide
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
# Run inference on a model
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
https://platform.ultralytics.com/api/models/MODEL_ID/predict
Authentification
Toutes les requêtes API nécessitent une authentification via une clé API.
Obtenir une clé API
- Allez dans Paramètres > Clés API
- Cliquez sur Créer une clé
- Copiez la clé générée.
Consultez la section Clés API pour obtenir 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
Exemple
curl -H "Authorization: Bearer ul_abc123..." \
https://platform.ultralytics.com/api/datasets
URL de base
Tous les points de terminaison API utilisent :
https://platform.ultralytics.com/api
Limites de débit
| Plan | Demandes/Minute | Demandes/jour |
|---|---|---|
| Gratuit | 60 | 1,000 |
| Pro | 300 | 50,000 |
| Entreprise | Personnalisé | Personnalisé |
Les en-têtes de limitation de débit sont inclus dans les réponses :
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1640000000
Format de réponse
Toutes les réponses sont au format JSON :
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"limit": 20,
"total": 100
}
}
Réponses d'erreur
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid dataset ID",
"details": { ... }
}
}
API des ensembles de données
Lister les ensembles de données
GET /api/datasets
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
page | int | Numéro de page (par défaut : 1) |
limit | int | Éléments par page (par défaut : 20) |
task | chaîne | Filtrer par type de tâche |
Réponse :
{
"success": true,
"data": [
{
"id": "dataset_abc123",
"name": "my-dataset",
"slug": "my-dataset",
"task": "detect",
"imageCount": 1000,
"classCount": 10,
"visibility": "private",
"createdAt": "2024-01-15T10:00:00Z"
}
]
}
Obtenir l'ensemble de données
GET /api/datasets/{datasetId}
Créer un ensemble de données
POST /api/datasets
Corps :
{
"name": "my-dataset",
"task": "detect",
"description": "A custom detection dataset"
}
Supprimer l'ensemble de données
DELETE /api/datasets/{datasetId}
Exporter l'ensemble de données
POST /api/datasets/{datasetId}/export
Renvoie l'URL de téléchargement au format NDJSON.
API Projets
Liste des projets
GET /api/projects
Obtenir le projet
GET /api/projects/{projectId}
Créer un projet
POST /api/projects
Corps :
{
"name": "my-project",
"description": "Detection experiments"
}
Supprimer le projet
DELETE /api/projects/{projectId}
API des modèles
Liste des modèles
GET /api/models
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
projectId | chaîne | Filtrer par projet |
task | chaîne | Filtrer par type de tâche |
Obtenir le modèle
GET /api/models/{modelId}
Télécharger le modèle
POST /api/models
Formulaire en plusieurs parties :
| Champ | Type | Description |
|---|---|---|
file | fichier | Modèle de fichier .pt |
projectId | chaîne | Projet cible |
name | chaîne | Nom du modèle |
Supprimer le modèle
DELETE /api/models/{modelId}
Télécharger le modèle
GET /api/models/{modelId}/files
Renvoie les URL de téléchargement signées pour les fichiers de modèle.
Exécuter l'inférence
POST /api/models/{modelId}/predict
Formulaire en plusieurs parties :
| Champ | Type | Description |
|---|---|---|
file | fichier | Fichier image |
conf | flottant | Seuil de confiance |
iou | flottant | IoU |
Réponse :
{
"success": true,
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
API de formation
Démarrer l'entraînement
POST /api/training/start
Corps :
{
"modelId": "model_abc123",
"datasetId": "dataset_xyz789",
"epochs": 100,
"imageSize": 640,
"gpuType": "rtx-4090"
}
Obtenir le statut de formation
GET /api/models/{modelId}/training
Annuler la formation
DELETE /api/models/{modelId}/training
API de déploiements
Liste des déploiements
GET /api/deployments
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
modelId | chaîne | Filtrer par modèle |
Créer un déploiement
POST /api/deployments
Corps :
{
"modelId": "model_abc123",
"region": "us-central1",
"minInstances": 0,
"maxInstances": 10
}
Obtenir le déploiement
GET /api/deployments/{deploymentId}
Commencer le déploiement
POST /api/deployments/{deploymentId}/start
Arrêter le déploiement
POST /api/deployments/{deploymentId}/stop
Supprimer le déploiement
DELETE /api/deployments/{deploymentId}
Obtenir des mesures
GET /api/deployments/{deploymentId}/metrics
Obtenir les journaux
GET /api/deployments/{deploymentId}/logs
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
severity | chaîne | INFO, AVERTISSEMENT, ERREUR |
limit | int | Nombre d'entrées |
API d'exportation
Exportations de listes
GET /api/exports
Créer une exportation
POST /api/exports
Corps :
{
"modelId": "model_abc123",
"format": "onnx"
}
Formats pris en charge :
onnx, torchscript, openvino, tensorrt, coreml, tflite, saved_model, graphdef, paddle, ncnn, edgetpu, tfjs, mnn, rknn, imx, axelera, executorch
Obtenir le statut d'exportation
GET /api/exports/{exportId}
API d'activité
Suivez et gérez les événements liés à l'activité de votre compte.
Activité de liste
GET /api/activity
Paramètres de requête :
| Paramètre | Type | Description |
|---|---|---|
startDate | chaîne | Filtrer par date (ISO) |
endDate | chaîne | Filtre à ce jour (ISO) |
search | chaîne | Rechercher dans les messages d'événement |
Marquer les événements vus
POST /api/activity/mark-seen
Archives des événements
POST /api/activity/archive
API Trash
Gérer les ressources supprimées de manière temporaire (conservation pendant 30 jours).
Liste Corbeille
GET /api/trash
Restaurer l'élément
POST /api/trash
Corps :
{
"itemId": "item_abc123",
"type": "dataset"
}
Vider la corbeille
POST /api/trash/empty
Supprime définitivement tous les éléments de la corbeille.
API de facturation
Gérer les crédits et les abonnements.
Obtenir l'équilibre
GET /api/billing/balance
Réponse :
{
"success": true,
"data": {
"cashBalance": 5000000,
"creditBalance": 20000000,
"reservedAmount": 0,
"totalBalance": 25000000
}
}
Micro-USD
Tous les montants sont exprimés en micro-USD (1 000 000 = 1,00 $) pour une comptabilité précise.
Obtenir le résumé d'utilisation
GET /api/billing/usage-summary
Renvoie les détails du plan, les limites et les mesures d'utilisation.
Créer une session de paiement
POST /api/billing/checkout-session
Corps :
{
"amount": 25
}
Crée une session de paiement Stripe pour un achat par carte de crédit (5 $ à 1 000 $).
Créer un paiement par abonnement
POST /api/billing/subscription-checkout
Crée une session de paiement Stripe pour l'abonnement Pro.
Créer une session du portail
POST /api/billing/portal-session
Renvoie l'URL vers le portail de facturation Stripe pour la gestion des abonnements.
Obtenir l'historique des paiements
GET /api/billing/payments
Renvoie la liste des transactions de paiement provenant de Stripe.
API de stockage
Obtenir des informations sur le stockage
GET /api/storage
Réponse :
{
"success": true,
"data": {
"used": 1073741824,
"limit": 107374182400,
"percentage": 1.0
}
}
API RGPD
Points de terminaison conformes au RGPD pour l'exportation et la suppression des données.
Exporter/Supprimer les données du compte
POST /api/gdpr
Corps :
{
"action": "export"
}
| Action | Description |
|---|---|
export | Télécharger toutes les données du compte |
delete | Supprimer le compte et toutes les données |
Action irréversible
La suppression du compte est définitive et irréversible. Toutes les données, tous les modèles et tous les déploiements seront supprimés.
Clés API API
Liste des clés API
GET /api/api-keys
Créer une clé API
POST /api/api-keys
Corps :
{
"name": "training-server",
"scopes": ["training", "models"]
}
Supprimer la clé API
DELETE /api/api-keys/{keyId}
Codes d'erreur
| Code | Description |
|---|---|
UNAUTHORIZED | Clé API invalide ou manquante |
FORBIDDEN | Autorisations insuffisantes |
NOT_FOUND | Ressource introuvable |
VALIDATION_ERROR | Données de requête non valides |
RATE_LIMITED | Trop de demandes |
INTERNAL_ERROR | Erreur serveur |
Assistance SDK
Pour faciliter l'intégration, utilisez lePython Ultralytics .
Exigences relatives à la version du package
L'intégration à la plateforme nécessite ultralytics>= 8.4.0. Les versions antérieures ne fonctionneront PAS avec la plateforme.
pip install "ultralytics>=8.4.0"
import os
from ultralytics import YOLO
# Set API key
os.environ["ULTRALYTICS_API_KEY"] = "ul_your_key"
# Train with Platform integration
model = YOLO("yolo11n.pt")
model.train(data="ul://username/datasets/my-dataset", project="username/my-project", name="experiment-1", epochs=100)
Webhooks
Les webhooks informent votre serveur des événements de la plateforme :
| Événement | Description |
|---|---|
training.started | Formation commencée |
training.epoch | Époque terminée |
training.completed | Formation terminée |
training.failed | Échec de la formation |
export.completed | Prêt à l'exportation |
La configuration des webhooks est disponible dans les forfaits Entreprise.
FAQ
Comment paginer des résultats volumineux ?
Utilisez page et limit paramètres :
GET /api/datasets?page=2 &
limit=50
Puis-je utiliser l'API sans SDK ?
Oui, toutes les fonctionnalités sont disponibles via REST. Le SDK est un wrapper pratique.
Existe-t-il des bibliothèques clientes API ?
Actuellement, utilisez lePython 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 ?
Mettre en œuvre un recul exponentiel :
import time
def api_request_with_retry(url, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code != 429:
return response
wait = 2**attempt
time.sleep(wait)
raise Exception("Rate limit exceeded")