Vai al contenuto

Riferimento REST API

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

Panoramica dell'API Ultralytics

Guida rapida

# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://platform.ultralytics.com/api/datasets

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
RisorsaDescrizioneOperazioni chiave
Set di datiCollezioni di immagini etichettateCRUD, immagini, etichette, esportazione, clonazione
ProgettiAree di lavoro per la formazioneCRUD, clone, icona
ModelliPunti di controllo addestratiCRUD, prevedere, scaricare, clonare, esportare
DeploymentEndpoint di inferenza dedicatiCRUD, avvio/arresto, metriche, registri, integrità
EsportazioniLavori di conversione formatoCrea, stato, scarica
TrainingLavori GPU cloudAvvio, stato, annullamento
FatturazioneCrediti e abbonamentiSaldo, ricarica, metodi di pagamento
TeamCollaborazione nell'ambiente di lavoroMembri, inviti, ruoli

Autenticazione

La maggior parte delle richieste API richiede l'autenticazione tramite chiave API. Gli endpoint pubblici (elenco di set di dati, progetti e modelli pubblici) supportano l'accesso in lettura anonimo senza chiave.

Ottieni chiave API

  1. Vai a Settings > Profile (Sezione Chiavi API)
  2. Clicca Create Key
  3. 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 inserirla 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 velocità a due livelli per proteggere dagli abusi, mantenendo al contempo illimitato l'utilizzo legittimo:

  • 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 viene limitata, l'API restituisce 429 con metadati di riprova:

Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z

Limiti per chiave API

I limiti di velocità vengono applicati automaticamente in base all'endpoint chiamato. Le operazioni costose hanno limiti più rigidi per prevenire abusi, mentre le operazioni CRUD standard condividono un limite predefinito generoso:

EndpointLimiteSi applica a
Predefinito100 richieste/minTutti gli endpoint non elencati di seguito (elenco, ottenimento, creazione, aggiornamento, eliminazione)
Training10 richieste/minAvvio dei lavori di formazione sul cloud (POST /api/training/start)
Caricamento10 richieste/minCaricamento di file, URL firmati e acquisizione di set di dati
Predizione20 richieste/minInferenza del modello condiviso (POST /api/models/{id}/predict)
Esportazione20 richieste/minEsportazioni in formato modello (POST /api/exports) ed esportazioni di set di dati NDJSON
Scarica30 richieste/minDownload dei file relativi al peso dei modelli (GET /api/models/{id}/download)
DedicatoIllimitatoEndpoint dedicati: il tuo servizio personale, senza limiti API

Ogni categoria ha un contatore indipendente per chiave API. Ad esempio, effettuare 20 richieste di previsione non influisce sulla tua quota predefinita di 100 richieste al minuto.

Endpoint dedicati (illimitati)

Endpoint dedicati sono non soggetto ai limiti di frequenza delle chiavi APIQuando si distribuisce un modello su un endpoint dedicato, le richieste all'URL di tale endpoint (ad esempio, https://predict-abc123.run.app/predict) vai direttamente al tuo servizio dedicato senza limitazioni di velocità dalla piattaforma. Paghi per la potenza di calcolo, quindi ottieni un throughput illimitato fino alla configurazione di scalabilità del tuo endpoint.

Limiti di velocità di elaborazione

Quando ricevi un 429 codice di stato, attendere Retry-After (o fino a quando X-RateLimit-Reset) prima di riprovare. Vedi il Domande frequenti sui limiti di velocità per un'implementazione del backoff esponenziale.

Formato della Risposta

Risposte di successo

Le risposte restituiscono JSON con campi specifici delle risorse:

{
    "datasets": [...],
    "total": 100
}

Risposte di Errore

{
    "error": "Invalid dataset ID"
}
Stato HTTPSignificato
200Successo
201Creata
400Richiesta non valida
401Autenticazione richiesta
403Permessi insufficienti
404Risorsa non trovata
409Conflitto (duplicato)
429Limite di velocità superato
500Errore del server

API dei Dataset

Gestisci raccolte di immagini etichettate per l'addestramento YOLO .

Elenca i dataset

GET /api/datasets

