REST API-Referenz
Ultralytics Platform bietet eine umfassende REST API für den programmatischen Zugriff auf Datensätze, Modelle, Trainings und Bereitstellungen.

Schnellstart
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
API-Übersicht
Die API ist um die Kernressourcen der Plattform herum organisiert:
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
| Ressource | Beschreibung | Wichtige Vorgänge |
|---|---|---|
| Datensätze | Beschriftete Bildersammlungen | CRUD, Bilder, Beschriftungen, Export, Klonen |
| Projekte | Schulungsarbeitsplätze | CRUD, Klon, Symbol |
| Modelle | Geschulte Kontrollpunkte | CRUD, Vorhersagen, Herunterladen, Klonen, Exportieren |
| Bereitstellungen | Spezielle Inferenz-Endpunkte | CRUD, Start/Stopp, Metriken, Protokolle, Zustand |
| Exporte | Formatkonvertierungsaufträge | Erstellen, Status, Herunterladen |
| Training | Cloud GPU aufträge | Start, Status, Abbrechen |
| Abrechnung | Credits und Abonnements | Guthaben, Aufladen, Zahlungsmethoden |
| Teams | Zusammenarbeit im Arbeitsbereich | Mitglieder, Einladungen, Rollen |
Authentifizierung
Die meisten API-Anfragen erfordern eine Authentifizierung über einen API-Schlüssel. Öffentliche Endpunkte (Auflistung öffentlicher Datensätze, Projekte und Modelle) unterstützen den anonymen Lesezugriff ohne Schlüssel.
API-Schlüssel abrufen
- Gehen Sie zu
Settings>Profile(Abschnitt „API-Schlüssel“) - Klicken
Create Key - Kopieren Sie den generierten Schlüssel
Detaillierte Anweisungen finden Sie unter API-Schlüssel.
Autorisierungs-Header
Fügen Sie Ihren API-Schlüssel in alle Anfragen ein:
Authorization: Bearer ul_your_api_key_here
API-Schlüsselformat
API-Schlüssel verwenden das Format ul_ gefolgt von 40 Hexadezimalzeichen. Behalte deinen Schlüssel geheim – gib ihn niemals in die Versionskontrolle ein und teile ihn nicht öffentlich mit anderen.
Beispiel
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();
Basis-URL
Alle API-Endpunkte verwenden:
https://platform.ultralytics.com/api
Ratenbegrenzungen
Die API verwendet ein zweistufiges System zur Begrenzung der Rate, um vor Missbrauch zu schützen und gleichzeitig die legitime Nutzung uneingeschränkt zu ermöglichen:
- Pro API-Schlüssel – Beschränkungen, die pro API-Schlüssel für authentifizierte Anfragen gelten
- Pro IP — 100 Anfragen/Minute pro IP-Adresse auf allen
/api/*Pfade (gilt sowohl für authentifizierte als auch für nicht authentifizierte Anfragen)
Bei Drosselung gibt die API Folgendes zurück 429 mit Wiederholungsmetadaten:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z
Pro API-Schlüssel-Limits
Ratenbeschränkungen werden automatisch basierend auf dem aufgerufenen Endpunkt angewendet. Aufwändige Vorgänge unterliegen strengeren Beschränkungen, um Missbrauch zu verhindern, während für Standard-CRUD-Vorgänge großzügige Standardwerte gelten:
| Endpunkt | Limit | Gilt für |
|---|---|---|
| Standard | 100 Anfragen/Minute | Alle Endpunkte, die nicht unten aufgeführt sind (Liste, Abruf, Erstellung, Aktualisierung, Löschung) |
| Training | 10 Anfragen/Minute | Start von Cloud-Schulungsjobs (POST /api/training/start) |
| Hochladen | 10 Anfragen/Minute | Datei-Uploads, signierte URLs und Datensatz-Erfassung |
| Vorhersagen | 20 Anfragen/Minute | Gemeinsame Modellinferenz (POST /api/models/{id}/predict) |
| Export | 20 Anfragen/Minute | Export von Modellformaten (POST /api/exports) und Datensatz-NDJSON-Exporte |
| Herunterladen | 30 Anfragen/Minute | Modellgewicht-Datei-Downloads (GET /api/models/{id}/download) |
| Dediziert | Unbegrenzt | Dedizierte Endpunkte – Ihr eigener Dienst, keine API-Beschränkungen |
Jede Kategorie verfügt über einen unabhängigen Zähler pro API-Schlüssel. Wenn Sie beispielsweise 20 Vorhersageanfragen stellen, hat dies keinen Einfluss auf Ihr Standardkontingent von 100 Anfragen pro Minute.
Dedizierte Endpunkte (unbegrenzt)
Dedizierte Endpunkte sind nicht den API-Schlüssel-Ratenbeschränkungen unterworfenWenn Sie ein Modell auf einem dedizierten Endpunkt bereitstellen, werden Anfragen an diese Endpunkt-URL (z. B. https://predict-abc123.run.app/predict) gelangen direkt zu Ihrem dedizierten Dienst, ohne dass die Plattform die Geschwindigkeit begrenzt. Sie bezahlen für die Rechenleistung und erhalten daher unbegrenzten Durchsatz bis zur Skalierungskonfiguration Ihres Endpunkts.
Handhabung von Ratenbeschränkungen
Wenn Sie eine 429 Statuscode, warten auf Retry-After (oder bis X-RateLimit-Reset) vor dem erneuten Versuch. Siehe die Häufig gestellte Fragen zum Rate Limit für eine exponentielle Backoff-Implementierung.
Antwortformat
Erfolgsreaktionen
Die Antworten geben JSON mit ressourcenspezifischen Feldern zurück:
{
"datasets": [...],
"total": 100
}
Fehlerantworten
{
"error": "Invalid dataset ID"
}
| HTTP-Status | Bedeutung |
|---|---|
200 | Erfolg |
201 | Erstellt |
400 | Ungültige Anfrage |
401 | Authentifizierung erforderlich |
403 | Unzureichende Berechtigungen |
404 | Ressource nicht gefunden |
409 | Konflikt (Duplikat) |
429 | Ratenlimit überschritten |
500 | Serverfehler |
Datensätze API
Verwalten Sie beschriftete Bildersammlungen für das Training von YOLO .
Datensätze auflisten
GET /api/datasets
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
username | string | Nach Benutzername filtern |
slug | string | Einzelnen Datensatz anhand des Slugs abrufen |
limit | int | Elemente pro Seite (Standard: 20, maximal: 500) |
owner | string | Benutzername des Arbeitsbereichsinhabers |
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")
Antwort:
{
"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"
}
Datensatz abrufen
GET /api/datasets/{datasetId}
Gibt alle Details zum Datensatz zurück, einschließlich Metadaten, Klassennamen und Aufteilungszahlen.
Datensatz erstellen
POST /api/datasets
Body:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"visibility": "private",
"classNames": ["person", "car"]
}
Unterstützte Aufgaben
Gültig task Werte: detect, segment, classify, pose, obb.
Datensatz aktualisieren
PATCH /api/datasets/{datasetId}
Körper (teilweise Aktualisierung):
{
"name": "Updated Name",
"description": "New description",
"visibility": "public"
}
Datensatz löschen
DELETE /api/datasets/{datasetId}
Löscht den Datensatz vorläufig (wird in den Papierkorb verschoben und kann 30 Tage lang wiederhergestellt werden).
Datensatz klonen
POST /api/datasets/{datasetId}/clone
Erstellt eine Kopie des Datensatzes mit allen Bildern und Beschriftungen. Es können nur öffentliche Datensätze geklont werden.
Körper (alle Felder optional):
{
"name": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"owner": "team-username"
}
Datensatz exportieren
GET /api/datasets/{datasetId}/export
Gibt eine JSON-Antwort mit einer signierten Download-URL für die Datensatz-Exportdatei zurück.
Antwort:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}
Klassenstatistik abrufen
GET /api/datasets/{datasetId}/class-stats
Gibt die Klassenverteilung, die Standort-Heatmap und die Dimensionsstatistiken zurück. Die Ergebnisse werden bis zu 5 Minuten lang zwischengespeichert.
Antwort:
{
"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
}
Modelle anhand von Datensätzen trainieren
GET /api/datasets/{datasetId}/models
Gibt Modelle zurück, die mit diesem Datensatz trainiert wurden.
Antwort:
{
"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
}
Datensatz automatisch annotieren
POST /api/datasets/{datasetId}/predict
Führen Sie YOLO für Bilder im Datensatz durch, um Annotationen automatisch zu generieren. Verwendet ein ausgewähltes Modell, um Labels für nicht annotierte Bilder vorherzusagen.
Body:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
imageHash | string | Ja | Hashwert des zu kommentierenden Bildes |
modelId | string | Nein | Für die Inferenz zu verwendende Modell-ID |
confidence | float | Nein | Konfidenzschwelle (Standard: 0,25) |
iou | float | Nein | IoU (Standard: 0,45) |
Datensatzaufnahme
POST /api/datasets/ingest
Erstellen Sie einen Datensatz-Ingest-Job, um hochgeladene ZIP-Dateien mit Bildern und Beschriftungen zu verarbeiten.
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]
Datensatz Bilder
Bilderliste
GET /api/datasets/{datasetId}/images
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
split | string | Nach Aufteilung filtern: train, val, test |
offset | int | Seitenumbruch-Offset (Standard: 0) |
limit | int | Elemente pro Seite (Standard: 50, maximal: 5000) |
sort | string | Sortierreihenfolge: newest, oldest, name-asc, name-desc, size-asc, size-desc, labels-asc, labels-desc |
hasLabel | string | Nach Label-Status filtern (true oder false) |
hasError | string | Nach Fehlerstatus filtern (true oder false) |
search | string | Suche nach Dateiname oder Bild-Hash |
includeThumbnails | string | Signierte Miniaturbild-URLs einfügen (Standard: true) |
includeImageUrls | string | Vollständige Bild-URLs mit Signatur einfügen (Standard: false) |
Signierte Bild-URLs abrufen
POST /api/datasets/{datasetId}/images/urls
Erhalten Sie signierte URLs für eine Reihe von Bild-Hashes (zur Anzeige im Browser).
Bild löschen
DELETE /api/datasets/{datasetId}/images/{hash}
Bildbeschriftungen abrufen
GET /api/datasets/{datasetId}/images/{hash}/labels
Gibt Anmerkungen und Klassennamen für ein bestimmtes Bild zurück.
Bildbeschriftungen aktualisieren
PUT /api/datasets/{datasetId}/images/{hash}/labels
Body:
{
"labels": [{ "classId": 0, "bbox": [0.5, 0.5, 0.2, 0.3] }]
}
Koordinatenformat
Begrenzungsrahmen verwenden das YOLO Format: [x_center, y_center, width, height] wobei alle Werte zwischen 0 und 1 liegen.
Massenbildbearbeitung
Verschieben Sie Bilder zwischen Teilungen (Train/Val/Test) innerhalb eines Datensatzes:
PATCH /api/datasets/{datasetId}/images/bulk
Bilder in großen Mengen löschen:
DELETE /api/datasets/{datasetId}/images/bulk
Projekte API
Verwalten Sie Trainingsarbeitsbereiche, in denen Modelle gruppiert sind.
Projekte auflisten
GET /api/projects
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
username | string | Nach Benutzername filtern |
limit | int | Elemente pro Seite |
owner | string | Benutzername des Arbeitsbereichsinhabers |
Projekt abrufen
GET /api/projects/{projectId}
Projekt erstellen
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"]
Projekt aktualisieren
PATCH /api/projects/{projectId}
Projekt löschen
DELETE /api/projects/{projectId}
Das Projekt wird vorläufig gelöscht (in den Papierkorb verschoben).
Projekt klonen
POST /api/projects/{projectId}/clone
Projekt-Symbol
Projekt-Symbol hochladen (mehrteiliges Formular mit Bilddatei):
POST /api/projects/{projectId}/icon
Entfernen Sie das Projektsymbol:
DELETE /api/projects/{projectId}/icon
Modelle API
Verwalten Sie Checkpoints für trainierte Modelle innerhalb von Projekten.
Modelle auflisten
GET /api/models
Abfrageparameter:
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
projectId | string | Ja | Projekt-ID (erforderlich) |
fields | string | Nein | Feldsatz: summary, charts |
ids | string | Nein | Durch Kommas getrennte Modell-IDs |
limit | int | Nein | Maximale Ergebnisse (Standard 20, maximal 100) |
Liste der abgeschlossenen Modelle
GET /api/models/completed
Gibt Modelle zurück, deren Training abgeschlossen ist (zur Verwendung in Modellselektoren und bei der Bereitstellung).
Modell abrufen
GET /api/models/{modelId}
Modell erstellen
POST /api/models
JSON-Hauptteil:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
projectId | string | Ja | Zielprojekt-ID |
slug | string | Nein | URL-Slug (kleine Buchstaben, Zahlen, Bindestriche) |
name | string | Nein | Anzeigename (max. 100 Zeichen) |
description | string | Nein | Modellbeschreibung (max. 1000 Zeichen) |
task | string | Nein | Aufgabentyp (detect, segment, Pose, obb, classify) |
Modelldatei hochladen
Modell .pt Datei-Uploads werden separat behandelt. Verwenden Sie die Plattform-Benutzeroberfläche, um Modelldateien per Drag & Drop in ein Projekt zu ziehen.
Modell aktualisieren
PATCH /api/models/{modelId}
Modell löschen
DELETE /api/models/{modelId}
Modelldateien herunterladen
GET /api/models/{modelId}/files
Gibt signierte Download-URLs für Modelldateien zurück.
Klonmodell
POST /api/models/{modelId}/clone
Klonen Sie ein öffentliches Modell in eines Ihrer Projekte.
Body:
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
targetProjectSlug | string | Ja | Zielprojekt-Slug |
modelName | string | Nein | Name für das geklonte Modell |
description | string | Nein | Modellbeschreibung |
owner | string | Nein | Team-Benutzername (für das Klonen von Arbeitsbereichen) |
Track herunterladen
POST /api/models/{modelId}/track-download
Analyse der Downloads von Track-Modellen.
Inferenz ausführen
POST /api/models/{modelId}/predict
Multipart-Formular:
| Feld | Typ | Beschreibung |
|---|---|---|
file | Datei definiert | Bilddatei (JPEG, PNG, WebP) |
conf | float | Konfidenzschwelle (Standard: 0,25) |
iou | float | IoU (Standard: 0,7) |
imgsz | int | Bildgröße in Pixeln (Standard: 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"]
Antwort:
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
],
"metadata": {
"imageCount": 1
}
}
Predict-Token erhalten
POST /api/models/{modelId}/predict/token
Erhalten Sie ein kurzlebiges Token für direkte Vorhersageanfragen. Das Token umgeht den API-Proxy für eine Inferenz mit geringerer Latenz aus clientseitigen Anwendungen.
Aufwärmmodell
POST /api/models/{modelId}/predict/warmup
Laden Sie ein Modell vorab, um die erste Inferenz zu beschleunigen. Rufen Sie dies vor der Ausführung von Vorhersagen auf, um Verzögerungen bei der ersten Anfrage zu vermeiden.
Training API
Cloud-Schulungsaufträge starten, überwachen und abbrechen.
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]
Training starten
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
Verfügbare GPU sind unter anderem rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000und andere. Siehe Cloud-Training für die vollständige Liste mit Preisen.
Trainingsstatus abrufen
GET /api/models/{modelId}/training
Gibt den aktuellen Status, die Metriken und den Fortschritt des Trainingsauftrags für ein Modell zurück.
Training abbrechen
DELETE /api/models/{modelId}/training
Beendet die ausgeführte Recheninstanz und markiert den Auftrag als abgebrochen.
Bereitstellungen API
Erstellen und verwalten Sie dedizierte Inferenz-Endpunkte.
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]
Bereitstellungen auflisten
GET /api/deployments
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
modelId | string | Nach Modell filtern |
status | string | Nach Status filtern |
limit | int | Maximale Ergebnisse (Standard: 20, maximal: 100) |
owner | string | Benutzername des Arbeitsbereichsinhabers |
Bereitstellung erstellen
POST /api/deployments
Body:
{
"modelId": "model_abc123",
"name": "my-deployment",
"region": "us-central1",
"resources": {
"cpu": 1,
"memoryGi": 2,
"minInstances": 0,
"maxInstances": 1
}
}
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
modelId | string | Ja | Modell-ID zum Bereitstellen |
name | string | Ja | Name der Bereitstellung |
region | string | Ja | Bereitstellungsregion |
resources | Objekt | Nein | Ressourcenkonfiguration (cpu, Speicher, minInstances, maxInstances) |
Erstellt einen dedizierten Inferenz-Endpunkt in der angegebenen Region. Der Endpunkt ist über eine eindeutige URL global zugänglich.
Regionsauswahl
Wählen Sie eine Region in der Nähe Ihrer Nutzer, um die geringste Latenz zu erzielen. Die Benutzeroberfläche der Plattform zeigt Latenzschätzungen für alle 43 verfügbaren Regionen an.
Bereitstellung abrufen
GET /api/deployments/{deploymentId}
Bereitstellung löschen
DELETE /api/deployments/{deploymentId}
Bereitstellung starten
POST /api/deployments/{deploymentId}/start
Eine angehaltene Bereitstellung fortsetzen.
Bereitstellung stoppen
POST /api/deployments/{deploymentId}/stop
Eine laufende Bereitstellung pausieren (stoppt die Abrechnung).
Zustandsprüfung
GET /api/deployments/{deploymentId}/health
Gibt den Gesundheitszustand des Bereitstellungsendpunkts zurück.
Inferenz bei Bereitstellung ausführen
POST /api/deployments/{deploymentId}/predict
Senden Sie ein Bild direkt an einen Bereitstellungsendpunkt zur Inferenz. Funktional gleichwertig mit der Modellvorhersage, jedoch über den dedizierten Endpunkt geleitet, um die Latenz zu verringern.
Multipart-Formular:
| Feld | Typ | Beschreibung |
|---|---|---|
file | Datei definiert | Bilddatei (JPEG, PNG, WebP) |
conf | float | Konfidenzschwelle (Standard: 0,25) |
iou | float | IoU (Standard: 0,7) |
imgsz | int | Bildgröße in Pixeln (Standard: 640) |
Metriken abrufen
GET /api/deployments/{deploymentId}/metrics
Gibt Metriken zu Anfragen, Latenz und Fehlerquote mit Sparkline-Daten zurück.
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
range | string | Zeitbereich: 1h, 6h, 24h (Standard), 7d, 30d |
sparkline | string | Einstellen auf true für optimierte Sparkline-Daten für die Dashboard-Ansicht |
Protokolle abrufen
GET /api/deployments/{deploymentId}/logs
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
severity | string | Durch Kommas getrennter Filter: DEBUG, INFO, WARNING, ERROR, CRITICAL |
limit | int | Anzahl der Einträge (Standard: 50, maximal: 200) |
pageToken | string | Paginierungstoken aus vorheriger Antwort |
Überwachungs-API
Aggregierte Metriken
GET /api/monitoring
Gibt aggregierte Metriken für alle Benutzerbereitstellungen zurück: Gesamtanzahl der Anfragen, aktive Bereitstellungen, Fehlerquote und durchschnittliche Latenz.
Export API
Modelle in optimierte Formate für den Einsatz am Rand konvertieren.
Exporte auflisten
GET /api/exports
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
modelId | string | Modell-ID (erforderlich) |
status | string | Nach Status filtern |
limit | int | Maximale Ergebnisse (Standard: 20, maximal: 100) |
Export erstellen
POST /api/exports
Body:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
modelId | string | Ja | Quellmodell-ID |
format | string | Ja | Exportformat (siehe Tabelle unten) |
gpuType | string | Bedingt | Erforderlich, wenn format ist engine (TensorRT) |
args | Objekt | Nein | Exportargumente (imgsz, half, dynamicusw.) |
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"]
Unterstützte Formate:
| Format | Wert | Anwendungsfall |
|---|---|---|
| ONNX | onnx | Plattformübergreifende Inferenz |
| TorchScript | torchscript | PyTorch-Bereitstellung |
| OpenVINO | openvino | Intel |
| TensorRT | engine | NVIDIA GPU |
| CoreML | coreml | Apple-Geräte |
| TFLite | tflite | Mobil und eingebettet |
| TF SavedModel | saved_model | TensorFlow |
| TF GraphDef | pb | TensorFlow -Graph |
| PaddlePaddle | paddle | Baidu PaddlePaddle |
| NCNN | ncnn | Mobiles neuronales Netzwerk |
| Edge TPU | edgetpu | Google -Geräte |
| TF.js | tfjs | Browser-Inferenz |
| MNN | mnn | Alibaba Mobile Inferenz |
| RKNN | rknn | Rockchip NPU |
| IMX | imx | Sony IMX500-Sensor |
| Axelera | axelera | Axelera KI-Beschleuniger |
| ExecuTorch | executorch | Meta ExecuTorch-Laufzeitumgebung |
Exportstatus abrufen
GET /api/exports/{exportId}
Export abbrechen
DELETE /api/exports/{exportId}
Track-Export herunterladen
POST /api/exports/{exportId}/track-download
Aktivitäts-API
tracken und verwalten Sie Aktivitätsereignisse für Ihr Konto.
Aktivitäten auflisten
GET /api/activity
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
limit | int | Seitengröße (Standard: 20, maximal: 100) |
page | int | Seitennummer (Standard: 1) |
archived | Boolean | true für die Registerkarte „Archiv“, false für den Posteingang |
search | string | Groß-/Kleinschreibung ignorierende Suche in Ereignisfeldern |
Ereignisse als gesehen markieren
POST /api/activity/mark-seen
Body:
{
"all": true
}
Oder bestimmte IDs übergeben:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}
Ereignisse archivieren
POST /api/activity/archive
Body:
{
"all": true,
"archive": true
}
Oder bestimmte IDs übergeben:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}
Papierkorb-API
Verwalten Sie vorläufig gelöschte Ressourcen (30 Tage Aufbewahrungsfrist).
Papierkorb auflisten
GET /api/trash
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
type | string | Filter: all, project, dataset, model |
page | int | Seitennummer (Standard: 1) |
limit | int | Elemente pro Seite (Standard: 50, maximal: 200) |
owner | string | Benutzername des Arbeitsbereichsinhabers |
Element wiederherstellen
POST /api/trash
Body:
{
"id": "item_abc123",
"type": "dataset"
}
Element dauerhaft löschen
DELETE /api/trash
Body:
{
"id": "item_abc123",
"type": "dataset"
}
Unumkehrbar
Die endgültige Löschung kann nicht rückgängig gemacht werden. Die Ressource und alle zugehörigen Daten werden entfernt.
Papierkorb leeren
DELETE /api/trash/empty
Löscht alle Elemente im Papierkorb dauerhaft.
Abrechnungs-API
Verwalten Sie Guthaben, Abonnements und Zahlungsmethoden.
Währungseinheiten
Die Rechnungsbeträge werden in Cent angegeben (creditsCents) wo 100 = $1.00.
Guthaben abrufen
GET /api/billing/balance
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
owner | string | Benutzername des Arbeitsbereichsinhabers |
Antwort:
{
"creditsCents": 2500,
"plan": "free",
"cashBalance": 25,
"creditBalance": 0,
"reservedAmount": 0,
"totalBalance": 25
}
Nutzungsübersicht abrufen
GET /api/billing/usage-summary
Gibt Details zu Plänen, Limits und Nutzungsmetriken zurück.
Transaktionen abrufen
GET /api/billing/transactions
Gibt die Transaktionshistorie zurück (die aktuellste zuerst).
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
owner | string | Benutzername des Arbeitsbereichsinhabers |
Checkout-Sitzung erstellen
POST /api/billing/checkout-session
Body:
{
"amount": 25,
"owner": "team-username"
}
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
amount | Anzahl | Ja | Betrag in Dollar (5 bis 1000 Dollar) |
owner | string | Nein | Team-Benutzername für Arbeitsbereich-Aufladungen (erfordert Administratorrolle) |
Erstellt eine Checkout-Sitzung für den Kauf auf Kredit.
Abonnement-Checkout erstellen
POST /api/billing/subscription-checkout
Erstellt eine Checkout-Sitzung für das Upgrade auf ein Pro-Abonnement.
Body:
{
"planId": "pro",
"billingCycle": "monthly",
"owner": "team-username"
}
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
planId | string | Ja | Planen Sie, sich anzumelden (pro) |
billingCycle | string | Nein | Abrechnungszyklus: monthly (Standard) oder yearly |
owner | string | Nein | Team-Benutzername für Workspace-Upgrades (erfordert Administratorrolle) |
Portal-Sitzung erstellen
POST /api/billing/portal-session
Gibt die URL zum Abrechnungsportal für die Abonnementverwaltung zurück.
Automatische Aufladung
Fügen Sie automatisch Guthaben hinzu, wenn der Kontostand unter einen Schwellenwert fällt.
Automatische Aufladung konfigurieren
GET /api/billing/auto-topup
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
owner | string | Benutzername des Arbeitsbereichsinhabers |
Konfiguration für automatische Aufladung aktualisieren
PATCH /api/billing/auto-topup
Body:
{
"enabled": true,
"thresholdCents": 500,
"amountCents": 2500
}
Zahlungsmethoden
Zahlungsmethoden auflisten
GET /api/billing/payment-methods
Setup-Absicht erstellen
POST /api/billing/payment-methods/setup
Gibt einen geheimen Client-Schlüssel zum Hinzufügen einer neuen Zahlungsmethode zurück.
Standardzahlungsmethode festlegen
POST /api/billing/payment-methods/default
Body:
{
"paymentMethodId": "pm_123"
}
Zahlungsdaten aktualisieren
PATCH /api/billing/payment-methods
Body:
{
"name": "Jane Doe",
"address": {
"line1": "123 Main St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US"
}
}
Zahlungsmethode löschen
DELETE /api/billing/payment-methods/{id}
Speicher-API
Speicherinformationen abrufen
GET /api/storage
Antwort:
{
"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"
}
]
}
}
Speicher neu berechnen
POST /api/storage
Löst eine Neuberechnung der Speichernutzung aus.
API hochladen
Direkte Datei-Uploads verwenden einen zweistufigen signierten URL-Ablauf.
Signierte Upload-URL abrufen
POST /api/upload/signed-url
Fordern Sie eine signierte URL an, um eine Datei direkt in den Cloud-Speicher hochzuladen. Die signierte URL umgeht den API-Server für große Dateiübertragungen.
Body:
{
"assetType": "images",
"assetId": "abc123",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"totalBytes": 5242880
}
| Feld | Typ | Beschreibung |
|---|---|---|
assetType | string | Art des Vermögenswerts: models, datasets, images, videos |
assetId | string | ID des Zielvermögenswerts |
filename | string | Original-Dateiname |
contentType | string | MIME-Typ |
totalBytes | int | Dateigröße in Byte |
Antwort:
{
"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"
}
Vollständiger Upload
POST /api/upload/complete
Benachrichtigen Sie die Plattform, dass der Datei-Upload abgeschlossen ist, damit sie mit der Verarbeitung beginnen kann.
Body:
{
"datasetId": "abc123",
"objectPath": "datasets/abc123/images/my-image.jpg",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"size": 5242880
}
API-Schlüssel-API
API-Schlüssel auflisten
GET /api/api-keys
API-Schlüssel erstellen
POST /api/api-keys
Body:
{
"name": "training-server"
}
API-Schlüssel löschen
DELETE /api/api-keys
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
keyId | string | API-Schlüssel-ID zum Widerrufen |
Beispiel:
curl -X DELETE \
-H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"
Teams & Mitglieder API
Verwalten Sie die Zusammenarbeit im Arbeitsbereich mit Teams, Mitgliedern und Einladungen.
Teams auflisten
GET /api/teams
Team erstellen
POST /api/teams/create
Body:
{
"username": "my-team",
"fullName": "My Team"
}
Mitgliederliste
GET /api/members
Gibt die Mitglieder des aktuellen Arbeitsbereichs zurück.
Mitglied einladen
POST /api/members
Body:
{
"email": "user@example.com",
"role": "editor"
}
Mitgliederrollen
| Rolle | Berechtigungen |
|---|---|
viewer | Schreibgeschützter Zugriff auf Arbeitsbereichsressourcen |
editor | Ressourcen erstellen, bearbeiten und löschen |
admin | Voller Zugriff einschließlich Mitgliederverwaltung |
Siehe Teams für Details zu den Rollen in der Benutzeroberfläche.
Mitgliedsrolle aktualisieren
PATCH /api/members/{userId}
Mitglied entfernen
DELETE /api/members/{userId}
Eigentumsübertragung
POST /api/members/transfer-ownership
Einladungen
Einladung annehmen
POST /api/invites/accept
Einladungsinformationen erhalten
GET /api/invites/info
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
token | string | Einladungstoken |
Einladung widerrufen
DELETE /api/invites/{inviteId}
Einladung erneut senden
POST /api/invites/{inviteId}/resend
API erkunden
Öffentliche Inhalte suchen
GET /api/explore/search
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
q | string | Suchanfrage |
type | string | Ressourcentyp: all (Standard), projects, datasets |
sort | string | Sortierreihenfolge: stars (Standard), newest, oldest, name-asc, name-desc, count-desc, count-asc |
offset | int | Paginierungsversatz (Standard: 0). Die Ergebnisse geben 20 Elemente pro Seite zurück. |
Seitenleiste Daten
GET /api/explore/sidebar
Gibt kuratierte Inhalte für die Seitenleiste „Entdecken“ zurück.
Benutzer- und Einstellungs-APIs
Benutzer nach Benutzername suchen
GET /api/users
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
username | string | Benutzername zum Nachschlagen |
Benutzer folgen oder entfolgen
PATCH /api/users
Body:
{
"username": "target-user",
"followed": true
}
Verfügbarkeit des Benutzernamens prüfen
GET /api/username/check
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
username | string | Zu überprüfender Benutzername |
suggest | bool | Optional: true einen Vorschlag hinzufügen, falls angenommen |
Einstellungen
GET /api/settings
POST /api/settings
Benutzerprofileinstellungen abrufen oder aktualisieren (Anzeigename, Biografie, Links zu sozialen Netzwerken usw.).
Profil-Symbol
POST /api/settings/icon
DELETE /api/settings/icon
Profil-Avatar hochladen oder entfernen.
Einarbeitung
POST /api/onboarding
Vollständiger Onboarding-Prozess (Datenregion und Benutzername festlegen).
DSGVO-API
DSGVO-konforme Endpunkte für Datenexport und -löschung.
GDPR-Jobstatus abrufen
GET /api/gdpr
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
jobId | string | GDPR-Auftrags-ID zur Überprüfung |
Gibt den Auftragsstatus zurück. Bei abgeschlossenen Exportaufträgen enthält die Antwort einen downloadUrl.
Export starten oder Ablauf löschen
POST /api/gdpr
Body:
{
"action": "export"
}
{
"action": "delete",
"confirmationWord": "DELETE"
}
Optional für Team-Arbeitsbereiche:
{
"action": "delete",
"confirmationWord": "DELETE",
"teamUsername": "my-team"
}
Irreversible Aktion
Die Kontolöschung ist dauerhaft und kann nicht rückgängig gemacht werden. Alle Daten, Modelle und Bereitstellungen werden gelöscht.
Fehlercodes
| Code | HTTP-Status | Beschreibung |
|---|---|---|
UNAUTHORIZED | 401 | Ungültiger oder fehlender API-Schlüssel |
FORBIDDEN | 403 | Unzureichende Berechtigungen |
NOT_FOUND | 404 | Ressource nicht gefunden |
VALIDATION_ERROR | 400 | Ungültige Anfragedaten |
RATE_LIMITED | 429 | Zu viele Anfragen |
INTERNAL_ERROR | 500 | Serverfehler |
Python
Verwenden Sie für eine einfachere Integration das Ultralytics Python , das die Authentifizierung, Uploads und das Streaming von Echtzeitmetriken automatisch übernimmt.
Installation & Einrichtung
pip install ultralytics
Installation überprüfen:
yolo check
Anforderung an die Paketversion
Für die Plattformintegration ist ultralytics>= 8.4.14 erforderlich. Niedrigere Versionen funktionieren NICHT mit der Plattform.
Authentifizierung
yolo settings api_key=YOUR_API_KEY
export ULTRALYTICS_API_KEY=YOUR_API_KEY
from ultralytics import settings
settings.api_key = "YOUR_API_KEY"
Nutzung von Plattform-Datensätzen
Referenzdatensätze mit ul:// URIs:
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,
)
URI-Format:
| Muster | Beschreibung |
|---|---|
ul://username/datasets/slug | Datensatz |
ul://username/project-name | Projekt |
ul://username/project/model-name | Spezifisches Modell |
ul://ultralytics/yolo26/yolo26n | Offizielles Modell |
Auf die Plattform übertragen
Ergebnisse an ein Plattformprojekt senden:
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",
)
Was synchronisiert wird:
- Trainingsmetriken (Echtzeit)
- Gewichte des endgültigen Modells
- Validierungsdiagramme
- Konsolenausgabe
- Systemmetriken
API-Beispiele
Laden Sie ein Modell von der Plattform:
# Your own model
model = YOLO("ul://username/project/model-name")
# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")
Inferenz ausführen:
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
Exportmodell:
# 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)
Validierung:
metrics = model.val(data="ul://username/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")
Webhooks
Webhooks benachrichtigen Ihren Server über Plattformereignisse mittels HTTP-POST-Callbacks:
| Ereignis | Beschreibung |
|---|---|
training.started | Trainingsjob gestartet |
training.epoch | Epoche abgeschlossen |
training.completed | Training abgeschlossen |
training.failed | Training fehlgeschlagen |
export.completed | Export bereit |
Unternehmensfunktion
Benutzerdefinierte Webhook-Endpunkte sind in den Enterprise-Tarifen verfügbar. Trainings-Webhooks für das Python funktionieren automatisch in allen Tarifen.
FAQ
Wie paginiere ich große Ergebnisse?
Die meisten Endpunkte verwenden ein limit Parameter zur Steuerung der Anzahl der pro Anfrage zurückgegebenen Ergebnisse:
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"
Die Endpunkte „Activity“ und „Trash“ unterstützen ebenfalls ein page Parameter für seitenbasierte Paginierung:
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/activity?page=2&limit=20"
Der Endpunkt „Explore Search“ verwendet offset anstelle von pagemit einer festen Seitengröße von 20:
curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&sort=stars"
Kann ich die API ohne ein SDK nutzen?
Ja, alle Funktionen sind über REST verfügbar. Das Python ist ein praktischer Wrapper, der Funktionen wie Echtzeit-Metrik-Streaming und automatische Modell-Uploads hinzufügt.
Gibt es API-Client-Bibliotheken?
Derzeit verwenden Sie das Ultralytics Python-Paket oder stellen direkte HTTP-Anfragen. Offizielle Client-Bibliotheken für andere Sprachen sind geplant.
Wie gehe ich mit Ratenbegrenzungen um?
Verwenden Sie den Retry-After Header aus der 429-Antwort, um die richtige Zeit zu warten:
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")
Wie finde ich meine Modell- oder Datensatz-ID?
Ressourcen-IDs werden zurückgegeben, wenn Sie Ressourcen über die API erstellen. Sie finden sie auch in der Plattform-URL:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project model
Verwenden Sie die Listenendpunkte, um nach Namen zu suchen oder nach Projekten zu filtern.