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

# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsEsplora il riferimento completo dell'API interattiva nella documentazione API di Ultralytics Platform.
Panoramica API
L'API è organizzata attorno alle risorse fondamentali 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 principali |
|---|---|---|
| Dataset | Raccolte di immagini etichettate | CRUD, immagini, etichette, esportazione, versioni, clone |
| Progetti | Spazi di lavoro per il training | CRUD, clone, icona |
| Modelli | Checkpoint addestrati | CRUD, predizione, download, clone, esportazione |
| Deployment | Endpoint dedicati per l'inferenza | CRUD, avvio/arresto, metriche, log, stato |
| Esportazioni | Lavori di conversione formato | Creazione, stato, download |
| Training | Lavori di training su GPU cloud | Avvio, stato, annullamento |
| Fatturazione | Crediti e abbonamenti | Saldo, ricarica, metodi di pagamento |
| Team | Collaborazione nello spazio di lavoro | Membri, inviti, ruoli |
Autenticazione
Le API delle risorse come dataset, progetti, modelli, training, esportazioni e predizioni utilizzano l'autenticazione tramite chiave API. Gli endpoint pubblici (elenco di dataset, progetti e modelli pubblici) supportano l'accesso in lettura anonimo senza chiave. Le rotte orientate all'account — inclusi attività, impostazioni, team, fatturazione e flussi GDPR — richiedono attualmente una sessione browser autenticata e non sono disponibili tramite chiave API.
Ottieni chiave API
- Vai su
Settings>API Keys - Clicca su
Create Key - Copia la chiave generata
Consulta Chiavi API per istruzioni dettagliate.
Intestazione di autorizzazione
Includi la tua chiave API in tutte le richieste:
Authorization: Bearer YOUR_API_KEYLe chiavi API utilizzano il formato ul_ seguito da 40 caratteri esadecimali. Mantieni la tua chiave segreta: non caricarla mai nel controllo versione e non condividerla pubblicamente.
Esempio
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsURL di base
Tutti gli endpoint API utilizzano:
https://platform.ultralytics.com/api
Limiti di frequenza
L'API applica limiti di frequenza per chiave API (finestra scorrevole, basata su Upstash Redis) per proteggersi dagli abusi mantenendo l'utilizzo legittimo senza restrizioni. Il traffico anonimo è ulteriormente protetto dai controlli di abuso a livello di piattaforma di Vercel.
Quando viene applicato il throttling, l'API restituisce 429 con metadati di retry:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000ZLimiti per chiave API
I limiti di frequenza vengono applicati automaticamente in base all'endpoint chiamato. Le operazioni onerose hanno limiti più rigidi per prevenire abusi, mentre le operazioni CRUD standard condividono un generoso limite predefinito:
| Endpoint | Limite | Si applica a |
|---|---|---|
| Predefinito | 100 richieste/min | Tutti gli endpoint non elencati di seguito (elenco, get, creazione, aggiornamento, eliminazione) |
| Training | 10 richieste/min | Avvio di lavori di training cloud (POST /api/training/start) |
| Caricamento | 10 richieste/min | Caricamenti di file, URL firmati e ingestione dataset |
| Predizione | 20 richieste/min | Inferenza modello condiviso (POST /api/models/{id}/predict) |
| Esportazione | 20 richieste/min | Esportazioni formato modello (POST /api/exports), esportazioni NDJSON dataset e creazione versione |
| Download | 30 richieste/min | Download file pesi 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, effettuare 20 richieste di predizione non influisce sulla tua franchigia predefinita di 100 richieste/min.
Endpoint dedicati (Illimitato)
Gli endpoint dedicati non sono soggetti ai limiti di frequenza delle chiavi API. Quando distribuisci un modello su un endpoint dedicato, le richieste a quell'URL dell'endpoint (ad esempio, https://predict-abc123.run.app/predict) vanno direttamente al tuo servizio dedicato senza limitazioni di frequenza dalla piattaforma. Paghi per il calcolo, quindi ottieni il throughput dalla configurazione del tuo servizio dedicato anziché dai limiti dell'API condivisa.
When you receive a 429 status code, wait for Retry-After (or until X-RateLimit-Reset) before retrying. See the rate limit FAQ for an exponential backoff implementation.
Formato di risposta
Risposte di successo
Le risposte restituiscono JSON con campi specifici per la risorsa:
{
"datasets": [...],
"total": 100
}Risposte di errore
{
"error": "Dataset not found"
}| Stato HTTP | Significato |
|---|---|
200 | Successo |
201 | Creato |
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 Dataset
Crea, naviga e gestisci dataset di immagini etichettate per l'addestramento di modelli YOLO. Vedi la documentazione Dataset.
Elenca dataset
GET /api/datasetsParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
username | stringa | Filtra per nome utente |
slug | stringa | Recupera un singolo dataset tramite slug |
limit | int | Elementi per pagina (predefinito: 20, massimo: 500) |
owner | stringa | Nome utente del proprietario dello spazio di lavoro |
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=10"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"
}Ottieni dataset
GET /api/datasets/{datasetId}Restituisce i dettagli completi del dataset, inclusi metadati, nomi delle classi e conteggi di suddivisione.
Crea dataset
POST /api/datasetsCorpo:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"visibility": "private",
"classNames": ["person", "car"]
}Valori task validi: 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}Esegue un'eliminazione logica del dataset (spostato nel cestino, recuperabile per 30 giorni).
Clona dataset
POST /api/datasets/{datasetId}/cloneCrea una copia del dataset con tutte le immagini e le etichette. Solo i dataset pubblici possono essere clonati. Richiede una sessione browser della piattaforma attiva — non disponibile tramite chiave API.
Corpo (tutti i campi facoltativi):
{
"name": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"owner": "team-username"
}Esporta dataset
GET /api/datasets/{datasetId}/exportRestituisce una risposta JSON con un URL di download firmato per l'esportazione più recente del dataset.
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
v | intero | Numero di versione (indicizzato da 1). Se omesso, restituisce l'esportazione più recente (non memorizzata nella cache). |
Risposta:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}Crea versione dataset
POST /api/datasets/{datasetId}/exportCrea un nuovo snapshot della versione numerata del dataset. Solo per il proprietario. La versione acquisisce il conteggio attuale di immagini, classi, annotazioni e distribuzione delle suddivisioni, quindi genera e archivia un'esportazione NDJSON immutabile.
Corpo della richiesta:
{
"description": "Added 500 training images"
}Tutti i campi sono facoltativi. Il campo description è 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}/exportAggiorna la descrizione di una versione esistente. Solo per il proprietario.
Corpo della richiesta:
{
"version": 2,
"description": "Fixed mislabeled classes"
}Risposta:
{
"ok": true
}Ottieni statistiche classe
GET /api/datasets/{datasetId}/class-statsRestituisce la distribuzione delle classi, la heatmap di posizione e le statistiche dimensionali. 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 dataset
GET /api/datasets/{datasetId}/modelsRestituisce 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}/predictEsegui l'inferenza YOLO sulle immagini del dataset per generare automaticamente le annotazioni. Utilizza un modello selezionato per prevedere le etichette per le immagini non annotate.
Corpo:
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
imageHash | stringa | Sì | Hash dell'immagine da annotare |
modelId | stringa | No | ID modello da utilizzare per l'inferenza |
confidence | float | No | Soglia di confidenza (predefinito: 0.25) |
iou | float | No | Soglia IoU (predefinito: 0.45) |
Ingestione dataset
POST /api/datasets/ingestCrea un job di ingestione dataset per elaborare file ZIP o TAR caricati, inclusi .tar.gz e .tgz, contenenti immagini ed etichette.
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]Immagini dataset
Elenca immagini
GET /api/datasets/{datasetId}/imagesParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
split | stringa | Filtra per suddivisione: train, val, test |
offset | int | Offset di paginazione (predefinito: 0) |
limit | int | Elementi per pagina (predefinito: 50, massimo: 5000) |
sort | stringa | Ordinamento: newest, oldest, name-asc, name-desc, height-asc, height-desc, width-asc, width-desc, size-asc, size-desc, labels-asc, labels-desc (alcuni disabilitati per dataset con >100k immagini) |
hasLabel | stringa | Filtra per stato dell'etichetta (true o false) |
hasError | stringa | Filtra per stato di errore (true o false) |
search | stringa | Cerca per nome file o hash dell'immagine |
includeThumbnails | stringa | Includi URL delle miniature firmate (predefinito: true) |
includeImageUrls | stringa | Includi URL completi delle immagini firmate (predefinito: false) |
Ottieni URL immagini firmate
POST /api/datasets/{datasetId}/images/urlsOttieni URL firmati per un batch di hash di immagini (per la visualizzazione nel browser).
Elimina immagine
DELETE /api/datasets/{datasetId}/images/{hash}Ottieni etichette immagine
GET /api/datasets/{datasetId}/images/{hash}/labelsRestituisce annotazioni e nomi delle classi per un'immagine specifica.
Aggiorna etichette immagine
PUT /api/datasets/{datasetId}/images/{hash}/labelsCorpo:
{
"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] }
]
}Le coordinate delle etichette utilizzano valori normalizzati YOLO compresi tra 0 e 1. I riquadri di delimitazione utilizzano [x_center, y_center, width, height].
Le etichette di segmentazione utilizzano segments, un elenco appiattito di vertici del poligono [x1, y1, x2, y2, ...].
Operazioni in blocco sulle immagini
Sposta le immagini tra le suddivisioni (train/val/test) all'interno di un dataset:
PATCH /api/datasets/{datasetId}/images/bulkElimina le immagini in blocco:
DELETE /api/datasets/{datasetId}/images/bulkAPI Progetti
Organizza i tuoi modelli in progetti. Ogni modello appartiene a un progetto. Vedi la documentazione Progetti.
Elenca progetti
GET /api/projectsParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
username | stringa | Filtra per nome utente |
limit | int | Elementi per pagina |
owner | stringa | Nome utente del proprietario dello spazio di lavoro |
Ottieni progetto
GET /api/projects/{projectId}Crea progetto
POST /api/projectscurl -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/projectsAggiorna progetto
PATCH /api/projects/{projectId}Elimina progetto
DELETE /api/projects/{projectId}Esegue un'eliminazione logica del progetto (spostato nel cestino).
Clona progetto
POST /api/projects/{projectId}/cloneClona un progetto pubblico (con tutti i suoi modelli) nel tuo spazio di lavoro. Richiede una sessione browser della piattaforma attiva — non disponibile tramite chiave API.
Icona progetto
Carica un'icona del progetto (modulo multipart con file immagine):
POST /api/projects/{projectId}/iconRimuovi l'icona del progetto:
DELETE /api/projects/{projectId}/iconEntrambi richiedono una sessione browser attiva sulla piattaforma — non disponibili tramite API key.
API Modelli
Gestisci i modelli YOLO addestrati: visualizza le metriche, scarica i pesi, esegui l'inferenza ed esporta in altri formati. Vedi la documentazione sui modelli.
Elenca modelli
GET /api/modelsParametri di query:
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
projectId | stringa | Sì | ID progetto (richiesto) |
fields | stringa | No | Set di campi: summary, charts |
ids | stringa | No | ID modello separati da virgola |
limit | int | No | Risultati massimi (default 20, massimo 100) |
Elenca modelli completati
GET /api/models/completedRestituisce i modelli che hanno terminato l'addestramento (da usare nei selettori di modello e nel deployment).
Ottieni modello
GET /api/models/{modelId}Crea modello
POST /api/modelsCorpo JSON:
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
projectId | stringa | Sì | ID progetto di destinazione |
slug | stringa | No | URL slug (alfanumerico minuscolo/trattini) |
name | stringa | No | Nome visualizzato (massimo 100 caratteri) |
description | stringa | No | Descrizione del modello (massimo 1000 caratteri) |
task | stringa | No | Tipo di task (detect, segment, pose, obb, classify) |
Il caricamento dei file modello .pt viene gestito separatamente. Usa l'interfaccia della piattaforma per trascinare i file modello su un progetto.
Aggiorna modello
PATCH /api/models/{modelId}Elimina modello
DELETE /api/models/{modelId}Scarica file modello
GET /api/models/{modelId}/filesRestituisce URL di download firmati per i file modello.
Clona modello
POST /api/models/{modelId}/cloneClona un modello pubblico in uno dei tuoi progetti. Richiede una sessione browser attiva sulla piattaforma — non disponibile tramite API key.
Corpo:
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
targetProjectSlug | stringa | Sì | Slug del progetto di destinazione |
modelName | stringa | No | Nome per il modello clonato |
description | stringa | No | Descrizione del modello |
owner | stringa | No | Username del team (per la clonazione di workspace) |
Traccia download
POST /api/models/{modelId}/track-downloadTraccia le analisi di download del modello.
Esegui inferenza
POST /api/models/{modelId}/predictMultipart Form:
| Campo | Tipo | Descrizione |
|---|---|---|
file | file | File immagine (JPEG, PNG, WebP) |
conf | float | Soglia di confidenza (predefinito: 0.25) |
iou | float | Soglia IoU (default: 0.7) |
imgsz | int | Dimensione immagine in pixel (default: 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/predictRisposta:
{
"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/tokenQuesta rotta è usata dalla scheda Predict nell'app per emettere token di inferenza a breve termine per chiamate dirette browser → predict-service (latenza inferiore, nessun proxy API). Richiede una sessione browser attiva sulla piattaforma e non è disponibile tramite API key. Per l'inferenza programmatica, chiama POST /api/models/{modelId}/predict con la tua API key.
Warmup modello
POST /api/models/{modelId}/predict/warmupLa rotta di warmup è usata dalla scheda Predict per pre-caricare i pesi di un modello sul servizio di predizione prima della prima inferenza dell'utente. Richiede una sessione browser attiva sulla piattaforma e non è disponibile tramite API key.
API Addestramento
Avvia l'addestramento YOLO su GPU cloud (24 tipi di GPU da RTX 2000 Ada a B300) e monitora il progresso in tempo reale. Vedi la documentazione sull'addestramento 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 addestramento
POST /api/training/startcurl -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/startI tipi di GPU disponibili includono rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, b300 e altri. Vedi Addestramento Cloud per l'elenco completo con i prezzi.
Ottieni stato addestramento
GET /api/models/{modelId}/trainingRestituisce lo stato attuale del job di addestramento, le metriche e il progresso per un modello. I progetti pubblici sono accessibili in modo anonimo; i progetti privati richiedono una sessione browser attiva sulla piattaforma (questa rotta non accetta autenticazione tramite API key).
Annulla addestramento
DELETE /api/models/{modelId}/trainingTermina l'istanza di calcolo in esecuzione e segna il job come annullato. Richiede una sessione browser attiva sulla piattaforma — non disponibile tramite API key.
API Deployment
Distribuisci modelli su endpoint di inferenza dedicati con controlli di salute e monitoraggio. I nuovi deployment usano scale-to-zero per default e l'API accetta un oggetto resources opzionale. Vedi la documentazione sugli endpoint.
Solo GET /api/deployments, POST /api/deployments, GET /api/deployments/{deploymentId} e DELETE /api/deployments/{deploymentId} supportano l'autenticazione tramite API key. Le sotto-rotte predict, health, logs, metrics, start e stop richiedono una sessione browser attiva sulla piattaforma — sono proxy di utilità per l'interfaccia in-app. Per l'inferenza programmatica, chiama l'URL dell'endpoint del deployment (es. https://predict-abc123.run.app/predict) direttamente con la tua API key. Gli endpoint dedicati non sono limitati nel rate.
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 deployment
GET /api/deploymentsParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
modelId | stringa | Filtra per modello |
status | stringa | Filtra per stato |
limit | int | Risultati massimi (default: 20, max: 100) |
owner | stringa | Nome utente del proprietario dello spazio di lavoro |
Crea deployment
POST /api/deploymentsCorpo:
{
"modelId": "model_abc123",
"name": "my-deployment",
"region": "us-central1",
"resources": {
"cpu": 1,
"memoryGi": 2,
"minInstances": 0,
"maxInstances": 1
}
}| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
modelId | stringa | Sì | ID modello da distribuire |
name | stringa | Sì | Nome deployment |
region | stringa | Sì | Regione di deployment |
resources | oggetto | No | Configurazione risorse (cpu, memoryGi, minInstances, maxInstances) |
Crea un endpoint di inferenza dedicato nella regione specificata. L'endpoint è accessibile globalmente tramite un URL univoco.
La finestra di dialogo di deployment invia attualmente default fissi di cpu=1, memoryGi=2, minInstances=0 e maxInstances=1. La rotta API accetta un oggetto resources, ma i limiti del piano bloccano minInstances a 0 e maxInstances a 1.
Scegli una regione vicina ai tuoi utenti per la latenza più bassa. L'interfaccia della piattaforma mostra stime di latenza per tutte le 43 regioni disponibili.
Ottieni deployment
GET /api/deployments/{deploymentId}Elimina deployment
DELETE /api/deployments/{deploymentId}Avvia deployment
POST /api/deployments/{deploymentId}/startRiprendi un deployment interrotto.
Ferma deployment
POST /api/deployments/{deploymentId}/stopMetti in pausa un deployment in esecuzione (ferma la fatturazione).
Controllo salute
GET /api/deployments/{deploymentId}/healthRestituisce lo stato di salute dell'endpoint di deployment.
Esegui inferenza su deployment
POST /api/deployments/{deploymentId}/predictInvia 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.
Multipart Form:
| Campo | Tipo | Descrizione |
|---|---|---|
file | file | File immagine (JPEG, PNG, WebP) |
conf | float | Soglia di confidenza (predefinito: 0.25) |
iou | float | Soglia IoU (default: 0.7) |
imgsz | int | Dimensione immagine in pixel (default: 640) |
Ottieni metriche
GET /api/deployments/{deploymentId}/metricsRestituisce i conteggi delle richieste, la latenza e le metriche del tasso di errore con dati sparkline.
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
range | stringa | Intervallo temporale: 1h, 6h, 24h (default), 7d, 30d |
sparkline | stringa | Imposta a true per dati sparkline ottimizzati per la vista dashboard |
Ottieni log
GET /api/deployments/{deploymentId}/logsParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
severity | stringa | Filtro separato da virgola: DEBUG, INFO, WARNING, ERROR, CRITICAL |
limit | int | Numero di voci (predefinito: 50, massimo: 200) |
pageToken | stringa | Token di paginazione dalla risposta precedente |
API di monitoraggio
GET /api/monitoring è un percorso riservato all'interfaccia utente e richiede una sessione del browser attiva sulla piattaforma. Non accetta l'autenticazione tramite chiave API. Interroga le metriche di ogni singolo deployment tramite i percorsi dedicati (anch'essi riservati alle sessioni del browser) o utilizza Cloud Monitoring exports sul servizio Cloud Run distribuito per l'accesso programmatico.
Metriche aggregate
GET /api/monitoringRestituisce le metriche aggregate di tutti i deployment dell'utente: numero totale di richieste, deployment attivi, tasso di errore e latenza media.
API di esportazione
Converti i modelli in formati ottimizzati come ONNX, TensorRT, CoreML e TFLite per il deployment edge. Consulta la documentazione sulla distribuzione.
Elenco esportazioni
GET /api/exportsParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
modelId | stringa | ID modello (obbligatorio) |
status | stringa | Filtra per stato |
limit | int | Risultati massimi (default: 20, max: 100) |
Crea esportazione
POST /api/exportsCorpo:
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
modelId | stringa | Sì | ID del modello di origine |
format | stringa | Sì | Formato di esportazione (vedi tabella sotto) |
gpuType | stringa | Condizionale | Obbligatorio quando il format è engine (TensorRT) |
args | oggetto | No | Argomenti di esportazione (imgsz, half, dynamic, ecc.) |
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/exportsFormati supportati:
| Formato | Valore | Caso d'uso |
|---|---|---|
| ONNX | onnx | Inferenza multipiattaforma |
| TorchScript | torchscript | Deployment PyTorch |
| OpenVINO | openvino | Hardware Intel |
| TensorRT | engine | Ottimizzazione NVIDIA GPU |
| CoreML | coreml | Dispositivi Apple |
| TFLite | tflite | Dispositivi mobili e integrati |
| TF SavedModel | saved_model | TensorFlow Serving |
| TF GraphDef | pb | Grafo congelato TensorFlow |
| PaddlePaddle | paddle | Baidu PaddlePaddle |
| NCNN | ncnn | Rete neurale mobile |
| Edge TPU | edgetpu | Dispositivi Google Coral |
| TF.js | tfjs | Inferenza nel browser |
| MNN | mnn | Inferenza mobile Alibaba |
| RKNN | rknn | Rockchip NPU |
| IMX | imx | Sensore Sony IMX500 |
| Axelera | axelera | Acceleratori IA Axelera |
| ExecuTorch | executorch | Runtime Meta ExecuTorch |
Ottieni stato esportazione
GET /api/exports/{exportId}Annulla esportazione
DELETE /api/exports/{exportId}Traccia download esportazione
POST /api/exports/{exportId}/track-downloadAPI attività
Visualizza un feed delle azioni recenti sul tuo account: esecuzioni di addestramento, caricamenti e altro ancora. Consulta la documentazione sulle attività.
I percorsi delle attività sono gestiti da richieste autenticate dal browser tramite l'interfaccia della piattaforma. Non sono esposti come API pubblica, non accettano l'autenticazione tramite chiave API e la struttura dei percorsi qui sotto è documentata solo a scopo di riferimento. Utilizza il feed Attività nell'interfaccia della piattaforma per visualizzare, contrassegnare o archiviare gli eventi.
Elenca attività
GET /api/activityParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
limit | int | Dimensione pagina (predefinito: 20, massimo: 100) |
page | int | Numero pagina (predefinito: 1) |
archived | booleano | true per la scheda Archivio, false per la Posta in arrivo |
search | stringa | Ricerca case-insensitive nei campi evento |
Segna eventi come letti
POST /api/activity/mark-seenCorpo:
{
"all": true
}Oppure passa ID specifici:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}Archivia eventi
POST /api/activity/archiveCorpo:
{
"all": true,
"archive": true
}Oppure passa ID specifici:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}API cestino
Visualizza e ripristina gli elementi eliminati. Gli elementi vengono rimossi definitivamente dopo 30 giorni. Consulta la documentazione sul cestino.
Elenca cestino
GET /api/trashParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
type | stringa | Filtro: all, project, dataset, model |
page | int | Numero pagina (predefinito: 1) |
limit | int | Elementi per pagina (predefinito: 50, massimo: 200) |
owner | stringa | Nome utente del proprietario dello spazio di lavoro |
Ripristina elemento
POST /api/trashCorpo:
{
"id": "item_abc123",
"type": "dataset"
}Elimina elemento definitivamente
DELETE /api/trashCorpo:
{
"id": "item_abc123",
"type": "dataset"
}L'eliminazione permanente non può essere annullata. La risorsa e tutti i dati associati saranno rimossi.
Svuota cestino
DELETE /api/trash/emptyElimina definitivamente tutti gli elementi nel cestino.
DELETE /api/trash/empty richiede una sessione browser autenticata e non è disponibile tramite chiave API. Usa invece il pulsante Svuota cestino nell'interfaccia utente.
API di fatturazione
Controlla il tuo saldo crediti, acquista crediti, visualizza la cronologia delle transazioni e configura la ricarica automatica. Consulta la documentazione sulla fatturazione.
Gli importi di fatturazione utilizzano i centesimi (creditsCents), dove 100 = $1.00.
Ottieni saldo
GET /api/billing/balanceParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
owner | stringa | Nome utente del proprietario dello spazio di lavoro |
Risposta:
{
"creditsCents": 2500,
"plan": "free",
"cashBalance": 25,
"creditBalance": 0,
"reservedAmount": 0,
"totalBalance": 25
}Ottieni riepilogo utilizzo
GET /api/billing/usage-summaryRestituisce dettagli del piano, limiti e metriche di utilizzo.
Ottieni transazioni
GET /api/billing/transactionsRestituisce la cronologia delle transazioni (dalla più recente alla meno recente).
Parametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
owner | stringa | Nome utente del proprietario dello spazio di lavoro |
Crea sessione di checkout
POST /api/billing/checkout-sessionCorpo:
{
"amount": 25,
"owner": "team-username"
}| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
amount | numero | Sì | Importo in dollari ($5-$1000) |
owner | stringa | No | Nome utente del team per le ricariche dell'area di lavoro (richiede il ruolo amministratore) |
Crea una sessione di checkout per l'acquisto di crediti.
Crea checkout abbonamento
POST /api/billing/subscription-checkoutCrea una sessione di checkout per l'aggiornamento dell'abbonamento Pro.
Corpo:
{
"planId": "pro",
"billingCycle": "monthly",
"owner": "team-username"
}| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
planId | stringa | Sì | Piano a cui abbonarsi (pro) |
billingCycle | stringa | No | Ciclo di fatturazione: monthly (predefinito) o yearly |
owner | stringa | No | Nome utente del team per gli aggiornamenti dell'area di lavoro (richiede il ruolo di amministratore) |
Annulla o riprendi l'abbonamento
DELETE /api/billing/subscription-checkoutAnnulla un abbonamento Pro al termine del periodo per impostazione predefinita. Invia {"resume": true} per riprendere una cancellazione già pianificata prima della fine del periodo di fatturazione.
Corpo:
{
"resume": true
}Ricarica Automatica
Aggiungi automaticamente crediti quando il saldo scende al di sotto di una soglia.
Ottieni configurazione ricarica automatica
GET /api/billing/auto-topupParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
owner | stringa | Nome utente del proprietario dello spazio di lavoro |
Aggiorna configurazione ricarica automatica
PATCH /api/billing/auto-topupCorpo:
{
"enabled": true,
"thresholdCents": 500,
"amountCents": 2500
}Metodi di pagamento
Elenca metodi di pagamento
GET /api/billing/payment-methodsCrea setup intent
POST /api/billing/payment-methods/setupRestituisce un client secret per aggiungere un nuovo metodo di pagamento.
Imposta metodo di pagamento predefinito
POST /api/billing/payment-methods/defaultCorpo:
{
"paymentMethodId": "pm_123"
}Aggiorna informazioni di fatturazione
PATCH /api/billing/payment-methodsCorpo:
{
"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
Controlla il dettaglio dell'utilizzo dello spazio di archiviazione per categoria (dataset, modelli, esportazioni) e visualizza gli elementi più grandi.
Le rotte di archiviazione richiedono una sessione del browser attiva sulla piattaforma e non sono accessibili tramite API key. Usa la pagina Settings > Profile nell'interfaccia utente per dettagli interattivi.
Ottieni informazioni archiviazione
GET /api/storageRisposta:
{
"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 di caricamento
Carica i file direttamente nell'archiviazione cloud usando URL firmati per trasferimenti veloci e affidabili. Utilizza un flusso in due passaggi: ottieni un URL firmato, quindi carica il file. Vedi Data documentation.
Ottieni URL di caricamento firmato
POST /api/upload/signed-urlRichiedi un URL firmato per caricare un file direttamente nell'archiviazione cloud. L'URL firmato aggira 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 | stringa | Tipo di risorsa: models, datasets, images, videos |
assetId | stringa | ID della risorsa di destinazione |
filename | stringa | Nome file originale |
contentType | stringa | 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"
}Completa caricamento
POST /api/upload/completeNotifica alla piattaforma che un caricamento 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
Gestisci le tue chiavi API per l'accesso programmatico. Vedi API Keys documentation.
Elenca chiavi API
GET /api/api-keysCrea chiave API
POST /api/api-keysCorpo:
{
"name": "training-server"
}Elimina chiave API
DELETE /api/api-keysParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
keyId | stringa | ID della chiave API da revocare |
Esempio:
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"API di team e membri
Crea aree di lavoro del team, invita membri e gestisci i ruoli per la collaborazione. Vedi Teams documentation.
Elenca team
GET /api/teamsCrea team
POST /api/teams/createCorpo:
{
"username": "my-team",
"fullName": "My Team"
}Elenca membri
GET /api/membersRestituisce i membri dell'area di lavoro corrente.
Invita membro
POST /api/membersCorpo:
{
"email": "user@example.com",
"role": "editor"
}| Ruolo | Autorizzazioni |
|---|---|
viewer | Accesso in sola lettura alle risorse dell'area di lavoro |
editor | Crea, modifica ed elimina risorse |
admin | Gestisci membri, fatturazione e tutte le risorse (assegnabile solo dal proprietario del team) |
Il owner del team è il creatore e non può essere invitato. Il proprietario viene trasferito separatamente tramite POST /api/members/transfer-ownership. Vedi Teams per i dettagli completi sul ruolo.
Aggiorna ruolo del membro
PATCH /api/members/{userId}Rimuovi membro
DELETE /api/members/{userId}Trasferisci proprietà
POST /api/members/transfer-ownershipInviti
Accetta invito
POST /api/invites/acceptOttieni informazioni invito
GET /api/invites/infoParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
token | stringa | Token di invito |
Revoca invito
DELETE /api/invites/{inviteId}Reinvia invito
POST /api/invites/{inviteId}/resendAPI di esplorazione
Cerca e naviga tra dataset pubblici e progetti condivisi dalla community. Vedi Explore documentation.
Cerca contenuti pubblici
GET /api/explore/searchParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
q | stringa | Query di ricerca |
type | stringa | Tipo di risorsa: all (predefinito), projects, datasets |
sort | stringa | 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 barra laterale
GET /api/explore/sidebarRestituisce contenuti curati per la barra laterale di Esplorazione.
API utente e impostazioni
Gestisci il tuo profilo, le chiavi API, l'utilizzo dello spazio di archiviazione e le impostazioni sulla privacy dei dati. Vedi Settings documentation.
Ottieni utente tramite nome utente
GET /api/usersParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
username | stringa | Nome utente da cercare |
Segui o smetti di seguire un utente
PATCH /api/usersCorpo:
{
"username": "target-user",
"followed": true
}Verifica disponibilità nome utente
GET /api/username/checkParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
username | stringa | Nome utente da verificare |
suggest | bool | Opzionale: true per includere un suggerimento se preso |
Impostazioni
GET /api/settings
POST /api/settingsOttieni o aggiorna le impostazioni del profilo utente (nome visualizzato, bio, link social, ecc.).
Icona profilo
POST /api/settings/icon
DELETE /api/settings/iconCarica o rimuovi avatar del profilo.
Onboarding
POST /api/onboardingCompleta il flusso di onboarding (imposta regione dati, nome utente).
API GDPR
Richiedi un'esportazione di tutti i tuoi dati o elimina definitivamente il tuo account. Vedi Settings documentation.
Ottieni stato lavoro GDPR
GET /api/gdprParametri di query:
| Parametro | Tipo | Descrizione |
|---|---|---|
jobId | stringa | ID lavoro 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/gdprCorpo:
{
"action": "export"
}{
"action": "delete",
"confirmationWord": "DELETE"
}Facoltativo per gli spazi di lavoro del team:
{
"action": "delete",
"confirmationWord": "DELETE",
"teamUsername": "my-team"
}L'eliminazione dell'account è permanente e non può essere annullata. Tutti i dati, i modelli e le distribuzioni 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 |
Integrazione Python
Per un'integrazione più semplice, usa il pacchetto Python Ultralytics che gestisce automaticamente l'autenticazione, i caricamenti e lo streaming delle metriche in tempo reale.
Installazione e configurazione
pip install ultralyticsVerifica l'installazione:
yolo checkL'integrazione della piattaforma richiede ultralytics>=8.4.35. Versioni precedenti NON funzioneranno con la piattaforma.
Autenticazione
yolo settings api_key=YOUR_API_KEYUso dei Dataset della Piattaforma
Fai riferimento ai dataset con URI ul://:
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,
)Formato URI:
| Pattern | Descrizione |
|---|---|
ul://username/datasets/slug | Dataset |
ul://username/project-name | Progetto |
ul://username/project/model-name | Modello specifico |
ul://ultralytics/yolo26/yolo26n | Modello ufficiale |
Invio alla piattaforma
Invia i risultati a un progetto della piattaforma:
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",
)Cosa viene sincronizzato:
- Metriche di addestramento (tempo reale)
- Pesi finali del modello
- Grafici di validazione
- 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 l'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 probabilitiesEsporta modello:
# 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)Validazione:
metrics = model.val(data="ul://username/datasets/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")Webhook
La piattaforma utilizza webhook interni per trasmettere in streaming le metriche di addestramento in tempo reale dall'SDK Python ultralytics (in esecuzione su GPU cloud o macchine remote/locali) alla piattaforma: loss epoca per epoca, mAP, statistiche di sistema e stato di completamento. Questi webhook sono autenticati tramite l'HMAC webhookSecret fornito per ogni job di addestramento e non sono destinati all'uso da parte delle applicazioni utente.
Tutti i piani: Il progresso dell'addestramento tramite l'SDK ultralytics (metriche in tempo reale, notifiche di completamento) funziona automaticamente su ogni piano: basta impostare project=username/my-project name=my-run durante l'addestramento e l'SDK trasmetterà gli eventi alla piattaforma. Non è richiesta alcuna registrazione di webhook lato utente.
Le sottoscrizioni ai webhook lato utente (callback POST a un URL che controlli) sono nella roadmap Enterprise e non sono attualmente disponibili. Nel frattempo, interroga GET /api/models/{modelId}/training per lo stato o usa il feed delle attività nell'interfaccia utente.
FAQ
Come posso impaginare grandi risultati?
La maggior parte degli endpoint utilizza un parametro limit per controllare quanti risultati vengono restituiti per richiesta:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"Gli endpoint Activity e Trash supportano anche un parametro page per la paginazione basata su pagine:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/activity?page=2&limit=20"L'endpoint Explore Search 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 comodità che aggiunge funzionalità come lo streaming di metriche in tempo reale e il caricamento automatico dei modelli. Puoi anche esplorare tutti gli endpoint in modo interattivo su platform.ultralytics.com/api/docs.
Esistono librerie client API?
Attualmente, usa il pacchetto Python Ultralytics o effettua richieste HTTP dirette. Sono pianificate librerie client ufficiali per altri linguaggi.
Come gestisco i limiti di frequenza?
Usa l'intestazione Retry-After dalla risposta 429 per attendere la giusta quantità di tempo:
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 trovo il mio ID modello o dataset?
Gli ID delle risorse vengono restituiti quando crei risorse tramite l'API. Puoi anche trovarli nell'URL della piattaforma:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project modelUsa gli endpoint di elenco per cercare per nome o filtrare per progetto.