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

# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsErkunde die vollständige interaktive API-Referenz in der Ultralytics Platform API-Dokumentation.
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 Operationen |
|---|---|---|
| Datensätze | Sammlungen markierter Bilder | CRUD, Bilder, Labels, Export, Versionen, Klonen |
| Projekte | Trainings-Arbeitsbereiche | CRUD, Klonen, Icon |
| Modelle | Trainierte Checkpoints | CRUD, Vorhersage, Download, Klonen, Export |
| Deployments | Dedizierte Inference-Endpoints | CRUD, Start/Stopp, Metriken, Logs, Status |
| Exporte | Format-Konvertierungsaufträge | Erstellen, Status, Download |
| Training | Cloud-GPU-Trainingsaufträge | Starten, Status, Abbrechen |
| Abrechnung | Guthaben und Abonnements | Kontostand, Aufladen, Zahlungsmethoden |
| Teams | Zusammenarbeit im Arbeitsbereich | Mitglieder, Einladungen, Rollen |
Authentifizierung
Ressourcen-APIs wie Datensätze, Projekte, Modelle, Training, Exporte und Vorhersagen verwenden eine API-Key-Authentifizierung. Öffentliche Endpoints (Auflistung öffentlicher Datensätze, Projekte und Modelle) unterstützen anonymen Lesezugriff ohne Key. Kontoorientierte Routen – einschließlich Aktivität, Einstellungen, Teams, Abrechnung und DSGVO-Abläufen – erfordern derzeit eine authentifizierte Browsersitzung und sind nicht über API-Key verfügbar.
API-Key abrufen
- Gehe zu
Settings>API Keys - Klicke auf
Create Key - Kopiere den generierten Key
Siehe API-Keys für detaillierte Anweisungen.
Autorisierungs-Header
Füge deinen API-Key in alle Anfragen ein:
Authorization: Bearer YOUR_API_KEYAPI-Keys verwenden das Format ul_ gefolgt von 40 Hexadezimalzeichen. Halte deinen Key geheim – committe ihn niemals in eine Versionsverwaltung und teile ihn nicht öffentlich.
Beispiel
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsBasis-URL
Alle API-Endpoints verwenden:
https://platform.ultralytics.com/api
Ratenbegrenzungen
Die API erzwingt Ratenbegrenzungen pro API-Key (Sliding-Window, unterstützt durch Upstash Redis), um Missbrauch zu verhindern, während legitime Nutzung uneingeschränkt bleibt. Anonymer Datenverkehr wird zusätzlich durch die Missbrauchskontrollen auf Plattformebene von Vercel geschützt.
Bei Drosselung gibt die API 429 mit Retry-Metadaten zurück:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000ZLimits pro API-Key
Ratenbegrenzungen werden automatisch basierend auf dem aufgerufenen Endpoint angewendet. Ressourcenintensive Operationen haben strengere Limits, um Missbrauch zu verhindern, während Standard-CRUD-Operationen sich ein großzügiges Standardlimit teilen:
| Endpoint | Limit | Gilt für |
|---|---|---|
| Standard | 100 Anfragen/Min | Alle unten nicht aufgeführten Endpoints (auflisten, abrufen, erstellen, aktualisieren, löschen) |
| Training | 10 Anfragen/Min | Starten von Cloud-Trainingsaufträgen (POST /api/training/start) |
| Hochladen | 10 Anfragen/Min | Datei-Uploads, signierte URLs und Datensatz-Ingestion |
| Vorhersage | 20 Anfragen/Min | Geteilte Modell-Inference (POST /api/models/{id}/predict) |
| Exportieren | 20 Anfragen/Min | Modellformat-Exporte (POST /api/exports), Datensatz-NDJSON-Exporte und Versionserstellung |
| Download | 30 Anfragen/Min | Download von Modellgewichts-Dateien (GET /api/models/{id}/download) |
| Dediziert | Unbegrenzt | Dedizierte Endpoints — dein eigener Dienst, keine API-Limits |
Jede Kategorie hat einen unabhängigen Zähler pro API-Key. Wenn du beispielsweise 20 Predict-Anfragen stellst, beeinflusst dies nicht dein Standard-Kontingent von 100 Anfragen/Min.
Dedizierte Endpoints (Unbegrenzt)
Dedizierte Endpoints unterliegen keinen Ratenbegrenzungen durch API-Keys. Wenn du ein Modell auf einem dedizierten Endpoint bereitstellst, gehen Anfragen an diese Endpoint-URL (z. B. https://predict-abc123.run.app/predict) direkt an deinen dedizierten Dienst ohne Ratenbegrenzung durch die Plattform. Da du für die Rechenleistung bezahlst, erhältst du den Durchsatz deiner dedizierten Dienstkonfiguration anstelle der geteilten API-Limits.
Wenn du einen 429 Statuscode erhältst, warte auf Retry-After (oder bis X-RateLimit-Reset), bevor du es erneut versuchst. Siehe das Ratenbegrenzungs-FAQ für eine Implementierung mit exponentiellem Backoff.
Antwortformat
Erfolgsantworten
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 | Ratenbegrenzung überschritten |
500 | Serverfehler |
Datensätze-API
Erstelle, durchsuche und verwalte markierte Bilddatensätze für das Training von YOLO-Modellen. Siehe Datensätze-Dokumentation.
Datensätze auflisten
GET /api/datasetsAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
username | string | Nach Benutzername filtern |
slug | string | Einzelnes Dataset über den Slug abrufen |
limit | int | Elemente pro Seite (Standard: 20, Max: 500) |
owner | string | Benutzername des Workspace-Besitzers |
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=10"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"
}Dataset abrufen
GET /api/datasets/{datasetId}Gibt die vollständigen Dataset-Details zurück, einschließlich Metadaten, Klassennamen und Split-Anzahlen.
Dataset erstellen
POST /api/datasetsBody:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"visibility": "private",
"classNames": ["person", "car"]
}Gültige task-Werte: detect, segment, classify, pose, obb.
Dataset aktualisieren
PATCH /api/datasets/{datasetId}Body (partielle Aktualisierung):
{
"name": "Updated Name",
"description": "New description",
"visibility": "public"
}Dataset löschen
DELETE /api/datasets/{datasetId}Löscht das Dataset vorläufig (wird in den Papierkorb verschoben und kann für 30 Tage wiederhergestellt werden).
Dataset klonen
POST /api/datasets/{datasetId}/cloneErstellt eine Kopie des Datasets mit allen Bildern und Labels. Nur öffentliche Datasets können geklont werden. Erfordert eine aktive Plattform-Browsersitzung – nicht über API-Key verfügbar.
Body (alle Felder optional):
{
"name": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"owner": "team-username"
}Dataset exportieren
GET /api/datasets/{datasetId}/exportGibt eine JSON-Antwort mit einer signierten Download-URL für den neuesten Dataset-Export zurück.
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
v | integer | Versionsnummer (1-basiert). Falls weggelassen, wird der neueste (nicht gecachte) Export zurückgegeben. |
Antwort:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}Dataset-Version erstellen
POST /api/datasets/{datasetId}/exportErstelle einen neuen nummerierten Versions-Snapshot des Datasets. Nur für den Besitzer. Die Version erfasst die aktuelle Anzahl der Bilder, Klassen, Annotationen und die Split-Verteilung und generiert und speichert dann einen unveränderlichen NDJSON-Export.
Request Body:
{
"description": "Added 500 training images"
}Alle Felder sind optional. Das Feld description ist ein vom Benutzer bereitgestelltes Label für die Version.
Antwort:
{
"version": 3,
"downloadUrl": "https://storage.example.com/v3.ndjson?signed=..."
}Versionsbeschreibung aktualisieren
PATCH /api/datasets/{datasetId}/exportAktualisiere die Beschreibung einer bestehenden Version. Nur für den Besitzer.
Request Body:
{
"version": 2,
"description": "Fixed mislabeled classes"
}Antwort:
{
"ok": true
}Klassenstatistik abrufen
GET /api/datasets/{datasetId}/class-statsGibt die Klassenverteilung, die Standort-Heatmap und Dimensionsstatistiken zurück. Ergebnisse werden für bis zu 5 Minuten gecacht.
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 abrufen, die mit dem Dataset trainiert wurden
GET /api/datasets/{datasetId}/modelsGibt Modelle zurück, die mit diesem Dataset 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
}Dataset automatisch annotieren
POST /api/datasets/{datasetId}/predictFühre YOLO-Inferenz auf Dataset-Bildern aus, 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 | Hash des zu annotierenden Bildes |
modelId | string | Nein | Modell-ID für die Inferenz |
confidence | float | Nein | Konfidenz-Schwellenwert (Standard: 0.25) |
iou | float | Nein | IoU-Schwellenwert (Standard: 0.45) |
Dataset-Ingest
POST /api/datasets/ingestErstelle einen Dataset-Ingest-Job, um hochgeladene ZIP- oder TAR-Dateien, einschließlich .tar.gz und .tgz, die Bilder und Labels enthalten, zu verarbeiten.
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]Dataset-Bilder
Bilder auflisten
GET /api/datasets/{datasetId}/imagesAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
split | string | Nach Split filtern: train, val, test |
offset | int | Paginierungs-Offset (Standard: 0) |
limit | int | Elemente pro Seite (Standard: 50, Max: 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 (einige deaktiviert für Datasets mit >100k Bildern) |
hasLabel | string | Nach Label-Status filtern (true oder false) |
hasError | string | Nach Fehlerstatus filtern (true oder false) |
search | string | Nach Dateiname oder Bild-Hash suchen |
includeThumbnails | string | Signierte Thumbnail-URLs einbeziehen (Standard: true) |
includeImageUrls | string | Signierte vollständige Bild-URLs einbeziehen (Standard: false) |
Signierte Bild-URLs abrufen
POST /api/datasets/{datasetId}/images/urlsRufe signierte URLs für eine Charge von Bild-Hashes ab (zur Anzeige im Browser).
Bild löschen
DELETE /api/datasets/{datasetId}/images/{hash}Bild-Labels abrufen
GET /api/datasets/{datasetId}/images/{hash}/labelsGibt Annotationen und Klassennamen für ein bestimmtes Bild zurück.
Bild-Labels aktualisieren
PUT /api/datasets/{datasetId}/images/{hash}/labelsBody:
{
"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] }
]
}Label-Koordinaten verwenden YOLO-normalisierte Werte zwischen 0 und 1. Bounding Boxes verwenden [x_center, y_center, width, height].
Segmentierungs-Labels verwenden segments, eine flache Liste von Polygon-Eckpunkten [x1, y1, x2, y2, ...].
Massen-Bildoperationen
Bilder zwischen Splits (train/val/test) innerhalb eines Datasets verschieben:
PATCH /api/datasets/{datasetId}/images/bulkBilder massenhaft löschen:
DELETE /api/datasets/{datasetId}/images/bulkProjects API
Organisiere deine Modelle in Projekten. Jedes Modell gehört zu einem Projekt. Siehe Projekte-Dokumentation.
Projekte auflisten
GET /api/projectsAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
username | string | Nach Benutzername filtern |
limit | int | Elemente pro Seite |
owner | string | Benutzername des Workspace-Besitzers |
Projekt abrufen
GET /api/projects/{projectId}Projekt erstellen
POST /api/projectscurl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-project", "slug": "my-project", "description": "Detection experiments"}' \
https://platform.ultralytics.com/api/projectsProjekt aktualisieren
PATCH /api/projects/{projectId}Projekt löschen
DELETE /api/projects/{projectId}Löscht das Projekt vorläufig (wird in den Papierkorb verschoben).
Projekt klonen
POST /api/projects/{projectId}/cloneKlont ein öffentliches Projekt (mit all seinen Modellen) in deinen Workspace. Erfordert eine aktive Plattform-Browsersitzung – nicht über API-Key verfügbar.
Projekt-Icon
Lade ein Projekt-Icon hoch (Multipart-Formular mit Bilddatei):
POST /api/projects/{projectId}/iconEntferne das Projekt-Icon:
DELETE /api/projects/{projectId}/iconBeide erfordern eine aktive Plattform-Browsersitzung – nicht über API-Key verfügbar.
Models API
Verwalte trainierte YOLO Modelle – sehe Metriken ein, lade Gewichte herunter, führe Inferenz aus und exportiere in andere Formate. Siehe Models documentation.
Modelle auflisten
GET /api/modelsAbfrageparameter:
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
projectId | string | Ja | Projekt-ID (erforderlich) |
fields | string | Nein | Feld-Satz: summary, charts |
ids | string | Nein | Durch Kommas getrennte Modell-IDs |
limit | int | Nein | Maximale Anzahl an Ergebnissen (Standard 20, max. 100) |
Abgeschlossene Modelle auflisten
GET /api/models/completedGibt Modelle zurück, deren Training beendet ist (zur Verwendung in Modellselektoren und für Deployments).
Modell abrufen
GET /api/models/{modelId}Modell erstellen
POST /api/modelsJSON-Body:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
projectId | string | Ja | Ziel-Projekt-ID |
slug | string | Nein | URL-Slug (kleingeschriebene alphanumerische Zeichen/Bindestriche) |
name | string | Nein | Anzeigename (max. 100 Zeichen) |
description | string | Nein | Modellbeschreibung (max. 1000 Zeichen) |
task | string | Nein | Aufgabentyp (detect, segment, pose, obb, classify) |
Modell-Uploads von .pt-Dateien werden separat behandelt. Nutze die Plattform-UI, um Modelldateien per Drag-and-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}/filesGibt signierte Download-URLs für Modelldateien zurück.
Modell klonen
POST /api/models/{modelId}/cloneKlone ein öffentliches Modell in eines deiner Projekte. Erfordert eine aktive Plattform-Browser-Sitzung – nicht über API-Key verfügbar.
Body:
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
targetProjectSlug | string | Ja | Ziel-Projekt-Slug |
modelName | string | Nein | Name für das geklonte Modell |
description | string | Nein | Modellbeschreibung |
owner | string | Nein | Team-Benutzername (für Workspace-Cloning) |
Download verfolgen
POST /api/models/{modelId}/track-downloadAnalysedaten für Modelldownloads verfolgen.
Inferenz ausführen
POST /api/models/{modelId}/predictMultipart-Form:
| Feld | Typ | Beschreibung |
|---|---|---|
file | Datei | Bilddatei (JPEG, PNG, WebP) |
conf | float | Konfidenz-Schwellenwert (Standard: 0.25) |
iou | float | IoU-Schwellenwert (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/predictAntwort:
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
],
"metadata": {
"imageCount": 1
}
}Vorhersage-Token abrufen
POST /api/models/{modelId}/predict/tokenDiese Route wird vom In-App Predict-Tab verwendet, um kurzlebige Inferenz-Token für direkte Browser → predict-service Aufrufe (geringere Latenz, kein API-Proxy) auszugeben. Sie erfordert eine aktive Plattform-Browser-Sitzung und ist nicht über API-Key verfügbar. Für programmatische Inferenz rufe POST /api/models/{modelId}/predict mit deinem API-Key auf.
Modell aufwärmen
POST /api/models/{modelId}/predict/warmupDie Warmup-Route wird vom Predict-Tab verwendet, um die Gewichte eines Modells vor der ersten Inferenz des Nutzers auf dem Predict-Service vorzuladen. Sie erfordert eine aktive Plattform-Browser-Sitzung und ist nicht über API-Key verfügbar.
Training-API
Starte das YOLO-Training auf Cloud-GPUs (24 GPU-Typen von RTX 2000 Ada bis B300) und überwache den Fortschritt in Echtzeit. Siehe Cloud Training documentation.
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/startcurl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"modelId": "MODEL_ID",
"projectId": "PROJECT_ID",
"gpuType": "rtx-4090",
"trainArgs": {
"model": "yolo26n.pt",
"data": "ul://username/datasets/my-dataset",
"epochs": 100,
"imgsz": 640,
"batch": 16
}
}' \
https://platform.ultralytics.com/api/training/startZu den verfügbaren GPU-Typen gehören rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, b300 und andere. Siehe Cloud Training für die vollständige Liste mit Preisen.
Trainingsstatus abrufen
GET /api/models/{modelId}/trainingGibt den aktuellen Status, die Metriken und den Fortschritt eines Trainingsjobs für ein Modell zurück. Öffentliche Projekte sind anonym zugänglich; private Projekte erfordern eine aktive Plattform-Browser-Sitzung (diese Route akzeptiert keine API-Key-Authentifizierung).
Training abbrechen
DELETE /api/models/{modelId}/trainingBeendet die laufende Recheninstanz und markiert den Job als abgebrochen. Erfordert eine aktive Plattform-Browser-Sitzung – nicht über API-Key verfügbar.
Deployment-API
Deploye Modelle auf dedizierte Inferenz-Endpunkte mit Gesundheitschecks und Überwachung. Neue Deployments nutzen standardmäßig Scale-to-Zero, und die API akzeptiert ein optionales resources Objekt. Siehe Endpoints documentation.
Nur GET /api/deployments, POST /api/deployments, GET /api/deployments/{deploymentId} und DELETE /api/deployments/{deploymentId} unterstützen API-Key-Authentifizierung. Die Sub-Routen predict, health, logs, metrics, start und stop erfordern eine aktive Plattform-Browser-Sitzung – sie sind Convenience-Proxys für die In-App-UI. Für programmatische Inferenz rufe die Endpunkt-URL des Deployments (z. B. https://predict-abc123.run.app/predict) direkt mit deinem API-Key auf. Dedicated endpoints sind nicht ratenbegrenzt.
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]Deployments auflisten
GET /api/deploymentsAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
modelId | string | Nach Modell filtern |
status | string | Nach Status filtern |
limit | int | Maximale Anzahl an Ergebnissen (Standard: 20, max: 100) |
owner | string | Benutzername des Workspace-Besitzers |
Deployment erstellen
POST /api/deploymentsBody:
{
"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 für Deployment |
name | string | Ja | Deployment-Name |
region | string | Ja | Deployment-Region |
resources | Objekt | Nein | Ressourcenkonfiguration (cpu, memoryGi, minInstances, maxInstances) |
Erstellt einen dedizierten Inferenz-Endpunkt in der angegebenen Region. Der Endpunkt ist global über eine eindeutige URL zugänglich.
Der Deployment-Dialog übermittelt derzeit feste Standardwerte von cpu=1, memoryGi=2, minInstances=0 und maxInstances=1. Die API-Route akzeptiert ein resources Objekt, aber Plan-Limits begrenzen minInstances auf 0 und maxInstances auf 1.
Wähle eine Region in der Nähe deiner Nutzer für die geringste Latenz. Die Plattform-UI zeigt Latenzschätzungen für alle 43 verfügbaren Regionen an.
Deployment abrufen
GET /api/deployments/{deploymentId}Deployment löschen
DELETE /api/deployments/{deploymentId}Deployment starten
POST /api/deployments/{deploymentId}/startEin gestopptes Deployment fortsetzen.
Deployment stoppen
POST /api/deployments/{deploymentId}/stopEin laufendes Deployment pausieren (stoppt die Abrechnung).
Gesundheitscheck
GET /api/deployments/{deploymentId}/healthGibt den Gesundheitsstatus des Deployment-Endpunkts zurück.
Inferenz auf Deployment ausführen
POST /api/deployments/{deploymentId}/predictSende ein Bild für eine Inferenz direkt an einen Deployment-Endpunkt. Funktionell identisch mit der Modell-Vorhersage, aber für geringere Latenz über den dedizierten Endpunkt geroutet.
Multipart-Form:
| Feld | Typ | Beschreibung |
|---|---|---|
file | Datei | Bilddatei (JPEG, PNG, WebP) |
conf | float | Konfidenz-Schwellenwert (Standard: 0.25) |
iou | float | IoU-Schwellenwert (Standard: 0.7) |
imgsz | int | Bildgröße in Pixeln (Standard: 640) |
Metriken abrufen
GET /api/deployments/{deploymentId}/metricsGibt die Anzahl der Anfragen, die Latenz und Fehlerraten-Metriken mit Sparkline-Daten zurück.
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
range | string | Zeitraum: 1h, 6h, 24h (Standard), 7d, 30d |
sparkline | string | Auf true setzen für optimierte Sparkline-Daten für die Dashboard-Ansicht |
Logs abrufen
GET /api/deployments/{deploymentId}/logsAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
severity | string | Durch Kommas getrennter Filter: DEBUG, INFO, WARNING, ERROR, CRITICAL |
limit | int | Anzahl der Einträge (Standard: 50, max: 200) |
pageToken | string | Seitennummerierungs-Token aus der vorherigen Antwort |
Überwachungs-API
GET /api/monitoring ist eine reine UI-Route und erfordert eine aktive Browser-Sitzung auf der Plattform. Sie akzeptiert keine Authentifizierung per API-Schlüssel. Frage einzelne Bereitstellungs-Metriken über die pro-Bereitstellungs-Routen ab (die ebenfalls nur über eine Browser-Sitzung zugänglich sind) oder verwende Cloud Monitoring-Exporte auf dem bereitgestellten Cloud Run-Dienst für den programmatischen Zugriff.
Aggregierte Metriken
GET /api/monitoringGibt aggregierte Metriken über alle Benutzerbereitstellungen hinweg zurück: Gesamtzahl der Anfragen, aktive Bereitstellungen, Fehlerrate und durchschnittliche Latenz.
Export-API
Konvertiere Modelle in optimierte Formate wie ONNX, TensorRT, CoreML und TFLite für die Edge-Bereitstellung. Siehe Bereitstellungs-Dokumentation.
Exporte auflisten
GET /api/exportsAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
modelId | string | Modell-ID (erforderlich) |
status | string | Nach Status filtern |
limit | int | Maximale Anzahl an Ergebnissen (Standard: 20, max: 100) |
Export erstellen
POST /api/exportsBody:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
modelId | string | Ja | Quellmodell-ID |
format | string | Ja | Exportformat (siehe Tabelle unten) |
gpuType | string | Bedingt | Erforderlich, wenn format den Wert engine (TensorRT) hat |
args | Objekt | Nein | Export-Argumente (imgsz, half, dynamic usw.) |
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/exportsUnterstützte Formate:
| Format | Wert | Anwendungsfall |
|---|---|---|
| ONNX | onnx | Plattformübergreifende Inferenz |
| TorchScript | torchscript | PyTorch-Bereitstellung |
| OpenVINO | openvino | Intel Hardware |
| TensorRT | engine | NVIDIA GPU-Optimierung |
| CoreML | coreml | Apple Geräte |
| TFLite | tflite | Mobil und eingebettet |
| TF SavedModel | saved_model | TensorFlow Serving |
| TF GraphDef | pb | TensorFlow Frozen 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 KI-Beschleuniger |
| ExecuTorch | executorch | Meta ExecuTorch Runtime |
Export-Status abrufen
GET /api/exports/{exportId}Export abbrechen
DELETE /api/exports/{exportId}Export-Download nachverfolgen
POST /api/exports/{exportId}/track-downloadAktivitäts-API
Sieh dir einen Feed der letzten Aktionen in deinem Konto an – Trainingsläufe, Uploads und mehr. Siehe Aktivitäts-Dokumentation.
Die Aktivitätsrouten werden durch browser-authentifizierte Anfragen aus der Plattform-UI betrieben. Sie sind nicht als öffentliche API verfügbar, akzeptieren keine API-Schlüssel-Authentifizierung und die unten aufgeführten Routenstrukturen dienen nur als Referenz. Nutze den Aktivitäts-Feed in der Plattform-UI, um Ereignisse anzuzeigen, zu markieren oder zu archivieren.
Aktivitäten auflisten
GET /api/activityAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
limit | int | Seitengröße (Standard: 20, Maximum: 100) |
page | int | Seitennummer (Standard: 1) |
archived | boolean | true für Archiv-Tab, false für Posteingang |
search | string | Groß-/Kleinschreibung ignorierende Suche in Ereignisfeldern |
Ereignisse als gesehen markieren
POST /api/activity/mark-seenBody:
{
"all": true
}Oder gib spezifische IDs an:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}Ereignisse archivieren
POST /api/activity/archiveBody:
{
"all": true,
"archive": true
}Oder gib spezifische IDs an:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}Papierkorb-API
Gelöschte Elemente anzeigen und wiederherstellen. Elemente werden nach 30 Tagen dauerhaft entfernt. Siehe Papierkorb-Dokumentation.
Papierkorb auflisten
GET /api/trashAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
type | string | Filter: all, project, dataset, model |
page | int | Seitennummer (Standard: 1) |
limit | int | Elemente pro Seite (Standard: 50, Maximum: 200) |
owner | string | Benutzername des Workspace-Besitzers |
Element wiederherstellen
POST /api/trashBody:
{
"id": "item_abc123",
"type": "dataset"
}Element dauerhaft löschen
DELETE /api/trashBody:
{
"id": "item_abc123",
"type": "dataset"
}Das dauerhafte Löschen kann nicht rückgängig gemacht werden. Die Ressource und alle zugehörigen Daten werden entfernt.
Papierkorb leeren
DELETE /api/trash/emptyLöscht alle Elemente im Papierkorb dauerhaft.
DELETE /api/trash/empty erfordert eine authentifizierte Browser-Sitzung und ist nicht über API-Schlüssel verfügbar. Nutze stattdessen die Schaltfläche Papierkorb leeren in der UI.
Abrechnungs-API
Überprüfe dein Guthaben, kaufe Credits, sieh dir den Transaktionsverlauf an und konfiguriere die automatische Aufladung. Siehe Abrechnungs-Dokumentation.
Abrechnungsbeträge verwenden Cent (creditsCents), wobei 100 = $1.00 gilt.
Guthaben abrufen
GET /api/billing/balanceAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
owner | string | Benutzername des Workspace-Besitzers |
Antwort:
{
"creditsCents": 2500,
"plan": "free",
"cashBalance": 25,
"creditBalance": 0,
"reservedAmount": 0,
"totalBalance": 25
}Nutzungszusammenfassung abrufen
GET /api/billing/usage-summaryGibt Plan-Details, Limits und Nutzungsmetriken zurück.
Transaktionen abrufen
GET /api/billing/transactionsGibt den Transaktionsverlauf zurück (aktuellste zuerst).
Abfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
owner | string | Benutzername des Workspace-Besitzers |
Checkout-Sitzung erstellen
POST /api/billing/checkout-sessionBody:
{
"amount": 25,
"owner": "team-username"
}| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
amount | number | Ja | Betrag in Dollar ($5-$1000) |
owner | string | Nein | Team-Benutzername für Workspace-Aufladungen (erfordert Administratorrolle) |
Erstellt eine Checkout-Sitzung für den Credit-Kauf.
Abonnement-Checkout erstellen
POST /api/billing/subscription-checkoutErstellt eine Checkout-Sitzung für ein Pro-Abonnement-Upgrade.
Body:
{
"planId": "pro",
"billingCycle": "monthly",
"owner": "team-username"
}| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
planId | string | Ja | Zu abonnierender Plan (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-checkoutKündigt ein Pro-Abonnement standardmäßig zum Ende des Abrechnungszeitraums. Sende {"resume": true}, um eine bereits geplante Kündigung vor Ende des Abrechnungszeitraums rückgängig zu machen.
Body:
{
"resume": true
}Automatisches Aufladen
Guthaben automatisch aufladen, wenn der Kontostand unter einen Schwellenwert fällt.
Auto-Aufladungskonfiguration abrufen
GET /api/billing/auto-topupAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
owner | string | Benutzername des Workspace-Besitzers |
Auto-Aufladungskonfiguration aktualisieren
PATCH /api/billing/auto-topupBody:
{
"enabled": true,
"thresholdCents": 500,
"amountCents": 2500
}Zahlungsmethoden
Zahlungsmethoden auflisten
GET /api/billing/payment-methodsSetup Intent erstellen
POST /api/billing/payment-methods/setupGibt ein Client-Secret zum Hinzufügen einer neuen Zahlungsmethode zurück.
Standard-Zahlungsmethode festlegen
POST /api/billing/payment-methods/defaultBody:
{
"paymentMethodId": "pm_123"
}Rechnungsdaten aktualisieren
PATCH /api/billing/payment-methodsBody:
{
"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üfe die Aufschlüsselung deiner Speichernutzung nach Kategorie (Datensätze, Modelle, Exporte) und sieh dir deine größten Elemente an.
Speicher-Routen erfordern eine aktive Browser-Sitzung auf der Plattform und sind nicht über einen API-Schlüssel zugänglich. Nutze die Seite Einstellungen > Profil im UI für interaktive Aufschlüsselungen.
Speicherinformationen abrufen
GET /api/storageAntwort:
{
"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"
}
]
}
}Upload-API
Lade Dateien für schnelle, zuverlässige Übertragungen direkt in den Cloud-Speicher hoch, indem du signierte URLs verwendest. Nutzt einen zweistufigen Prozess: Signierte URL abrufen, dann Datei hochladen. Siehe Daten-Dokumentation.
Signierte Upload-URL abrufen
POST /api/upload/signed-urlFordere 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 Ziel-Assets |
filename | string | Ursprünglicher Dateiname |
contentType | string | MIME-Typ |
totalBytes | int | Dateigröße in Bytes |
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/completeBenachrichtige die Plattform, dass ein Datei-Upload abgeschlossen ist, damit die 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
Verwalte deine API-Schlüssel für den programmatischen Zugriff. Siehe API-Schlüssel-Dokumentation.
API-Schlüssel auflisten
GET /api/api-keysAPI-Schlüssel erstellen
POST /api/api-keysBody:
{
"name": "training-server"
}API-Schlüssel löschen
DELETE /api/api-keysAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
keyId | string | Zu entziehende API-Schlüssel-ID |
Beispiel:
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"Teams & Mitglieder-API
Erstelle Team-Arbeitsbereiche, lade Mitglieder ein und verwalte Rollen für die Zusammenarbeit. Siehe Teams-Dokumentation.
Teams auflisten
GET /api/teamsTeam erstellen
POST /api/teams/createBody:
{
"username": "my-team",
"fullName": "My Team"
}Mitglieder auflisten
GET /api/membersGibt Mitglieder des aktuellen Arbeitsbereichs zurück.
Mitglied einladen
POST /api/membersBody:
{
"email": "user@example.com",
"role": "editor"
}| Rolle | Berechtigungen |
|---|---|
viewer | Schreibgeschützter Zugriff auf Arbeitsbereichsressourcen |
editor | Ressourcen erstellen, bearbeiten und löschen |
admin | Mitglieder, Abrechnung und alle Ressourcen verwalten (nur durch den Teambesitzer zuweisbar) |
Der Team-owner ist der Ersteller und kann nicht eingeladen werden. Die Eigentümerschaft wird separat über POST /api/members/transfer-ownership übertragen. Siehe Teams für vollständige Rollendetails.
Mitgliedsrolle aktualisieren
PATCH /api/members/{userId}Mitglied entfernen
DELETE /api/members/{userId}Eigentümerschaft übertragen
POST /api/members/transfer-ownershipEinladungen
Einladung annehmen
POST /api/invites/acceptEinladungsinformationen abrufen
GET /api/invites/infoAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
token | string | Einladungs-Token |
Einladung widerrufen
DELETE /api/invites/{inviteId}Einladung erneut senden
POST /api/invites/{inviteId}/resendExplore-API
Suche und durchstöbere öffentliche Datensätze und Projekte, die von der Community geteilt wurden. Siehe Explore-Dokumentation.
Öffentliche Inhalte durchsuchen
GET /api/explore/searchAbfrageparameter:
| 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 | Paginierungs-Offset (Standard: 0). Ergebnisse liefern 20 Elemente pro Seite. |
Sidebar-Daten
GET /api/explore/sidebarGibt kuratierte Inhalte für die Explore-Seitenleiste zurück.
Benutzer- & Einstellungs-APIs
Verwalte dein Profil, API-Schlüssel, Speichernutzung und Datenschutz-Einstellungen. Siehe Einstellungs-Dokumentation.
Benutzer nach Benutzername abrufen
GET /api/usersAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
username | string | Benutzername zum Nachschlagen |
Benutzer folgen oder entfolgen
PATCH /api/usersBody:
{
"username": "target-user",
"followed": true
}Verfügbarkeit des Benutzernamens prüfen
GET /api/username/checkAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
username | string | Benutzername zum Prüfen |
suggest | bool | Optional: true, um einen Vorschlag einzubeziehen, falls bereits vergeben |
Einstellungen
GET /api/settings
POST /api/settingsProfil-Einstellungen des Benutzers abrufen oder aktualisieren (Anzeigename, Bio, soziale Links, etc.).
Profilsymbol
POST /api/settings/icon
DELETE /api/settings/iconProfil-Avatar hochladen oder entfernen.
Onboarding
POST /api/onboardingOnboarding-Prozess abschließen (Datenregion, Benutzername festlegen).
GDPR-API
Fordere einen Export aller deiner Daten an oder lösche dein Konto dauerhaft. Siehe Einstellungs-Dokumentation.
GDPR-Jobstatus abrufen
GET /api/gdprAbfrageparameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
jobId | string | GDPR-Job-ID zum Prüfen |
Gibt den Jobstatus zurück. Für abgeschlossene Export-Jobs enthält die Antwort eine downloadUrl.
Export- oder Lösch-Prozess starten
POST /api/gdprBody:
{
"action": "export"
}{
"action": "delete",
"confirmationWord": "DELETE"
}Optional für Team-Arbeitsbereiche:
{
"action": "delete",
"confirmationWord": "DELETE",
"teamUsername": "my-team"
}Das Löschen des Kontos ist permanent 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-Integration
Für eine einfachere Integration verwende das Ultralytics Python-Paket, das Authentifizierung, Uploads und Echtzeit-Streaming von Metriken automatisch übernimmt.
Installation & Einrichtung
pip install ultralyticsInstallation überprüfen:
yolo checkDie Plattform-Integration erfordert ultralytics>=8.4.35. Niedrigere Versionen funktionieren NICHT mit der Plattform.
Authentifizierung
yolo settings api_key=YOUR_API_KEYPlattform-Datensätze verwenden
Referenziere Datensä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 |
Push zur Plattform
Sende Ergebnisse an ein Plattform-Projekt:
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)
- Finale Modellgewichte
- Validierungsdiagramme
- Konsolenausgabe
- Systemmetriken
API-Beispiele
Lade ein Modell von der Plattform:
# Your own model
model = YOLO("ul://username/project/model-name")
# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")Führe Inferenz aus:
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 probabilitiesModell exportieren:
# 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 verwendet interne Webhooks, um Echtzeit-Trainingsmetriken vom ultralytics Python SDK (das auf Cloud-GPUs oder entfernten/lokalen Maschinen läuft) zurück zur Plattform zu streamen – epochenweiser Loss, mAP, Systemstatistiken und Abschlussstatus. Diese Webhooks werden über den pro Trainingsauftrag bereitgestellten HMAC webhookSecret authentifiziert und sind nicht für die Nutzung durch Benutzeranwendungen vorgesehen.
Alle Pläne: Der Trainingsfortschritt über das ultralytics SDK (Echtzeit-Metriken, Abschlussbenachrichtigungen) funktioniert in jedem Plan automatisch – setze beim Training einfach project=username/my-project name=my-run und das SDK streamt Ereignisse zurück an die Plattform. Es ist keine benutzerseitige Webhook-Registrierung erforderlich.
Benutzerseitige Webhook-Abonnements (POST-Callbacks an eine URL, die du kontrollierst) stehen auf der Roadmap für Enterprise-Kunden und sind aktuell nicht verfügbar. In der Zwischenzeit kannst du GET /api/models/{modelId}/training abfragen, um den Status zu erhalten, oder den Aktivitäts-Feed in der UI verwenden.
FAQ
Wie paginiere ich große Ergebnisse?
Die meisten Endpunkte verwenden einen limit-Parameter, um zu steuern, wie viele Ergebnisse pro Anfrage zurückgegeben werden:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"Die Aktivitäts- und Papierkorb-Endpunkte unterstützen zusätzlich einen page-Parameter für seitenbasierte Paginierung:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/activity?page=2&limit=20"The Explore Search endpoint uses offset instead of page, with a fixed page size of 20:
curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&sort=stars"Kann ich die API ohne SDK verwenden?
Ja, alle Funktionen sind über REST verfügbar. Das Python SDK ist ein Komfort-Wrapper, der Funktionen wie Echtzeit-Metrik-Streaming und automatische Modell-Uploads hinzufügt. Du kannst außerdem alle Endpunkte interaktiv unter platform.ultralytics.com/api/docs erkunden.
Gibt es API-Client-Bibliotheken?
Derzeit verwende das Ultralytics Python-Paket oder führe direkte HTTP-Anfragen aus. Offizielle Client-Bibliotheken für andere Sprachen sind geplant.
Wie gehe ich mit Ratenbegrenzungen um?
Verwende den Retry-After-Header aus der 429-Antwort, um die korrekte Zeitspanne 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 du Ressourcen über die API erstellst. Du findest sie auch in der Plattform-URL:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project modelVerwende die Listen-Endpunkte, um nach Name zu suchen oder nach Projekt zu filtern.