Parametri di query:

ParametroTipoDescrizione
usernamestringFiltra per nome utente
slugstringRecupera singolo set di dati tramite slug
limitintElementi per pagina (impostazione predefinita: 20, massimo: 500)
ownerstringNome utente del proprietario dell'area 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 set di dati, 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 set di dati

PATCH /api/datasets/{datasetId}

Corpo (aggiornamento parziale):

{
    "name": "Updated Name",
    "description": "New description",
    "visibility": "public"
}

Elimina dataset

DELETE /api/datasets/{datasetId}

Elimina in modo non definitivo il set di dati (spostato nel cestino, recuperabile per 30 giorni).

Clona Dataset

POST /api/datasets/{datasetId}/clone

Crea una copia del set di dati con tutte le immagini e le etichette. Solo i set di dati pubblici possono essere clonati.

Corpo (tutti i campi sono facoltativi):

{
    "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 il file di esportazione del set di dati.

Risposta:

{
    "downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
    "cached": true
}

Ottieni statistiche sulla classe

GET /api/datasets/{datasetId}/class-stats

Restituisce la distribuzione delle classi, la mappa termica della posizione e le statistiche dimensionali. I risultati vengono 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 set di dati.

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 set di dati

POST /api/datasets/{datasetId}/predict

Esegui YOLO sulle immagini del set di dati per generare automaticamente le annotazioni. Utilizza un modello selezionato per prevedere le etichette per le immagini non annotate.

Corpo:

CampoTipoObbligatorioDescrizione
imageHashstringHash dell'immagine da annotare
modelIdstringNoID modello da utilizzare per l'inferenza
confidencefloatNoSoglia di confidenza (impostazione predefinita: 0,25)
ioufloatNoIoU (impostazione predefinita: 0,45)

Acquisizione dei dati

POST /api/datasets/ingest

Crea un processo di acquisizione dei dati 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 set di dati

Elenco immagini

GET /api/datasets/{datasetId}/images

Parametri di query:

ParametroTipoDescrizione
splitstringFiltra per divisione: train, val, test
offsetintOffset di impaginazione (impostazione predefinita: 0)
limitintElementi per pagina (impostazione predefinita: 50, massimo: 5000)
sortstringOrdine di classificazione: newest, oldest, name-asc, name-desc, size-asc, size-desc, labels-asc, labels-desc
hasLabelstringFiltra per stato dell'etichetta (true oppure false)
hasErrorstringFiltra per stato di errore (true oppure false)
searchstringRicerca per nome file o hash immagine
includeThumbnailsstringIncludi URL delle miniature firmate (impostazione predefinita: true)
includeImageUrlsstringIncludi URL completi delle immagini firmate (impostazione predefinita: false)

Ottieni URL delle immagini firmate

POST /api/datasets/{datasetId}/images/urls

Ottieni URL firmati per un batch di hash di immagini (da visualizzare nel browser).

Elimina immagine

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

Ottieni etichette immagine

GET /api/datasets/{datasetId}/images/{hash}/labels

Restituisce annotazioni e nomi di classi per un'immagine specifica.

Aggiorna etichette immagini

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 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 le divisioni (train/val/test) all'interno di un set di dati:

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

Eliminazione di immagini in blocco:

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

API dei Progetti

Gestisci gli spazi di lavoro di formazione che raggruppano i modelli.

Elenca Progetti

GET /api/projects

Parametri di query:

ParametroTipoDescrizione
usernamestringFiltra per nome utente
limitintElementi per pagina
ownerstringNome utente del proprietario dell'area 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"]

Aggiornamento progetto

PATCH /api/projects/{projectId}

Elimina progetto

DELETE /api/projects/{projectId}

Elimina temporaneamente il progetto (spostato nel cestino).

Progetto Clone

POST /api/projects/{projectId}/clone

Icona del progetto

Carica l'icona del progetto (modulo multiparte 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:

ParametroTipoObbligatorioDescrizione
projectIdstringID progetto (obbligatorio)
fieldsstringNoSet di campi: summary, charts
idsstringNoID modello separati da virgola
limitintNoRisultati massimi (impostazione predefinita 20, massimo 100)

Elenco modelli completati

GET /api/models/completed

Restituisce i modelli che hanno completato l'addestramento (da utilizzare nei selettori di modelli e nell'implementazione).

