Riferimento REST API
Ultralytics Platform fornisce una REST API completa per l'accesso programmatico a dataset, modelli, training e deployment.

Guida rapida
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
Documentazione API Interattiva
Esplora il riferimento API interattivo completo nella documentazione API della Piattaforma Ultralytics.
Panoramica API
L'API è organizzata attorno alle risorse principali della piattaforma:
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
| Risorsa | Descrizione | Operazioni chiave |
|---|---|---|
| Set di dati | Collezioni di immagini etichettate | CRUD, immagini, etichette, esportazione, versioni, clone |
| Progetti | Spazi di lavoro per l'addestramento | CRUD, clone, icona |
| Modelli | Checkpoint addestrati | CRUD, predizione, download, clone, esportazione |
| Deployment | Endpoint di inferenza dedicati | CRUD, avvio/arresto, metriche, log, stato di salute |
| Esportazioni | Lavori di conversione del formato | Creazione, stato, download |
| Training | Job di addestramento su GPU cloud | Avvia, stato, annulla |
| Fatturazione | Crediti e abbonamenti | Saldo, ricarica, metodi di pagamento |
| Team | Collaborazione nello spazio di lavoro | Membri, inviti, ruoli |
Autenticazione
La maggior parte delle richieste API richiede l'autenticazione tramite chiave API. Gli endpoint pubblici (che elencano dataset, progetti e modelli pubblici) supportano l'accesso in lettura anonimo senza una chiave.
Ottieni chiave API
- Vai a
Settings>Profile(sezione Chiavi API) - Clicca
Create Key - Copia la chiave generata
Vedi Chiavi API per istruzioni dettagliate.
Header di Autorizzazione
Includi la tua chiave API in tutte le richieste:
Authorization: Bearer ul_your_api_key_here
Formato Chiave API
Le chiavi API utilizzano il formato ul_ seguito da 40 caratteri esadecimali. Mantieni segreta la tua chiave: non caricarla mai nel controllo di versione né condividerla pubblicamente.
Esempio
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 di Base
Tutti gli endpoint API utilizzano:
https://platform.ultralytics.com/api
Limiti di Frequenza
L'API utilizza un sistema di limitazione della frequenza a due livelli per proteggere dagli abusi mantenendo l'utilizzo legittimo illimitato:
- Per chiave API — Limiti applicati per chiave API sulle richieste autenticate
- Per IP — 100 richieste/min per indirizzo IP su tutti
/api/*percorsi (si applica sia alle richieste autenticate che a quelle non autenticate)
Quando limitata, l'API restituisce 429 con metadati di ritentativo:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z
Limiti per chiave API
I limiti di frequenza vengono applicati automaticamente in base all'endpoint chiamato. Le operazioni onerose hanno limiti più stringenti per prevenire abusi, mentre le operazioni CRUD standard condividono un valore predefinito generoso:
| Endpoint | Limite | Si applica a |
|---|---|---|
| Predefinito | 100 richieste/min | Tutti gli endpoint non elencati di seguito (list, get, create, update, delete) |
| Training | 10 richieste/min | Avvio dei job di addestramento su cloud (POST /api/training/start) |
| Caricamento | 10 richieste/min | Caricamenti di file, URL firmati e acquisizione di dataset |
| Predizione | 20 richieste/min | Inferenza del modello condivisa (POST /api/models/{id}/predict) |
| Esportazione | 20 richieste/min | Esportazioni in formato modello (POST /api/exports), esportazioni NDJSON di dataset e creazione di versioni |
| Scarica | 30 richieste/min | Download dei file dei pesi del modello (GET /api/models/{id}/download) |
| Dedicato | Illimitato | Endpoint dedicati — il tuo servizio, senza limiti API |
Ogni categoria ha un contatore indipendente per chiave API. Ad esempio, l'esecuzione di 20 richieste di predict non influisce sulla tua quota predefinita di 100 richieste/min.
Endpoint dedicati (Illimitati)
Endpoint dedicati sono non soggetto a limiti di frequenza della chiave API. Quando si distribuisce un modello su un endpoint dedicato, le richieste a quell'URL dell'endpoint (ad esempio, https://predict-abc123.run.app/predict) accedono direttamente al tuo servizio dedicato senza limitazioni di frequenza dalla Piattaforma. Stai pagando per la potenza di calcolo, quindi ottieni un throughput illimitato fino alla configurazione di scalabilità del tuo endpoint.
Gestione dei limiti di frequenza
Quando si riceve un 429 codice di stato, attendere Retry-After (o fino a quando X-RateLimit-Reset) prima di riprovare. Vedi il FAQ sul limite di frequenza per un'implementazione di backoff esponenziale.
Formato della Risposta
Risposte di successo
Le risposte restituiscono JSON con campi specifici della risorsa:
{
"datasets": [...],
"total": 100
}
Risposte di Errore
{
"error": "Invalid dataset ID"
}
| Stato HTTP | Significato |
|---|---|
200 | Successo |
201 | Creata |
400 | Richiesta non valida |
401 | Autenticazione richiesta |
403 | Permessi insufficienti |
404 | Risorsa non trovata |
409 | Conflitto (duplicato) |
429 | Limite di frequenza superato |
500 | Errore del server |
API dei Dataset
Gestisci le raccolte di immagini etichettate per l'addestramento dei modelli YOLO.
Elenca i dataset
GET /api/datasets
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
username | string | Filtra per nome utente |
slug | string | Recupera un singolo dataset tramite slug |
limit | int | Elementi per pagina (predefiniti: 20, max: 500) |
owner | string | Nome utente del proprietario dello spazio di lavoro |
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")
Risposta:
{
"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"
}
Recupera Dataset
GET /api/datasets/{datasetId}
Restituisce i dettagli completi del dataset, inclusi metadati, nomi delle classi e conteggi delle suddivisioni.
Crea Dataset
POST /api/datasets
Corpo:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"visibility": "private",
"classNames": ["person", "car"]
}
Attività supportate
Valido task valori: detect, segment, classify, pose, obb.
Aggiorna Dataset
PATCH /api/datasets/{datasetId}
Corpo (aggiornamento parziale):
{
"name": "Updated Name",
"description": "New description",
"visibility": "public"
}
Elimina dataset
DELETE /api/datasets/{datasetId}
Elimina in modo soft il dataset (spostato nel cestino, recuperabile per 30 giorni).
Clona Dataset
POST /api/datasets/{datasetId}/clone
Crea una copia del dataset con tutte le immagini e le etichette. Solo i dataset pubblici possono essere clonati.
Corpo (tutti i campi opzionali):
{
"name": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"owner": "team-username"
}
Esporta Dataset
GET /api/datasets/{datasetId}/export
Restituisce una risposta JSON con un URL di download firmato per l'ultima esportazione del dataset.
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
v | intero | Numero di versione (con indice 1). Se omesso, restituisce l'ultima esportazione (non memorizzata nella cache). |
Risposta:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}
Crea Versione Dataset
POST /api/datasets/{datasetId}/export
Crea una nuova istantanea di versione numerata del dataset. Solo per il proprietario. La versione acquisisce il conteggio corrente di immagini, classi e annotazioni, nonché la distribuzione degli split, quindi genera e memorizza un'esportazione NDJSON immutabile.
Corpo della Richiesta:
{
"description": "Added 500 training images"
}
Tutti i campi sono opzionali. Il description il campo è un'etichetta fornita dall'utente per la versione.
Risposta:
{
"version": 3,
"downloadUrl": "https://storage.example.com/v3.ndjson?signed=..."
}
Aggiorna descrizione versione
PATCH /api/datasets/{datasetId}/export
Aggiorna la descrizione di una versione esistente. Solo per il proprietario.
Corpo della Richiesta:
{
"version": 2,
"description": "Fixed mislabeled classes"
}
Risposta:
{
"ok": true
}
Ottieni Statistiche Classi
GET /api/datasets/{datasetId}/class-stats
Restituisce la distribuzione delle classi, la heatmap di posizione e le statistiche sulle dimensioni. I risultati sono memorizzati nella cache per un massimo di 5 minuti.
Risposta:
{
"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
}
Ottieni modelli addestrati sul set di dati
GET /api/datasets/{datasetId}/models
Restituisce i modelli che sono stati addestrati utilizzando questo dataset.
Risposta:
{
"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
}
Annotazione Automatica del Dataset
POST /api/datasets/{datasetId}/predict
Esegui l'inferenza YOLO su immagini del dataset per generare automaticamente annotazioni. Utilizza un modello selezionato per predire etichette per immagini non annotate.
Corpo:
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
imageHash | string | Sì | Hash dell'immagine da annotare |
modelId | string | No | ID Modello da utilizzare per l'inferenza |
confidence | float | No | Soglia di confidenza (predefinito: 0.25) |
iou | float | No | Soglia IoU (predefinita: 0.45) |
Ingestione del Dataset
POST /api/datasets/ingest
Crea un job di ingestione del dataset per elaborare i file ZIP caricati contenenti immagini ed etichette.
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]
Immagini del Dataset
Elenca Immagini
GET /api/datasets/{datasetId}/images
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
split | string | Filtra per suddivisione: train, val, test |
offset | int | Offset di paginazione (predefinito: 0) |
limit | int | Elementi per pagina (predefinito: 50, massimo: 5000) |
sort | string | Ordine di ordinamento: newest, oldest, name-asc, name-desc, size-asc, size-desc, labels-asc, labels-desc |
hasLabel | string | Filtra per stato dell'etichetta (true oppure false) |
hasError | string | Filtra per stato di errore (true oppure false) |
search | string | Cerca per nome file o hash immagine |
includeThumbnails | string | Includi URL di miniature firmate (predefinito: true) |
includeImageUrls | string | Includi URL di immagini complete firmate (predefinito: false) |
Ottieni URL di Immagini Firmati
POST /api/datasets/{datasetId}/images/urls
Ottieni URL firmati per un batch di hash di immagini (per la visualizzazione nel browser).
Elimina immagine
DELETE /api/datasets/{datasetId}/images/{hash}
Ottieni Etichette Immagini
GET /api/datasets/{datasetId}/images/{hash}/labels
Restituisce annotazioni e nomi delle classi per un'immagine specifica.
Aggiorna etichette immagine
PUT /api/datasets/{datasetId}/images/{hash}/labels
Corpo:
{
"labels": [{ "classId": 0, "bbox": [0.5, 0.5, 0.2, 0.3] }]
}
Formato Coordinate
I riquadri di delimitazione utilizzano il formato normalizzato YOLO: [x_center, y_center, width, height] dove tutti i valori sono compresi tra 0 e 1.
Operazioni su immagini in blocco
Spostare le immagini tra gli split (addestramento/validazione/test) all'interno di un dataset:
PATCH /api/datasets/{datasetId}/images/bulk
Elimina immagini in blocco:
DELETE /api/datasets/{datasetId}/images/bulk
API dei Progetti
Gestisci gli spazi di lavoro di addestramento che raggruppano i modelli.
Elenca Progetti
GET /api/projects
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
username | string | Filtra per nome utente |
limit | int | Elementi per pagina |
owner | string | Nome utente del proprietario dello spazio di lavoro |
Recupera Progetto
GET /api/projects/{projectId}
Crea progetto
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"]
Aggiorna progetto
PATCH /api/projects/{projectId}
Elimina progetto
DELETE /api/projects/{projectId}
Elimina in modo soft il progetto (spostato nel cestino).
Clona Progetto
POST /api/projects/{projectId}/clone
Icona del Progetto
Carica un'icona di progetto (form multipart con file immagine):
POST /api/projects/{projectId}/icon
Rimuovi l'icona del progetto:
DELETE /api/projects/{projectId}/icon
API dei Modelli
Gestisci i checkpoint dei modelli addestrati all'interno dei progetti.
Elenca Modelli
GET /api/models
Parametri di query:
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
projectId | string | Sì | ID progetto (obbligatorio) |
fields | string | No | Set di campi: summary, charts |
ids | string | No | ID modello separati da virgole |
limit | int | No | Numero massimo di risultati (predefinito 20, massimo 100) |
Elenca Modelli Completati
GET /api/models/completed
Restituisce i modelli che hanno completato l'addestramento (per l'utilizzo in selettori di modelli e deployment).
Recupera Modello
GET /api/models/{modelId}
Crea Modello
POST /api/models
Corpo JSON:
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
projectId | string | Sì | ID progetto di destinazione |
slug | string | No | Slug URL (alfanumerico minuscolo/trattini) |
name | string | No | Nome visualizzato (max 100 caratteri) |
description | string | No | Descrizione del modello (max 1000 caratteri) |
task | string | No | Tipo di task (detect, segment, pose, obb, classify) |
Caricamento File Modello
Modello .pt i caricamenti dei file sono gestiti separatamente. Utilizzare l'interfaccia utente della piattaforma per trascinare e rilasciare i file del modello su un progetto.
Aggiorna modello
PATCH /api/models/{modelId}
Elimina modello
DELETE /api/models/{modelId}
Scarica i File del Modello
GET /api/models/{modelId}/files
Restituisce URL di download firmati per i file del modello.
Clona Modello
POST /api/models/{modelId}/clone
Clona un modello pubblico in uno dei tuoi progetti.
Corpo:
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
targetProjectSlug | string | Sì | Slug del progetto di destinazione |
modelName | string | No | Nome per il modello clonato |
description | string | No | Descrizione del modello |
owner | string | No | Nome utente del team (per la clonazione dello spazio di lavoro) |
Traccia Download
POST /api/models/{modelId}/track-download
Traccia le analisi dei download dei modelli.
Esegui inferenza
POST /api/models/{modelId}/predict
Formato Multipart:
| Campo | Tipo | Descrizione |
|---|---|---|
file | file | File immagine (JPEG, PNG, WebP) |
conf | float | Soglia di confidenza (predefinito: 0.25) |
iou | float | Soglia IoU (predefinita: 0.7) |
imgsz | int | Dimensione immagine in pixel (predefinito: 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"]
Risposta:
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
],
"metadata": {
"imageCount": 1
}
}
Ottieni Token di Predizione
POST /api/models/{modelId}/predict/token
Ottieni un token di breve durata per le richieste di predizione dirette. Il token bypassa il proxy API per un'inferenza a latenza inferiore dalle applicazioni lato client.
Modello di warmup
POST /api/models/{modelId}/predict/warmup
Pre-caricare un modello per una prima inferenza più rapida. Chiamare questa funzione prima di eseguire le previsioni per evitare ritardi sulla richiesta iniziale.
API di Addestramento
Avvia, monitora e annulla i job di addestramento su 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]
Avvia l'addestramento
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,
},
},
)
Tipi di GPU
I tipi di GPU disponibili includono rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, e altri. Vedi Addestramento su Cloud per l'elenco completo con i prezzi.
Recupera Stato Addestramento
GET /api/models/{modelId}/training
Restituisce lo stato corrente del lavoro di addestramento, le metriche e l'avanzamento per un modello.
Annulla Addestramento
DELETE /api/models/{modelId}/training
Termina l'istanza di calcolo in esecuzione e contrassegna il lavoro come annullato.
API di Distribuzione
Crea e gestisci endpoint di inferenza dedicati.
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]
Elenca Distribuzioni
GET /api/deployments
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
modelId | string | Filtra per modello |
status | string | Filtra per stato |
limit | int | Numero massimo di risultati (predefinito: 20, massimo: 100) |
owner | string | Nome utente del proprietario dello spazio di lavoro |
Crea Distribuzione
POST /api/deployments
Corpo:
{
"modelId": "model_abc123",
"name": "my-deployment",
"region": "us-central1",
"resources": {
"cpu": 1,
"memoryGi": 2,
"minInstances": 0,
"maxInstances": 1
}
}
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
modelId | string | Sì | ID Modello da distribuire |
name | string | Sì | Nome del deployment |
region | string | Sì | Regione di deployment |
resources | oggetto | No | Configurazione delle risorse (CPU, memoryGi, minInstances, maxInstances) |
Crea un endpoint di inferenza dedicato nella regione specificata. L'endpoint è accessibile globalmente tramite un URL univoco.
Selezione della Regione
Scegli una regione vicina ai tuoi utenti per la latenza più bassa. L'interfaccia utente della piattaforma mostra le stime di latenza per tutte le 43 regioni disponibili.
Recupera Distribuzione
GET /api/deployments/{deploymentId}
Elimina Distribuzione
DELETE /api/deployments/{deploymentId}
Avvia Distribuzione
POST /api/deployments/{deploymentId}/start
Riprendi un deployment interrotto.
Ferma Distribuzione
POST /api/deployments/{deploymentId}/stop
Metti in pausa un deployment in esecuzione (interrompe la fatturazione).
Controllo dello stato
GET /api/deployments/{deploymentId}/health
Restituisce lo stato di integrità dell'endpoint di deployment.
Esegui l'Inferenza in Fase di Deployment
POST /api/deployments/{deploymentId}/predict
Invia un'immagine direttamente a un endpoint di deployment per l'inferenza. Funzionalmente equivalente alla predizione del modello, ma instradato attraverso l'endpoint dedicato per una latenza inferiore.
Formato Multipart:
| Campo | Tipo | Descrizione |
|---|---|---|
file | file | File immagine (JPEG, PNG, WebP) |
conf | float | Soglia di confidenza (predefinito: 0.25) |
iou | float | Soglia IoU (predefinita: 0.7) |
imgsz | int | Dimensione immagine in pixel (predefinito: 640) |
Recupera Metriche
GET /api/deployments/{deploymentId}/metrics
Restituisce i conteggi delle richieste, la latenza e le metriche del tasso di errore con dati sparkline.
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
range | string | Intervallo di tempo: 1h, 6h, 24h (predefinito), 7d, 30d |
sparkline | string | Imposta su true per dati sparkline ottimizzati per la visualizzazione in dashboard |
Recupera Log
GET /api/deployments/{deploymentId}/logs
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
severity | string | Filtro separato da virgole: DEBUG, INFO, WARNING, ERROR, CRITICAL |
limit | int | Numero di voci (predefinito: 50, massimo: 200) |
pageToken | string | Token di paginazione dalla risposta precedente |
API di Monitoraggio
Metriche Aggregate
GET /api/monitoring
Restituisce metriche aggregate per tutti i deployment utente: richieste totali, deployment attivi, tasso di errore e latenza media.
API di Esportazione
Convertire i modelli in formati ottimizzati per la distribuzione edge.
Elenca Esportazioni
GET /api/exports
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
modelId | string | ID Modello (obbligatorio) |
status | string | Filtra per stato |
limit | int | Numero massimo di risultati (predefinito: 20, massimo: 100) |
Crea Esportazione
POST /api/exports
Corpo:
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
modelId | string | Sì | ID modello sorgente |
format | string | Sì | Formato di esportazione (vedi tabella sotto) |
gpuType | string | Condizionale | Obbligatorio quando format è engine (TensorRT) |
args | oggetto | No | Argomenti di esportazione (imgsz, half, dynamic, ecc.) |
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"]
Formati supportati:
| Formato | Valore | Caso d'uso |
|---|---|---|
| ONNX | onnx | Inferenza multipiattaforma |
| TorchScript | torchscript | Deployment PyTorch |
| OpenVINO | openvino | hardware Intel |
| TensorRT | engine | Ottimizzazione GPU NVIDIA |
| CoreML | coreml | Dispositivi Apple |
| TFLite | tflite | Mobile ed embedded |
| TF SavedModel | saved_model | TensorFlow |
| TF GraphDef | pb | grafo congelato di TensorFlow |
| PaddlePaddle | paddle | Baidu PaddlePaddle |
| NCNN | ncnn | Rete neurale mobile |
| Edge TPU | edgetpu | Dispositivi Google Coral |
| TF.js | tfjs | Inferenza del browser |
| MNN | mnn | Inferenza mobile Alibaba |
| RKNN | rknn | NPU Rockchip |
| IMX | imx | Sensore Sony IMX500 |
| Axelera | axelera | Acceleratori AI Axelera |
| ExecuTorch | executorch | Runtime Meta ExecuTorch |
Recupera Stato Esportazione
GET /api/exports/{exportId}
Annulla Esportazione
DELETE /api/exports/{exportId}
Traccia Download Esportazione
POST /api/exports/{exportId}/track-download
API di Attività
Track e gestisci gli eventi di attività per il tuo account.
Elenca Attività
GET /api/activity
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
limit | int | Dimensione pagina (predefinito: 20, max: 100) |
page | int | Numero di pagina (predefinito: 1) |
archived | booleano | true per la scheda Archivio, false per la Posta in arrivo |
search | string | Ricerca senza distinzione tra maiuscole e minuscole nei campi evento |
Contrassegna Eventi come Visti
POST /api/activity/mark-seen
Corpo:
{
"all": true
}
Oppure passa ID specifici:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}
Archivia Eventi
POST /api/activity/archive
Corpo:
{
"all": true,
"archive": true
}
Oppure passa ID specifici:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}
API del Cestino
Gestisci le risorse eliminate temporaneamente (conservazione di 30 giorni).
Elenca Cestino
GET /api/trash
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
type | string | Filtro: all, project, dataset, model |
page | int | Numero di pagina (predefinito: 1) |
limit | int | Elementi per pagina (predefinito: 50, massimo: 200) |
owner | string | Nome utente del proprietario dello spazio di lavoro |
Ripristina Elemento
POST /api/trash
Corpo:
{
"id": "item_abc123",
"type": "dataset"
}
Elimina Elemento Permanentemente
DELETE /api/trash
Corpo:
{
"id": "item_abc123",
"type": "dataset"
}
Irreversibile
L'eliminazione permanente non può essere annullata. La risorsa e tutti i dati associati verranno rimossi.
Svuota Cestino
DELETE /api/trash/empty
Elimina definitivamente tutti gli elementi nel cestino.
API di Fatturazione
Gestisci crediti, abbonamenti e metodi di pagamento.
Unità di Valuta
Gli importi di fatturazione sono in centesimi (creditsCents) dove 100 = $1.00.
Recupera Saldo
GET /api/billing/balance
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
owner | string | Nome utente del proprietario dello spazio di lavoro |
Risposta:
{
"creditsCents": 2500,
"plan": "free",
"cashBalance": 25,
"creditBalance": 0,
"reservedAmount": 0,
"totalBalance": 25
}
Recupera Riepilogo Utilizzo
GET /api/billing/usage-summary
Restituisce i dettagli del piano, i limiti e le metriche di utilizzo.
Ottieni Transazioni
GET /api/billing/transactions
Restituisce la cronologia delle transazioni (dal più recente al meno recente).
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
owner | string | Nome utente del proprietario dello spazio di lavoro |
Crea Sessione di Checkout
POST /api/billing/checkout-session
Corpo:
{
"amount": 25,
"owner": "team-username"
}
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
amount | numero | Sì | Importo in dollari ($5-$1000) |
owner | string | No | Nome utente del team per le ricariche dello spazio di lavoro (richiede il ruolo di amministratore) |
Crea una sessione di checkout per l'acquisto di crediti.
Crea Checkout Abbonamento
POST /api/billing/subscription-checkout
Crea una sessione di checkout per l'upgrade all'abbonamento Pro.
Corpo:
{
"planId": "pro",
"billingCycle": "monthly",
"owner": "team-username"
}
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
planId | string | Sì | Piano a cui abbonarsi (pro) |
billingCycle | string | No | Ciclo di fatturazione: monthly (predefinito) o yearly |
owner | string | No | Nome utente del team per gli aggiornamenti dello spazio di lavoro (richiede il ruolo di amministratore) |
Crea Sessione Portale
POST /api/billing/portal-session
Restituisce l'URL al portale di fatturazione per la gestione degli abbonamenti.
Ricarica Automatica
Aggiungi automaticamente crediti quando il saldo scende al di sotto di una soglia.
Ottieni Configurazione Ricarica Automatica
GET /api/billing/auto-topup
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
owner | string | Nome utente del proprietario dello spazio di lavoro |
Aggiorna configurazione di ricarica automatica
PATCH /api/billing/auto-topup
Corpo:
{
"enabled": true,
"thresholdCents": 500,
"amountCents": 2500
}
Metodi di pagamento
Elenca metodi di pagamento
GET /api/billing/payment-methods
Crea Intento di Configurazione
POST /api/billing/payment-methods/setup
Restituisce un client secret per l'aggiunta di un nuovo metodo di pagamento.
Imposta Metodo di Pagamento Predefinito
POST /api/billing/payment-methods/default
Corpo:
{
"paymentMethodId": "pm_123"
}
Aggiorna informazioni di fatturazione
PATCH /api/billing/payment-methods
Corpo:
{
"name": "Jane Doe",
"address": {
"line1": "123 Main St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US"
}
}
Elimina metodo di pagamento
DELETE /api/billing/payment-methods/{id}
API di Archiviazione
Recupera Informazioni Archiviazione
GET /api/storage
Risposta:
{
"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"
}
]
}
}
Ricalcola Spazio di Archiviazione
POST /api/storage
Attiva un ricalcolo dell'utilizzo dello spazio di archiviazione.
API di caricamento
I caricamenti diretti di file utilizzano un flusso di URL firmati in due fasi.
Ottieni URL di Caricamento Firmato
POST /api/upload/signed-url
Richiedi un URL firmato per caricare un file direttamente nello storage cloud. L'URL firmato bypassa il server API per i trasferimenti di file di grandi dimensioni.
Corpo:
{
"assetType": "images",
"assetId": "abc123",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"totalBytes": 5242880
}
| Campo | Tipo | Descrizione |
|---|---|---|
assetType | string | Tipo di asset: models, datasets, images, videos |
assetId | string | ID dell'asset di destinazione |
filename | string | Nome file originale |
contentType | string | Tipo MIME |
totalBytes | int | Dimensione del file in byte |
Risposta:
{
"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"
}
Caricamento completato
POST /api/upload/complete
Notificare alla piattaforma che un caricamento di file è completo affinché possa iniziare l'elaborazione.
Corpo:
{
"datasetId": "abc123",
"objectPath": "datasets/abc123/images/my-image.jpg",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"size": 5242880
}
API delle chiavi API
Elenca chiavi API
GET /api/api-keys
Crea chiave API
POST /api/api-keys
Corpo:
{
"name": "training-server"
}
Elimina chiave API
DELETE /api/api-keys
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
keyId | string | ID della chiave API da revocare |
Esempio:
curl -X DELETE \
-H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"
API di Team e Membri
Gestisci la collaborazione nello spazio di lavoro con team, membri e inviti.
Elenca team
GET /api/teams
Crea team
POST /api/teams/create
Corpo:
{
"username": "my-team",
"fullName": "My Team"
}
Elenca Membri
GET /api/members
Restituisce i membri dello spazio di lavoro corrente.
Invita un membro
POST /api/members
Corpo:
{
"email": "user@example.com",
"role": "editor"
}
Ruoli dei membri
| Ruolo | Permessi |
|---|---|
viewer | Accesso in sola lettura alle risorse dello spazio di lavoro |
editor | Creare, modificare ed eliminare risorse |
admin | Accesso completo inclusa la gestione dei membri |
Consultare Team per i dettagli sui ruoli nell'interfaccia utente.
Aggiorna ruolo membro
PATCH /api/members/{userId}
Rimuovi membro
DELETE /api/members/{userId}
Trasferisci proprietà
POST /api/members/transfer-ownership
Inviti
Accetta Invito
POST /api/invites/accept
Ottieni Info Invito
GET /api/invites/info
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
token | string | Token di invito |
Revoca invito
DELETE /api/invites/{inviteId}
Reinvia Invito
POST /api/invites/{inviteId}/resend
Esplora API
Cerca Contenuti Pubblici
GET /api/explore/search
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
q | string | Query di Ricerca |
type | string | Tipo di risorsa: all (predefinito), projects, datasets |
sort | string | Ordine di ordinamento: stars (predefinito), newest, oldest, name-asc, name-desc, count-desc, count-asc |
offset | int | Offset di paginazione (predefinito: 0). I risultati restituiscono 20 elementi per pagina. |
Dati della barra laterale
GET /api/explore/sidebar
Restituisce contenuti curati per la barra laterale Esplora.
API Utente e Impostazioni
Ottieni Utente per Nome Utente
GET /api/users
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
username | string | Nome utente da cercare |
Segui o Smetti di Seguire Utente
PATCH /api/users
Corpo:
{
"username": "target-user",
"followed": true
}
Verifica Disponibilità Nome Utente
GET /api/username/check
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
username | string | Nome utente da verificare |
suggest | booleano | Opzionale: true per includere un suggerimento se accettato |
Impostazioni
GET /api/settings
POST /api/settings
Ottieni o aggiorna le impostazioni del profilo utente (nome visualizzato, biografia, link social, ecc.).
Icona del profilo
POST /api/settings/icon
DELETE /api/settings/icon
Carica o rimuovi l'avatar del profilo.
Onboarding
POST /api/onboarding
Completa il flusso di onboarding (imposta regione dati, nome utente).
API GDPR
Endpoint di conformità GDPR per l'esportazione e l'eliminazione dei dati.
Ottieni Stato Job GDPR
GET /api/gdpr
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
jobId | string | ID del job GDPR da controllare |
Restituisce lo stato del lavoro. Per i lavori di esportazione completati, la risposta include un downloadUrl.
Avvia il flusso di esportazione o eliminazione
POST /api/gdpr
Corpo:
{
"action": "export"
}
{
"action": "delete",
"confirmationWord": "DELETE"
}
Opzionale per gli spazi di lavoro del team:
{
"action": "delete",
"confirmationWord": "DELETE",
"teamUsername": "my-team"
}
Azione irreversibile
L'eliminazione dell'account è permanente e non può essere annullata. Tutti i dati, i modelli e i deployment verranno eliminati.
Codici di errore
| Codice | Stato HTTP | Descrizione |
|---|---|---|
UNAUTHORIZED | 401 | Chiave API non valida o mancante |
FORBIDDEN | 403 | Permessi insufficienti |
NOT_FOUND | 404 | Risorsa non trovata |
VALIDATION_ERROR | 400 | Dati della richiesta non validi |
RATE_LIMITED | 429 | Troppe richieste |
INTERNAL_ERROR | 500 | Errore del server |
Python
Per una più facile integrazione, utilizzare il pacchetto Python di Ultralytics che gestisce automaticamente l'autenticazione, i caricamenti e lo streaming di metriche in tempo reale.
Installazione e configurazione
pip install ultralytics
Verifica l'installazione:
yolo check
Requisiti di versione del pacchetto
L'integrazione della piattaforma richiede ultralytics>=8.4.14. Le versioni precedenti NON funzioneranno con la Piattaforma.
Autenticazione
yolo settings api_key=YOUR_API_KEY
export ULTRALYTICS_API_KEY=YOUR_API_KEY
from ultralytics import settings
settings.api_key = "YOUR_API_KEY"
Utilizzo dei dataset della piattaforma
Set di dati di riferimento con 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,
)
Formato URI:
| Modello | Descrizione |
|---|---|
ul://username/datasets/slug | Set di dati |
ul://username/project-name | Progetto |
ul://username/project/model-name | Modello specifico |
ul://ultralytics/yolo26/yolo26n | Modello ufficiale |
Spingere verso la piattaforma
Invia i risultati a un progetto della piattaforma:
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",
)
Cosa si sincronizza:
- Metriche di allenamento (in tempo reale)
- Pesi del modello finale
- Grafici di convalida
- Output della console
- Metriche di sistema
Esempi API
Carica un modello dalla piattaforma:
# Your own model
model = YOLO("ul://username/project/model-name")
# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")
Esegui inferenza:
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
Modello di esportazione:
# 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)
Convalida:
metrics = model.val(data="ul://username/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")
Webhook
I webhook notificano il tuo server degli eventi della Piattaforma tramite callback HTTP POST:
| Evento | Descrizione |
|---|---|
training.started | Addestramento avviato |
training.epoch | Epoca completata |
training.completed | Addestramento terminato |
training.failed | Addestramento fallito |
export.completed | Esportazione pronta |
Funzionalità Enterprise
Gli endpoint webhook personalizzati sono disponibili nei piani Enterprise. I webhook di training per l'SDK Python funzionano automaticamente su tutti i piani.
FAQ
Come si paginano risultati di grandi dimensioni?
La maggior parte degli endpoint utilizza un limit parametro per controllare quanti risultati vengono restituiti per richiesta:
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"
Gli endpoint Attività e Cestino supportano anche un page parametro per la paginazione basata su pagina:
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/activity?page=2&limit=20"
L'endpoint di ricerca Esplora utilizza offset invece di page, con una dimensione di pagina fissa di 20:
curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&sort=stars"
Posso usare l'API senza un SDK?
Sì, tutte le funzionalità sono disponibili tramite REST. L'SDK Python è un wrapper di convenienza che aggiunge funzionalità come lo streaming di metriche in tempo reale e il caricamento automatico dei modelli.
Esistono librerie client API?
Attualmente, utilizza il pacchetto Ultralytics python o effettua richieste HTTP dirette. Sono previste librerie client ufficiali per altri linguaggi.
Come si gestiscono i limiti di frequenza?
Utilizzare il Retry-After header dalla risposta 429 per attendere il tempo corretto:
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")
Come si trova l'ID del mio modello o dataset?
Gli ID delle risorse vengono restituiti quando si creano risorse tramite l'API. È possibile trovarli anche nell'URL della piattaforma:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project model
Utilizzare gli endpoint di elenco per cercare per nome o filtrare per progetto.