Zum Inhalt springen

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

# Run inference on a model
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@image.jpg" \
  https://platform.ultralytics.com/api/models/MODEL_ID/predict

Authentifizierung

Alle API-Anfragen erfordern eine Authentifizierung mittels API-Schlüssel.

API-Schlüssel abrufen

  1. Gehen Sie zu Einstellungen > API-Schlüssel
  2. Klicken Sie auf Schlüssel erstellen
  3. 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

Beispiel

curl -H "Authorization: Bearer ul_abc123..." \
  https://platform.ultralytics.com/api/datasets

Basis-URL

Alle API-Endpunkte verwenden:

https://platform.ultralytics.com/api

Ratenbegrenzungen

PlanAnfragen/MinuteAnfragen/Tag
Kostenlos601,000
Pro30050,000
EnterpriseBenutzerdefiniertBenutzerdefiniert

Ratenbegrenzungs-Header sind in den Antworten enthalten:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1640000000

Antwortformat

Alle Antworten sind JSON:

{
  "success": true,
  "data": { ... },
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 100
  }
}

Fehlerantworten

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid dataset ID",
    "details": { ... }
  }
}

Datensätze API

Datensätze auflisten

GET /api/datasets

Abfrageparameter:

ParameterTypBeschreibung
pageintSeitennummer (Standard: 1)
limitintElemente pro Seite (Standard: 20)
taskstringNach Aufgabentyp filtern

Antwort:

{
    "success": true,
    "data": [
        {
            "id": "dataset_abc123",
            "name": "my-dataset",
            "slug": "my-dataset",
            "task": "detect",
            "imageCount": 1000,
            "classCount": 10,
            "visibility": "private",
            "createdAt": "2024-01-15T10:00:00Z"
        }
    ]
}

Datensatz abrufen

GET /api/datasets/{datasetId}

Datensatz erstellen

POST /api/datasets

Body:

{
    "name": "my-dataset",
    "task": "detect",
    "description": "A custom detection dataset"
}

Datensatz löschen

DELETE /api/datasets/{datasetId}

Datensatz exportieren

POST /api/datasets/{datasetId}/export

Gibt eine Download-URL im NDJSON-Format zurück.

Modelle anhand von Datensätzen trainieren

GET /api/datasets/{datasetId}/models

Gibt eine Liste der Modelle zurück, die mit diesem Datensatz trainiert wurden, und zeigt die Beziehung zwischen den Datensätzen und den daraus erstellten Modellen.

Antwort:

{
    "success": true,
    "data": [
        {
            "id": "model_abc123",
            "name": "experiment-1",
            "projectId": "project_xyz",
            "trainedAt": "2024-01-15T10:00:00Z",
            "metrics": {
                "mAP50": 0.85,
                "mAP50-95": 0.72
            }
        }
    ]
}

Projekte API

Projekte auflisten

GET /api/projects

Projekt abrufen

GET /api/projects/{projectId}

Projekt erstellen

POST /api/projects

Body:

{
    "name": "my-project",
    "description": "Detection experiments"
}

Projekt löschen

DELETE /api/projects/{projectId}

Modelle API

Modelle auflisten

GET /api/models

Abfrageparameter:

ParameterTypBeschreibung
projectIdstringNach Projekt filtern
taskstringNach Aufgabentyp filtern

Modell abrufen

GET /api/models/{modelId}

Modell hochladen

POST /api/models

Multipart-Formular:

FeldTypBeschreibung
fileDatei definiertModell-Datei (.pt)
projectIdstringZielprojekt
namestringModellname

Modell löschen

DELETE /api/models/{modelId}

Modell herunterladen

GET /api/models/{modelId}/files

Gibt signierte Download-URLs für Modelldateien zurück.

Inferenz ausführen

POST /api/models/{modelId}/predict

Multipart-Formular:

FeldTypBeschreibung
fileDatei definiertBilddatei
conffloatKonfidenzschwelle
ioufloatIoU-Schwelle

Antwort:

{
    "success": true,
    "predictions": [
        {
            "class": "person",
            "confidence": 0.92,
            "box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
        }
    ]
}

Training API

Training starten

POST /api/training/start

Body:

{
    "modelId": "model_abc123",
    "datasetId": "dataset_xyz789",
    "epochs": 100,
    "imageSize": 640,
    "gpuType": "rtx-4090"
}

Trainingsstatus abrufen

GET /api/models/{modelId}/training

Training abbrechen

DELETE /api/models/{modelId}/training

Bereitstellungen API

Bereitstellungen auflisten

GET /api/deployments

Abfrageparameter:

ParameterTypBeschreibung
modelIdstringNach Modell filtern

Bereitstellung erstellen

POST /api/deployments

Body:

{
    "modelId": "model_abc123",
    "region": "us-central1",
    "minInstances": 0,
    "maxInstances": 10
}

Bereitstellung abrufen

GET /api/deployments/{deploymentId}

Bereitstellung starten

POST /api/deployments/{deploymentId}/start

Bereitstellung stoppen

POST /api/deployments/{deploymentId}/stop

Bereitstellung löschen

DELETE /api/deployments/{deploymentId}

Metriken abrufen

GET /api/deployments/{deploymentId}/metrics

Protokolle abrufen

GET /api/deployments/{deploymentId}/logs

Abfrageparameter:

ParameterTypBeschreibung
severitystringINFO, WARNING, ERROR
limitintAnzahl der Einträge

Export API

Exporte auflisten

GET /api/exports

Export erstellen

POST /api/exports

Body:

{
    "modelId": "model_abc123",
    "format": "onnx"
}

Unterstützte Formate:

onnx, torchscript, openvino, tensorrt, coreml, tflite, saved_model, graphdef, paddle, ncnn, edgetpu, tfjs, mnn, rknn, imx, axelera, executorch

Exportstatus abrufen

GET /api/exports/{exportId}

Aktivitäts-API

tracken und verwalten Sie Aktivitätsereignisse für Ihr Konto.

Aktivitäten auflisten

GET /api/activity

Abfrageparameter:

ParameterTypBeschreibung
startDatestringFilter ab Datum (ISO)
endDatestringFilter bis Datum (ISO)
searchstringIn Ereignismeldungen suchen

Ereignisse als gesehen markieren

POST /api/activity/mark-seen

Ereignisse archivieren

POST /api/activity/archive

Papierkorb-API

Verwalten Sie vorläufig gelöschte Ressourcen (30 Tage Aufbewahrungsfrist).

Papierkorb auflisten

GET /api/trash

Element wiederherstellen

POST /api/trash

Body:

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

Papierkorb leeren

POST /api/trash/empty

Löscht alle Elemente im Papierkorb dauerhaft.

Abrechnungs-API

Guthaben und Abonnements verwalten.

Guthaben abrufen

GET /api/billing/balance

Antwort:

{
    "success": true,
    "data": {
        "cashBalance": 5000000,
        "creditBalance": 20000000,
        "reservedAmount": 0,
        "totalBalance": 25000000
    }
}

Micro-USD

Alle Beträge sind in Micro-USD (1.000.000 = 1,00 $) für eine präzise Abrechnung angegeben.

Nutzungsübersicht abrufen

GET /api/billing/usage-summary

Gibt Details zu Plänen, Limits und Nutzungsmetriken zurück.

Checkout-Sitzung erstellen

POST /api/billing/checkout-session

Body:

{
    "amount": 25
}

Erstellt eine Stripe-Checkout-Sitzung für den Kauf von Guthaben (5–1000 $).

Abonnement-Checkout erstellen

POST /api/billing/subscription-checkout

Erstellt eine Stripe-Checkout-Sitzung für das Pro-Abonnement.

Portal-Sitzung erstellen

POST /api/billing/portal-session

Gibt die URL zum Stripe-Abrechnungsportal für die Abonnementverwaltung zurück.

Zahlungsverlauf abrufen

GET /api/billing/payments

Gibt eine Liste der Zahlungstransaktionen von Stripe zurück.

Speicher-API

Speicherinformationen abrufen

GET /api/storage

Antwort:

{
    "success": true,
    "data": {
        "used": 1073741824,
        "limit": 107374182400,
        "percentage": 1.0
    }
}

DSGVO-API

DSGVO-konforme Endpunkte für Datenexport und -löschung.

Kontodaten exportieren/löschen

POST /api/gdpr

Body:

{
    "action": "export"
}
AktionBeschreibung
exportAlle Kontodaten herunterladen
deleteKonto und alle Daten löschen

Irreversible Aktion

Die Kontolöschung ist dauerhaft und kann nicht rückgängig gemacht werden. Alle Daten, Modelle und Bereitstellungen werden gelöscht.

API-Schlüssel-API

API-Schlüssel auflisten

GET /api/api-keys

API-Schlüssel erstellen

POST /api/api-keys

Body:

{
    "name": "training-server",
    "scopes": ["training", "models"]
}

API-Schlüssel löschen

DELETE /api/api-keys/{keyId}

Fehlercodes

CodeBeschreibung
UNAUTHORIZEDUngültiger oder fehlender API-Schlüssel
FORBIDDENUnzureichende Berechtigungen
NOT_FOUNDRessource nicht gefunden
VALIDATION_ERRORUngültige Anfragedaten
RATE_LIMITEDZu viele Anfragen
INTERNAL_ERRORServerfehler

Python

Für eine einfachere Integration verwenden Sie das Ultralytics Python-Paket.

Installation & Einrichtung

pip install ultralytics

Installation überprüfen:

yolo check

Anforderung an die Paketversion

Die Plattform-Integration erfordert ultralytics>=8.4.0. Ältere Versionen funktionieren NICHT mit der Plattform.

Authentifizierung

Methode 1: CLI (empfohlen)

yolo settings api_key=YOUR_API_KEY

Methode 2: Umgebungsvariable

export ULTRALYTICS_API_KEY=YOUR_API_KEY

Methode 3: Im Code

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:

ul://{username}/{resource-type}/{name}

Examples:
ul://john/datasets/coco-custom     # Dataset
ul://john/my-project               # Project
ul://john/my-project/exp-1         # Specific model
ul://ultralytics/yolo26/yolo26n    # Official model

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:

EreignisBeschreibung
training.startedTrainingsjob gestartet
training.epochEpoche abgeschlossen
training.completedTraining abgeschlossen
training.failedTraining fehlgeschlagen
export.completedExport bereit

Das Webhook-Setup ist in Enterprise-Plänen verfügbar.

FAQ

Wie paginiere ich große Ergebnisse?

Verwenden Sie page und limit Parameter:

GET /api/datasets?page=2 &
limit=50

Kann ich die API ohne ein SDK nutzen?

Ja, alle Funktionen sind über REST verfügbar. Das SDK ist ein Komfort-Wrapper.

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?

Implementieren Sie exponentielles Backoff:

import time


def api_request_with_retry(url, max_retries=3):
    for attempt in range(max_retries):
        response = requests.get(url)
        if response.status_code != 429:
            return response
        wait = 2**attempt
        time.sleep(wait)
    raise Exception("Rate limit exceeded")


📅 Erstellt vor 20 Tagen ✏️ Aktualisiert vor 14 Tagen
glenn-jocherLaughing-q

Kommentare