Recupera Modello

GET /api/models/{modelId}

Crea modello

POST /api/models

Corpo JSON:

CampoTipoObbligatorioDescrizione
projectIdstringID progetto target
slugstringNoSlug URL (alfanumerico minuscolo/trattini)
namestringNoNome visualizzato (max 100 caratteri)
descriptionstringNoDescrizione del modello (max 1000 caratteri)
taskstringNoTipo di attività (detect, segment, posa, obb, classify)

Caricamento file modello

Modello .pt Il caricamento dei file viene gestito separatamente. Utilizza l'interfaccia utente della piattaforma per trascinare i file dei modelli su un progetto.

Aggiorna modello

PATCH /api/models/{modelId}

Elimina modello

DELETE /api/models/{modelId}

Scarica i file dei modelli

GET /api/models/{modelId}/files

Restituisce URL di download firmati per i file del modello.

Modello clone

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"
}
CampoTipoObbligatorioDescrizione
targetProjectSlugstringSlug del progetto di destinazione
modelNamestringNoNome del modello clonato
descriptionstringNoDescrizione del modello
ownerstringNoNome utente del team (per la clonazione dell'area di lavoro)

Scarica traccia

POST /api/models/{modelId}/track-download

Monitorare le analisi relative al download dei modelli.

Esegui inferenza

POST /api/models/{modelId}/predict

Formato Multipart:

CampoTipoDescrizione
filefileFile immagine (JPEG, PNG, WebP)
conffloatSoglia di confidenza (impostazione predefinita: 0,25)
ioufloatIoU (impostazione predefinita: 0,7)
imgszintDimensione dell'immagine in pixel (impostazione predefinita: 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 Predict

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

Ottieni un token a breve durata per richieste di previsione diretta. Il token bypassa il proxy API per un'inferenza a bassa latenza dalle applicazioni lato client.

Modello di riscaldamento

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

Precaricare un modello per una prima inferenza più rapida. Richiamare questa funzione prima di eseguire le previsioni per evitare ritardi nella richiesta iniziale.


API di Addestramento

Avvia, monitora e annulla i processi di formazione 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,
        },
    },
)

GPU

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 attuale del processo di addestramento, le metriche e lo stato di avanzamento di 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:

