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
Interaktive API-Dokumentation
Entdecken Sie die vollständige interaktive API-Referenz in der API-DokumentationUltralytics .
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, Labels, Export, Versionen, Klonen |
| Projekte | Schulungsarbeitsplätze | CRUD, Klonen, Symbol |
| Modelle | Geschulte Kontrollpunkte | CRUD, Vorhersagen, Herunterladen, Klonen, Export |
| Bereitstellungen | Dedizierte Inferenz-Endpunkte | CRUD, Start/Stopp, Metriken, Protokolle, Zustand |
| Exporte | Formatkonvertierungsaufträge | Erstellen, Status, Herunterladen |
| Training | Cloud-GPU-Trainingsaufträge | Start, Status, Abbrechen |
| Abrechnung | Guthaben und Abonnements | Guthaben, Aufladen, Zahlungsmethoden |
| Teams | Zusammenarbeit im Arbeitsbereich | Mitglieder, Einladungen, Rollen |
Authentifizierung
Ressourcen-APIs wie Datensätze, Projekte, Modelle, Trainings, Exporte und Vorhersagen verwenden die Authentifizierung per API-Schlüssel. Öffentliche Endpunkte (die öffentliche Datensätze, Projekte und Modelle auflisten) unterstützen den anonymen Lesezugriff ohne Schlüssel. Kontobezogene Routen – darunter Aktivitäten, Einstellungen, Teams, Abrechnung und DSGVO-Abläufe – erfordern derzeit eine authentifizierte Browsersitzung und sind nicht über einen API-Schlüssel verfügbar.
API-Schlüssel abrufen
- Gehen Sie zu
Settings>API Keys - Klicken Sie
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 YOUR_API_KEY
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 YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
import requests
headers = {"Authorization": "Bearer YOUR_API_KEY"}
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 YOUR_API_KEY" },
});
const data = await response.json();
Basis-URL
Alle API-Endpunkte verwenden:
https://platform.ultralytics.com/api
Ratenbegrenzungen
Die API wendet pro API-Schlüssel Ratenbegrenzungen an (Sliding-Window-Verfahren, auf Upstash Redis basierend), um vor Missbrauch zu schützen und gleichzeitig die legitime Nutzung uneingeschränkt zu ermöglichen. Anonymer Datenverkehr wird zusätzlich durch die Missbrauchsschutzmaßnahmen auf Plattformebene von Vercel geschützt.
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/Min. | Alle unten nicht aufgeführten Endpunkte (list, get, create, update, delete) |
| Training | 10 Anfragen/Min. | Start von Cloud-Schulungsjobs (POST /api/training/start) |
| Hochladen | 10 Anfragen/Min. | Datei-Uploads, signierte URLs und Datensatz-Erfassung |
| Vorhersagen | 20 Anfragen/Min. | Gemeinsame Modellinferenz (POST /api/models/{id}/predict) |
| Export | 20 Anfragen/Min. | Export von Modellformaten (POST /api/exports), NDJSON-Exporte von Datensätzen und Versionserstellung |
| Herunterladen | 30 Anfragen/Min. | Modellgewicht-Datei-Downloads (GET /api/models/{id}/download) |
| Dediziert | Unbegrenzt | Dedizierte Endpunkte — Ihr eigener Dienst, keine API-Limits |
Jede Kategorie hat einen unabhängigen Zähler pro API-Schlüssel. Zum Beispiel wirken sich 20 predict-Anfragen nicht auf Ihr Standardkontingent von 100 Anfragen/Min aus.
Dedizierte Endpunkte (Unbegrenzt)
Dedizierte Endpunkte sind nicht den API-Schlüssel-Ratenbeschränkungen unterworfen. Wenn Sie ein Modell auf einem dedizierten Endpunkt bereitstellen, werden Anfragen an diese Endpunkt-URL (z. B., https://predict-abc123.run.app/predict) werden direkt an Ihren dedizierten Dienst weitergeleitet, ohne dass die Plattform eine Ratenbegrenzung vornimmt. Da Sie für die Rechenleistung bezahlen, profitieren Sie vom Durchsatz Ihrer dedizierten Dienstkonfiguration und sind nicht an die Grenzen der gemeinsam genutzten API gebunden.
Handhabung von Ratenbeschränkungen
Wenn Sie eine 429 Statuscode, warten auf Retry-After (oder bis X-RateLimit-Reset) bevor Sie es erneut versuchen. 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": "Dataset not found"
}
| 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
Beschriftete Bilddatensätze für das Training von YOLO-Modellen erstellen, durchsuchen und verwalten. Siehe Datensatz-Dokumentation.
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 YOUR_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}
Body (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. Erfordert eine aktive Browser-Sitzung auf der Plattform – nicht über einen API-Schlüssel verfügbar.
Body (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 den neuesten Datenexport zurück.
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
v | ganze Zahl | Versionsnummer (1-indiziert). Wenn nicht angegeben, wird der neueste (nicht zwischengespeicherte) Export zurückgegeben. |
Antwort:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}
Datensatzversion erstellen
POST /api/datasets/{datasetId}/export
Erstellen Sie einen neuen nummerierten Versions-Snapshot des Datensatzes. Nur für den Eigentümer. Die Version erfasst die aktuelle Bildanzahl, Klassenanzahl, Annotationsanzahl und Split-Verteilung und generiert und speichert dann einen unveränderlichen NDJSON-Export.
Anfrage-Textkörper:
{
"description": "Added 500 training images"
}
Alle Felder sind optional. Die description Das Feld ist eine vom Benutzer angegebene Bezeichnung für die Version.
Antwort:
{
"version": 3,
"downloadUrl": "https://storage.example.com/v3.ndjson?signed=..."
}
Update-Version Beschreibung
PATCH /api/datasets/{datasetId}/export
Die Beschreibung einer bestehenden Version aktualisieren. Nur für Eigentümer.
Anfrage-Textkörper:
{
"version": 2,
"description": "Fixed mislabeled classes"
}
Antwort:
{
"ok": 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
}
Automatische Datensatz-Annotation
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 Job zur Datensatzaufnahme, um hochgeladene ZIP- oder TAR-Dateien zu verarbeiten, einschließlich .tar.gz und .tgz, die Bilder und Labels enthalten.
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]
Datensatzbilder
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, height-asc, height-desc, width-asc, width-desc, size-asc, size-desc, labels-asc, labels-desc (bei Bilddatensätzen mit mehr als 100.000 Bildern teilweise deaktiviert) |
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] },
{ "classId": 1, "segments": [0.1, 0.2, 0.3, 0.2, 0.2, 0.4] }
]
}
Koordinatenformat
Für die Koordinaten der Labels werden YOLO Werte zwischen 0 und 1 verwendet. Für die Begrenzungsrahmen werden [x_center, y_center, width, height].
Segmentierungsbezeichnungen verwenden segments, eine abgeflachte Liste von Polygon-Scheitelpunkten [x1, y1, x2, y2, ...].
Massenbildoperationen
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
Ordnen Sie Ihre Modelle in Projekten. Jedes Modell gehört zu einem Projekt. Siehe Dokumentation zu Projekten.
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 YOUR_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
Kloniert ein öffentliches Projekt (mit allen darin enthaltenen Modellen) in Ihren Arbeitsbereich. Erfordert eine aktive Browser-Sitzung auf der Plattform – nicht über einen API-Schlüssel verfügbar.
Projekt-Symbol
Projekt-Symbol hochladen (mehrteiliges Formular mit Bilddatei):
POST /api/projects/{projectId}/icon
Entfernen Sie das Projektsymbol:
DELETE /api/projects/{projectId}/icon
Für beides ist eine aktive Browser-Sitzung auf der Plattform erforderlich – dies ist über einen API-Schlüssel nicht möglich.
Modelle API
Verwalten Sie trainierte YOLO – Metriken anzeigen, Gewichte herunterladen, Inferenz ausführen und in andere Formate exportieren. Siehe Dokumentation zu Modellen.
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 | Kommagetrennte 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}
Modell-Dateien herunterladen
GET /api/models/{modelId}/files
Gibt signierte Download-URLs für Modelldateien zurück.
Modell klonen
POST /api/models/{modelId}/clone
Kopiere ein öffentliches Modell in eines deiner Projekte. Dazu ist eine aktive Browser-Sitzung auf der Plattform erforderlich – nicht über einen API-Schlüssel verfügbar.
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 YOUR_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
Nur für die Browsersitzung
Dieser Weg wird von der Registerkarte „Predict“ in der App genutzt, um kurzlebige Inferenz-Token für direkte Aufrufe vom Browser zum Predict-Dienst auszustellen (geringere Latenz, kein API-Proxy). Dies setzt eine aktive Browsersitzung auf der Plattform voraus und ist nicht über einen API-Schlüssel verfügbar. Für die programmatische Inferenz rufen Sie POST /api/models/{modelId}/predict mit Ihrem API-Schlüssel.
Aufwärmmodell
POST /api/models/{modelId}/predict/warmup
Nur für die Browsersitzung
Die Warmup-Route wird von der Registerkarte „Predict“ verwendet, um die Gewichte eines Modells vor der ersten Inferenz des Benutzers im Predict-Dienst vorzuladen. Dazu ist eine aktive Browser-Sitzung auf der Plattform erforderlich; die Funktion ist nicht über einen API-Schlüssel verfügbar.
Training API
Starten Sie YOLO auf Cloud-GPUs (23 GPU von RTX 2000 Ada bis B200) und verfolgen Sie den Fortschritt in Echtzeit. Weitere Informationen finden Sie in der Dokumentation zum Cloud-Training.
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 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/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": "yolo26n.pt",
"data": "ul://username/datasets/my-dataset",
"epochs": 100,
"imgsz": 640,
"batch": 16,
},
},
)
GPU
Verfügbare GPU-Typen umfassen rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, und 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. Auf öffentliche Projekte kann anonym zugegriffen werden; für private Projekte ist eine aktive Browser-Sitzung auf der Plattform erforderlich (diese Route akzeptiert keine Authentifizierung per API-Schlüssel).
Training abbrechen
DELETE /api/models/{modelId}/training
Beendet die laufende Recheninstanz und markiert den Auftrag als abgebrochen. Erfordert eine aktive Plattform-Browser-Sitzung – nicht über einen API-Schlüssel verfügbar.
Bereitstellungen API
Stellen Sie Modelle auf dedizierten Inferenz-Endpunkten bereit, einschließlich Zustandsprüfungen und Überwachung. Bei neuen Bereitstellungen wird standardmäßig „Scale-to-Zero“ verwendet, und die API akzeptiert einen optionalen resources Objekt. Siehe Dokumentation zu Endpunkten.
Unterstützung von API-Schlüsseln nach Route
Nur GET /api/deployments, POST /api/deployments, GET /api/deployments/{deploymentId}und DELETE /api/deployments/{deploymentId} die Authentifizierung per API-Schlüssel unterstützen. Die predict, health, logs, metrics, startund stop Unterrouten erfordern eine aktive Browser-Sitzung auf der Plattform – sie dienen als praktische Proxys für die Benutzeroberfläche der App. Für die programmatische Abfrage rufen Sie die Endpunkt-URL der Bereitstellung auf (z. B. https://predict-abc123.run.app/predict) direkt mit Ihrem API-Schlüssel. Dedizierte Endpunkte sind nicht durch die Übertragungsrate begrenzt.
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 | Bereitstellungsname |
region | string | Ja | Bereitstellungsregion |
resources | Objekt | Nein | Ressourcenkonfiguration (cpu, memoryGi, minInstances, maxInstances) |
Erstellt einen dedizierten Inferenz-Endpunkt in der angegebenen Region. Der Endpunkt ist über eine eindeutige URL global zugänglich.
Standardressourcen
Der Bereitstellungsdialog übermittelt derzeit feste Standardwerte von cpu=1, memoryGi=2, minInstances=0und maxInstances=1. Die API-Route akzeptiert einen resources Objekt, aber Planbegrenzung minInstances bei 0 und maxInstances bei 1.
Regionsauswahl
Wählen Sie eine Region in der Nähe Ihrer Benutzer für die geringste Latenz. Die Plattform-Benutzeroberfläche 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 | Kommagetrennter Filter: DEBUG, INFO, WARNING, ERROR, CRITICAL |
limit | int | Anzahl der Einträge (Standard: 50, maximal: 200) |
pageToken | string | Paginierungstoken aus vorheriger Antwort |
Überwachungs-API
Nur für die Browsersitzung
GET /api/monitoring ist eine Route, die ausschließlich über die Benutzeroberfläche zugänglich ist und eine aktive Browsersitzung auf der Plattform erfordert. Eine Authentifizierung per API-Schlüssel ist nicht möglich. Rufen Sie einzelne Bereitstellungsmetriken über die Routen für einzelne Bereitstellungen ab (die ebenfalls nur über eine Browsersitzung zugänglich sind) oder verwenden Sie Exporte aus der Cloud-Überwachung auf dem bereitgestellten Cloud Run-Dienst für den programmgesteuerten Zugriff.
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 wie ONNX, TensorRT, CoreML und TFLite für die Edge-Bereitstellung konvertieren. Siehe Bereitstellungsdokumentation.
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, dynamic, etc.) |
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/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-Hardware |
| 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 Coral-Geräte |
| TF.js | tfjs | Browser-Inferenz |
| MNN | mnn | Alibaba mobile Inferenz |
| RKNN | rknn | Rockchip NPU |
| IMX | imx | Sony IMX500 Sensor |
| Axelera | axelera | Axelera AI-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
Zeige einen Feed mit den jüngsten Aktivitäten in deinem Konto an – Trainingsläufe, Uploads und mehr. Siehe Dokumentation zu „Aktivitäten“.
Nur für die Browsersitzung
Die Aktivitätsrouten basieren auf browserbasierten Authentifizierungsanfragen aus der Benutzeroberfläche der Plattform. Sie werden nicht als öffentliche API bereitgestellt, akzeptieren keine API-Schlüssel-Authentifizierung, und die unten aufgeführten Routenstrukturen dienen lediglich als Referenz. Verwenden Sie den Aktivitäts-Feed in der Benutzeroberfläche der Plattform, um Ereignisse anzuzeigen, zu markieren oder zu archivieren.
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ß- und 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
Gelöschte Elemente anzeigen und wiederherstellen. Nach 30 Tagen werden die Elemente endgültig gelöscht. Siehe Dokumentation zum Papierkorb.
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.
Authentifizierung
DELETE /api/trash/empty erfordert eine authentifizierte Browsersitzung und ist nicht über einen API-Schlüssel verfügbar. Verwenden Sie die Papierkorb leeren stattdessen die Schaltfläche in der Benutzeroberfläche.
Abrechnungs-API
Überprüfen Sie Ihr Guthaben, kaufen Sie Guthaben, sehen Sie den Transaktionsverlauf ein und konfigurieren Sie die automatische Aufladung. Siehe Abrechnungsdokumentation.
Währungseinheiten
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-$1000) |
owner | string | Nein | Team-Benutzername für Arbeitsbereich-Aufladungen (erfordert Administratorrolle) |
Erstellt eine Checkout-Sitzung für den Kreditkauf.
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) |
Abonnement kündigen oder fortsetzen
DELETE /api/billing/subscription-checkout
Kündigt standardmäßig ein Pro-Abonnement zum Ende des Abrechnungszeitraums. Senden {"resume": true} um eine bereits geplante Stornierung vor Ablauf des Abrechnungszeitraums wieder in Kraft zu setzen.
Body:
{
"resume": true
}
Automatische Aufladung
Guthaben automatisch hinzufügen, wenn der Saldo 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 Intent 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
Überprüfen Sie Ihre Speichernutzungsaufschlüsselung nach Kategorie (Datensätze, Modelle, Exporte) und sehen Sie Ihre größten Elemente.
Nur für die Browsersitzung
Für Speicherpfade ist eine aktive Browser-Sitzung auf der Plattform erforderlich; sie sind nicht über einen API-Schlüssel zugänglich. Interaktive Aufschlüsselungen finden Sie auf der Seite „Einstellungen > Profil“ in der Benutzeroberfläche.
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"
}
]
}
}
API hochladen
Laden Sie Dateien mithilfe signierter URLs direkt in den Cloud-Speicher hoch, um schnelle und zuverlässige Übertragungen zu gewährleisten. Der Vorgang erfolgt in zwei Schritten: Rufen Sie zunächst eine signierte URL ab und laden Sie dann die Datei hoch. Weitere Informationen finden Sie in der Dokumentation zu „Data“.
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 | Asset-Typ: 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"
}
Upload abschließen
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
Verwalten Sie Ihre API-Schlüssel für den programmgesteuerten Zugriff. Siehe Dokumentation zu API-Schlüsseln.
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 Widerruf |
Beispiel:
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"
Teams & Mitglieder API
Team-Workspaces erstellen, Mitglieder einladen und Rollen für die Zusammenarbeit verwalten. Siehe Teams-Dokumentation.
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 | Mitglieder, Abrechnung und alle Ressourcen verwalten (nur vom Teambesitzer zuweisbar) |
Das Team owner ist der Ersteller und kann nicht eingeladen werden. Die Eigentümerschaft wird separat übertragen über POST /api/members/transfer-ownership. Siehe Teams für alle Details zur Stelle.
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
Durchsuchen und entdecken Sie öffentliche Datensätze und Projekte, die von der Community geteilt werden. Siehe Dokumentation zu „Explore“.
Ö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
Verwalten Sie Ihr Profil, Ihre API-Schlüssel, Ihre Speichernutzung und Ihre Datenschutzeinstellungen. Siehe Dokumentation zu den Einstellungen.
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
Onboarding-Prozess abschließen (Datenregion, Benutzername festlegen).
DSGVO-API
Fordern Sie einen Export all Ihrer Daten an oder löschen Sie Ihr Konto endgültig. Siehe Dokumentation zu den Einstellungen.
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.35 erforderlich. Ältere 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("yolo26n.pt")
# Train on your Platform dataset
model.train(
data="ul://your-username/datasets/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("yolo26n.pt")
# Results automatically sync to Platform
model.train(
data="coco8.yaml",
epochs=100,
project="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/datasets/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")
Webhooks
Die Plattform nutzt interne Webhooks, um Trainingsdaten in Echtzeit aus dem ultralytics Python (auf Cloud-GPUs oder Remote-/lokalen Rechnern) zurück an die Plattform – Verlust pro Epoch, mAP, Systemstatistiken und Abschlussstatus. Diese Webhooks werden über HMAC authentifiziert webhookSecret werden pro Trainingsauftrag bereitgestellt und sind nicht für die Nutzung durch Benutzeranwendungen vorgesehen.
Wir stehen Ihnen zur Seite
Alle Tarife: Trainingsfortschritt über die ultralytics Das SDK (Echtzeit-Metriken, Benachrichtigungen bei Abschluss) funktioniert automatisch bei jedem Tarif – einfach einrichten project=username/my-project name=my-run während des Trainings und wenn das SDK Ereignisse an die Plattform übermittelt. Eine Registrierung von Webhooks auf Benutzerseite ist nicht erforderlich.
Webhook-Abonnements für Benutzer (POST-Callbacks an eine von Ihnen verwaltete URL) sind in der Roadmap für Enterprise vorgesehen und derzeit noch nicht verfügbar. In der Zwischenzeit können Sie GET /api/models/{modelId}/training den Status abrufen oder die Aktivitätsübersicht in der Benutzeroberfläche.
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 YOUR_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 YOUR_API_KEY" \
"https://platform.ultralytics.com/api/activity?page=2&limit=20"
Der Endpunkt „Explore Search“ verwendet offset anstelle von page, mit 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 das Streaming von Metriken in Echtzeit und automatische Modell-Uploads bietet. Unter platform.ultralytics.com/api/docs können Sie außerdem alle Endpunkte interaktiv erkunden.
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.