ParametroTipoDescrizione
modelIdstringFiltra per modello
statusstringFiltra per stato
limitintRisultati massimi (impostazione predefinita: 20, massimo: 100)
ownerstringNome utente del proprietario dell'area 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
    }
}
CampoTipoObbligatorioDescrizione
modelIdstringID modello da distribuire
namestringNome della distribuzione
regionstringRegione di deployment
resourcesoggettoNoConfigurazione delle risorse (cpu, memoriaGi, 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 ottenere 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 una distribuzione interrotta.

Ferma Distribuzione

POST /api/deployments/{deploymentId}/stop

Sospendi una distribuzione in corso (interrompe la fatturazione).

Controllo dello stato

GET /api/deployments/{deploymentId}/health

Restituisce lo stato di integrità dell'endpoint di distribuzione.

Esegui inferenza sulla distribuzione

POST /api/deployments/{deploymentId}/predict

Invia un'immagine direttamente a un endpoint di distribuzione per l'inferenza. Funzionalmente equivalente alla previsione del modello, ma instradato attraverso l'endpoint dedicato per una minore latenza.

Formato Multipart:

CampoTipoDescrizione
filefileFile immagine (JPEG, PNG, WebP)
conffloatSoglia di confidenza (impostazione predefinita: 0,25)
ioufloatIoU (impostazione predefinita: 0,7)
imgszintDimensione dell'immagine in pixel (impostazione predefinita: 640)

Recupera Metriche

GET /api/deployments/{deploymentId}/metrics

Restituisce il conteggio delle richieste, la latenza e le metriche relative al tasso di errore con dati sparkline.

Parametri di query:

ParametroTipoDescrizione
rangestringIntervallo di tempo: 1h, 6h, 24h (predefinito), 7d, 30d
sparklinestringImpostare su true per dati sparkline ottimizzati per la visualizzazione del dashboard

Recupera Log

GET /api/deployments/{deploymentId}/logs

Parametri di query:

ParametroTipoDescrizione
severitystringFiltro separato da virgola: DEBUG, INFO, WARNING, ERROR, CRITICAL
limitintNumero di voci (impostazione predefinita: 50, massimo: 200)
pageTokenstringToken di impaginazione dalla risposta precedente

API di monitoraggio

Metriche aggregate

GET /api/monitoring

Restituisce metriche aggregate relative a tutte le distribuzioni degli utenti: richieste totali, distribuzioni attive, tasso di errore e latenza media.


API di Esportazione

Converti i modelli in formati ottimizzati per l'implementazione edge.

Elenca Esportazioni

GET /api/exports

Parametri di query:

ParametroTipoDescrizione
modelIdstringID modello (obbligatorio)
statusstringFiltra per stato
limitintRisultati massimi (impostazione predefinita: 20, massimo: 100)

Crea Esportazione

POST /api/exports

Corpo:

CampoTipoObbligatorioDescrizione
modelIdstringID modello sorgente
formatstringFormato di esportazione (vedi tabella sottostante)
gpuTypestringCondizionaleRichiesto quando format è engine (TensorRT)
argsoggettoNoEsporta argomenti (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:

FormatoValoreCaso d'uso
ONNXonnxInferenza multipiattaforma
TorchScripttorchscriptDeployment PyTorch
OpenVINOopenvinoIntel
TensorRTengineGPU NVIDIA
CoreMLcoremlDispositivi Apple
TFLitetfliteMobile e integrato
TF SavedModelsaved_modelTensorFlow
TF GraphDefpbGrafico TensorFlow
PaddlePaddlepaddleBaidu PaddlePaddle
NCNNncnnRete neurale mobile
Edge TPUedgetpuDispositivi Google
TF.jstfjsInferenza del browser
MNNmnnInferenza mobile Alibaba
RKNNrknnNPU Rockchip
IMXimxSensore Sony IMX500
AxeleraaxeleraAcceleratori Axelera AI
ExecuTorchexecutorchRuntime Meta ExecuTorch

Recupera Stato Esportazione

GET /api/exports/{exportId}

Annulla esportazione

DELETE /api/exports/{exportId}

Traccia Esporta Scarica

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:

ParametroTipoDescrizione
limitintDimensione pagina (impostazione predefinita: 20, massimo: 100)
pageintNumero di pagina (predefinito: 1)
archivedbooleanotrue per la scheda Archivio, false per Posta in arrivo
searchstringRicerca senza distinzione tra maiuscole e minuscole nei campi degli eventi

Contrassegna Eventi come Visti

POST /api/activity/mark-seen

Corpo:

{
    "all": true
}

Oppure passare ID specifici:

{
    "eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}

Archivia Eventi

POST /api/activity/archive

Corpo:

{
    "all": true,
    "archive": true
}

Oppure passare 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:

ParametroTipoDescrizione
typestringFiltro: all, project, dataset, model
pageintNumero di pagina (predefinito: 1)
limitintElementi per pagina (impostazione predefinita: 50, massimo: 200)
ownerstringNome utente del proprietario dell'area di lavoro

Ripristina Elemento

POST /api/trash

Corpo:

{
    "id": "item_abc123",
    "type": "dataset"
}

Elimina definitivamente l'elemento

DELETE /api/trash

Corpo:

{
    "id": "item_abc123",
    "type": "dataset"
}

Irreversibile

La cancellazione definitiva non può essere annullata. La risorsa e tutti i dati associati saranno 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à monetarie

Gli importi delle fatture sono espressi in centesimi (creditsCents) dove 100 = $1.00.

Recupera Saldo

GET /api/billing/balance

Parametri di query:

ParametroTipoDescrizione
ownerstringNome utente del proprietario dell'area 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 (la più recente per prima).

Parametri di query:

ParametroTipoDescrizione
ownerstringNome utente del proprietario dell'area di lavoro

Crea Sessione di Checkout

POST /api/billing/checkout-session

Corpo:

{
    "amount": 25,
    "owner": "team-username"
}
CampoTipoObbligatorioDescrizione
amountnumeroImporto in dollari ($5-$1000)
ownerstringNoNome utente del team per le ricariche dello spazio di lavoro (richiede il ruolo di amministratore)

Crea una sessione di checkout per l'acquisto a credito.

Crea Checkout Abbonamento

POST /api/billing/subscription-checkout

Crea una sessione di checkout per l'aggiornamento dell'abbonamento Pro.

Corpo:

{
    "planId": "pro",
    "billingCycle": "monthly",
    "owner": "team-username"
}
CampoTipoObbligatorioDescrizione
planIdstringPianifica l'abbonamento a (pro)
billingCyclestringNoCiclo di fatturazione: monthly (predefinito) o yearly
ownerstringNoNome utente del team per gli aggiornamenti dell'area 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:

ParametroTipoDescrizione
ownerstringNome utente del proprietario dell'area di lavoro

Aggiorna configurazione ricarica automatica

PATCH /api/billing/auto-topup

Corpo:

{
    "enabled": true,
    "thresholdCents": 500,
    "amountCents": 2500
}

Metodi di pagamento

Elenco dei metodi di pagamento

GET /api/billing/payment-methods

Crea intento di configurazione

POST /api/billing/payment-methods/setup

Restituisce un segreto client per aggiungere 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 lo spazio di archiviazione

POST /api/storage

Avvia un ricalcolo dell'utilizzo dello spazio di archiviazione.


API di caricamento

Il caricamento diretto dei file utilizza un flusso URL firmato in due fasi.

Ottieni URL di caricamento firmato

POST /api/upload/signed-url

Richiedi un URL firmato per caricare un file direttamente sul cloud storage. L'URL firmato bypassa il server API per il trasferimento di file di grandi dimensioni.

Corpo:

{
    "assetType": "images",
    "assetId": "abc123",
    "filename": "my-image.jpg",
    "contentType": "image/jpeg",
    "totalBytes": 5242880
}
CampoTipoDescrizione
assetTypestringTipo di bene: models, datasets, images, videos
assetIdstringID dell'asset di destinazione
filenamestringNome file originale
contentTypestringTipo MIME
totalBytesintDimensione 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 completo

POST /api/upload/complete

Notifica alla piattaforma che il caricamento del file è stato completato, in modo che 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:

ParametroTipoDescrizione
keyIdstringID chiave API da revocare

Esempio:

curl -X DELETE \
  -H "Authorization: Bearer $API_KEY" \
  "https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"

API Team e membri

Gestisci la collaborazione nell'area di lavoro con team, membri e inviti.

Elenco squadre

GET /api/teams

Crea team

POST /api/teams/create

Corpo:

{
    "username": "my-team",
    "fullName": "My Team"
}

Elenco membri

GET /api/members

Restituisce i membri dell'area di lavoro corrente.

Invita un membro

POST /api/members

Corpo:

{
    "email": "user@example.com",
    "role": "editor"
}

Ruoli dei membri

RuoloPermessi
viewerAccesso in sola lettura alle risorse dell'area di lavoro
editorCreare, modificare ed eliminare risorse
adminAccesso completo, compresa la gestione dei membri

Per i dettagli sui ruoli nell'interfaccia utente, consulta Teams.

Aggiorna ruolo membro

PATCH /api/members/{userId}

Rimuovi membro

DELETE /api/members/{userId}

Trasferimento di proprietà

POST /api/members/transfer-ownership

Inviti

Accetta invito

POST /api/invites/accept

Ottieni informazioni sull'invito

GET /api/invites/info

Parametri di query:

ParametroTipoDescrizione
tokenstringToken di invito

Revoca invito

DELETE /api/invites/{inviteId}

Invia nuovamente l'invito

POST /api/invites/{inviteId}/resend

Esplora l'API

Cerca contenuti pubblici

GET /api/explore/search

Parametri di query:

ParametroTipoDescrizione
qstringQuery di ricerca
typestringTipo di risorsa: all (predefinito), projects, datasets
sortstringOrdine di classificazione: stars (predefinito), newest, oldest, name-asc, name-desc, count-desc, count-asc
offsetintOffset di impaginazione (impostazione predefinita: 0). I risultati restituiscono 20 elementi per pagina.
GET /api/explore/sidebar

Restituisce contenuti selezionati per la barra laterale Esplora.


API utente e impostazioni

Ottieni utente per nome utente

GET /api/users

Parametri di query:

ParametroTipoDescrizione
usernamestringNome utente da cercare

Segui o smetti di seguire un utente

PATCH /api/users

Corpo:

{
    "username": "target-user",
    "followed": true
}

Verifica disponibilità nome utente

GET /api/username/check

Parametri di query:

ParametroTipoDescrizione
usernamestringNome utente da controllare
suggestbooleanoOpzionale: true includere un suggerimento se assunto

Impostazioni

GET /api/settings
POST /api/settings

Ottieni o aggiorna le impostazioni del profilo utente (nome visualizzato, biografia, link social, ecc.).

Icona 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 lo stato di lavoro GDPR

GET /api/gdpr

Parametri di query:

ParametroTipoDescrizione
jobIdstringID lavoro GDPR da verificare

Restituisce lo stato del processo. Per i processi di esportazione completati, la risposta include un downloadUrl.

Avvia esportazione o elimina flusso

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

CodiceStato HTTPDescrizione
UNAUTHORIZED401Chiave API non valida o mancante
FORBIDDEN403Permessi insufficienti
NOT_FOUND404Risorsa non trovata
VALIDATION_ERROR400Dati della richiesta non validi
RATE_LIMITED429Troppe richieste
INTERNAL_ERROR500Errore del server

Python

Per una più facile integrazione, utilizza ilPython Ultralytics che gestisce automaticamente l'autenticazione, i caricamenti e lo streaming delle metriche in tempo reale.

Installazione e configurazione

pip install ultralytics

Verifica l'installazione:

yolo check

Requisiti di versione del pacchetto

L'integrazione con la piattaforma richiede ultralytics>= 8.4.14. Le versioni precedenti NON funzionano 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:

ModelloDescrizione
ul://username/datasets/slugSet di dati
ul://username/project-nameProgetto
ul://username/project/model-nameModello specifico
ul://ultralytics/yolo26/yolo26nModello 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 al tuo server gli eventi della piattaforma tramite callback HTTP POST:

EventoDescrizione
training.startedAddestramento avviato
training.epochEpoca completata
training.completedAddestramento terminato
training.failedAddestramento fallito
export.completedEsportazione pronta

Funzionalità aziendale

Gli endpoint webhook personalizzati sono disponibili nei piani Enterprise. I webhook di formazione per Python funzionano automaticamente in tutti i piani.


FAQ

Come si paginano risultati di grandi dimensioni?

La maggior parte degli endpoint utilizza un limit parametro per controllare il numero di risultati restituiti per ogni richiesta:

curl -H "Authorization: Bearer $API_KEY" \
  "https://platform.ultralytics.com/api/datasets?limit=50"

Gli endpoint Activity e Trash supportano anche un page parametro per l'impaginazione basata sulle pagine:

curl -H "Authorization: Bearer $API_KEY" \
  "https://platform.ultralytics.com/api/activity?page=2&limit=20"

L'endpoint Explore Search utilizza offset invece di page, con una dimensione fissa della pagina 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. Python è un wrapper di comodità 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 intestazione dalla risposta 429 per attendere il tempo necessario:

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 posso trovare l'ID del mio modello o set di dati?

Gli ID delle risorse vengono restituiti quando si creano risorse tramite l'API. È inoltre possibile trovarli nell'URL della piattaforma:

https://platform.ultralytics.com/username/project/model-name
                                  ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
                                  username project   model

Utilizza gli endpoint dell'elenco per effettuare ricerche per nome o filtrare per progetto.



📅 Creato 1 mese fa ✏️ Aggiornato 4 giorni fa
glenn-jochersergiuwaxmannLaughing-q

Commenti