RESTful API

Die Trooper AI API bietet umfassenden Zugriff auf das GPU-Servermanagement, einschließlich Serverbereitstellung, -überwachung, -migration und administrative Funktionen. Diese RESTful API ermöglicht Ihnen die programmgesteuerte Verwaltung Ihrer GPU-Infrastruktur, die Erstellung und Überwachung von Serveraufträgen, die Verwaltung von Vorlagen und die Durchführung administrativer Aufgaben.

Die API-Endpunkte und die API-Dokumentation befinden sich derzeit in der Beta-Phase. Bitte kontaktieren Sie uns bei Problemen: Support-Kontakte.

Sie finden Ihren API-Schlüssel in der API-Konsole.

API-Konsole testen

Profi-Tipp: Geben Sie diese Dokumentation einfach Ihrem Development LLM Agenten, und er wird sie in Ihren Code integrieren.


Überblick

Erhalten Sie einen kurzen Überblick über die API-Grundlagen wie URL, Authentifizierung und mehr:

Basis-URL

Code
https://james.trooper.ai

Authentifizierung

Die meisten Endpunkte erfordern die Authentifizierung mit einem Bearer-Token unter Verwendung Ihres Trooper API-Schlüssels:

http
Authorization: Bearer YOUR_API_KEY

Holen Sie sich Ihren API-Schlüssel von API Konsole.

Antwortformat

Alle API-Antworten sind im JSON-Format. Erfolgreiche Antworten enthalten typischerweise:

  • success: Boolean, das den Erfolg der Operation anzeigt
  • Zusätzliche Datenfelder, die endpunktspezifisch sind

Fehlerantworten beinhalten:

  • error: String, das den Fehler beschreibt
  • nextOptionales Feld, das die nächste Aktion vorschlägt (z.B. „login“)

Öffentliche Endpunkte

Teststatus abrufen

GET /api/test

Einfacher Testendpunkt zur Überprüfung der API-Konnektivität.

Anfrage

http
GET /api/test

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "test": "meinstring5"
}

Verfügbare GPU-Server abrufen (öffentlich)

GET /api/blibs

Alle öffentlich verfügbaren GPU-Serverkonfigurationen abrufen.

Anfrage

http
GET /api/blibs
Authorization: Bearer YOUR_API_KEY  # Optional - includes your private networks if provided

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
[
  {
    "id": 1,
    "name": "powerai.example",
    "gpu_type": "RTX 4090",
    "gpu_num": 1,
    "gpu_ram": 24,
    "cpu_cores": 8,
    "cpu_ram": 32,
    "hdd": 500,
    "price_h": 0.85,
    "is_public": 1,
    "country_code": "DE",
    "is_available": true,
    "available_hosts": ["ai18", "ai89"],
    "fitCount": 2,
    "maxPossibleInstances": 5
  }
]

Fehlerantwort (500)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "error": "Error fetching Blibs"
}

Authentifizierung erforderliche Endpunkte

Private GPUs abrufen

GET /api/blibs-private

Rufen Sie die GPU-Server ab, die Ihrem Konto zugänglich sind, einschließlich privater Konfigurationen.

Anfrage

http
GET /api/blibs-private
Authorization: Bearer YOUR_API_KEY

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
[
  {
    "id": 2,
    "name": "RTX 4090 Dual Private",
    "gpu_type": "RTX 4090",
    "gpu_num": 2,
    "gpu_ram": 24,
    "cpu_cores": 16,
    "cpu_ram": 64,
    "hdd": 1000,
    "price_h": 1.65,
    "is_public": 1,
    "country_code": "DE"
  }
]

Fehlerantwort (401)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "error": "Missing or invalid Authorization header"
}

Serverbestellung erstellen

POST /api/order

Erstellen Sie eine neue GPU-Serverbestellung. Sie müssen den angegebenen Preis einreichen, andernfalls wird die Bestellung nicht akzeptiert. Dies stellt sicher, dass der aktuelle Preis Ihren Erwartungen entspricht!

Open API Konsole & Ausprobieren

Anfrage

http
POST /api/order
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "blib_id": 1,
  "price_h": 0.85,
  "total_price": 0.85,
  "terms_accepted": true,
  "contract_interval": "HOUR",
  "second_partition_percentage": 20,
  "templates": [
    {
      "id": 1,
      "name": "PyTorch Environment"
    }
  ]
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "orderId": 123
}

Fehlerantwort (400)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "error": "You must accept the terms and conditions."
}

Fehlerantwort (400)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "error": "Invalid or missing contract interval."
}

Ihre Serverbestellungen abrufen

GET /api/orders

Rufen Sie alle Ihre Serverbestellungen mit detaillierten Informationen ab.

Berücksichtigen Sie bei der Behandlung von Serverstatus die Wechselwirkung zwischen desired_status und current_statusBeispielsweise kann ein Server einen gewünschten Status von "gestoppt" haben, während sein aktueller Status noch "läuft" ist, wenn der Stoppvorgang noch ausgeführt wird. desired_status von "gestoppt", aber sein current_status könnte sich noch im Status „läuft“ befinden, wenn der Stoppvorgang noch ausgeführt wird. Ihre Anwendung sollte diese Übergänge berücksichtigen und entsprechend behandeln.

Anfrage

http
GET /api/orders
Authorization: Bearer YOUR_API_KEY

Abfrageparameter

  • machine_name (optional): Nach Maschinenname filtern

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
[
  {
    "order_id": 123,
    "serverId": 123,
    "title": "My PyTorch Server",
    "status": "running",
    "status_user": "running",
    "server_name": "gpu-server-01",
    "machine_name": "ai99_trooperai_000123",
    "ip": "192.168.1.100",
    "ssh_port": 22001,
    "price_h": 0.85,
    "paid_until": "2025-09-26T14:30:00.000Z",
    "contract_interval": "HOUR",
    "is_locked": false,
    "is_low_priority": false,
    "blib_name": "RTX 4090 Single",
    "blib_gpu_type": "RTX 4090",
    "blib_gpu_num": 1,
    "country_code": "DE",
    "template_installs": [
      {
        "id": 1,
        "template_name": "PyTorch Environment",
        "status": 1,
        "status_readable": "Completed"
      }
    ]
  }
]

Fehlerantwort (401)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "error": "Missing or invalid Authorization header",
  "next": "login"
}

Serverstatus aktualisieren

POST /api/order-status

Aktualisieren Sie den Status Ihrer Serverbestellung (laufend, gestoppt, neu gestartet, eingefroren).

Set "migration_allowed": true wenn Sie die Hostmigration bei Übergang von einem eingefrorenen in einen laufenden Zustand genehmigen. Dieser Vorgang kann 10–90 Minuten dauern und ändert den Portbereich und potenziell das CPU-Modell/die CPU-Geschwindigkeit.

Anfrage

http
POST /api/order-status
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "serverId": 123,
  "action": "running",
  "migration_allowed": false
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "message": "Server start initiated successfully",
  "status": "starting"
}

Fehlerantwort (403)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": false,
  "error": "Server is locked and cannot be modified"
}

Server-Titel aktualisieren

POST /api/order-title

Ändern Sie den Anzeigetitel Ihres Servers.

Anfrage

http
POST /api/order-title
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "serverId": 123,
  "title": "My New Server Title"
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "message": "Title updated successfully"
}

Server sperren/entsperren

POST /api/order-lock

Server sperren oder entsperren, um Statusänderungen zu verhindern/zulassen.

Anfrage

http
POST /api/order-lock
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "serverId": 123,
  "is_locked": true
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "updated": 1
}

Server-Anmeldeinformationen abrufen

POST /api/credentials

Abrufen der SSH-Zugangsdaten und Verbindungsdetails für Ihren Server.

Anfrage

http
POST /api/credentials
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "serverId": 123
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "ip": "192.168.1.100",
  "ssh_port": 22001,
  "username": "root",
  "password": "generated-password",
  "status": "running"
}

Fehlerantwort (403)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "error": "Access denied or server not found"
}

Serverstatusverlauf abrufen

GET /api/order-status-history

Ruft die letzten 5 Statusänderungen einer Serverbestellung ab.

Anfrage

http
GET /api/order-status-history?order_id=123
Authorization: Bearer YOUR_API_KEY

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "history": [
    {
      "id": 1,
      "status_user": "running",
      "status_txt": "Server started successfully",
      "status_since": "2025-09-25T10:30:00.000Z"
    },
    {
      "id": 2,
      "status_user": "stopped",
      "status_txt": "Server stopped by user",
      "status_since": "2025-09-25T08:15:00.000Z"
    }
  ]
}

Migrationsendpunkte

Migration wird verwendet, um Ihren GPU-Server in eine andere Konfiguration zu überführen. Wir empfehlen die Verwendung in einer Produktionsumgebung nicht. Sie können es aber gerne ausprobieren, wenn Sie möchten!

Migrationsoptionen abrufen

GET /api/migration-options

Verfügbare Serverkonfigurationen für die Migration abrufen.

Anfrage

http
GET /api/migration-options?order_id=123
Authorization: Bearer YOUR_API_KEY

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "currentOrder": {
    "id": 123,
    "title": "My Server",
    "status": "running",
    "contract_interval": "HOUR",
    "paid_until": "2025-09-26T14:30:00.000Z"
  },
  "currentBlib": {
    "id": 1,
    "name": "RTX 4090 Single",
    "gpu_type": "RTX 4090",
    "gpu_num": 1,
    "price_h": 0.85
  },
  "availableBlibs": [
    {
      "id": 2,
      "name": "RTX 4090 Dual",
      "gpu_type": "RTX 4090",
      "gpu_num": 2,
      "price_h": 1.65,
      "is_available": true,
      "additionalCostPerCycle": 0.80
    }
  ]
}

Migrationskosten berechnen

POST /api/migration-cost

Berechnen Sie die Kosten für die Migration zu einer anderen Serverkonfiguration.

Anfrage

http
POST /api/migration-cost
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "order_id": 123,
  "target_blib_id": 2
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "upgradeCost": 15.50,
  "remainingValue": 12.30,
  "totalDue": 3.20,
  "additionalCostPerCycle": 0.80,
  "nextBillingDate": "2025-09-26T14:30:00.000Z",
  "currentRate": {
    "amount": 0.85,
    "display": "€0.85/hour"
  },
  "newRate": {
    "amount": 1.65,
    "display": "€1.65/hour"
  }
}

Migration ausführen

POST /api/buy-migration

Führen Sie die Migration zu einer neuen Serverkonfiguration durch.

WICHTIG Wenn Sie hier ungültige Daten übermitteln, ist nichts garantiert. Das Support-Team kann Ihre Bestellung nicht wiederherstellen, wenn Sie diesen Endpunkt missbräuchlich für den Kauf von Migrationen verwenden. Wir empfehlen die Verwendung des UI-Dashboards.

Anfrage

http
POST /api/buy-migration
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "order_id": 123,
  "target_blib_id": 2,
  "keep_data": true
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "message": "Migration initiated successfully",
  "new_order_id": 124
}

Fehlerantwort (400)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "error": "Insufficient budget for migration"
}

Template-Verwaltung

Verfügbare Vorlagen abrufen

GET /api/templates

Alle verfügbaren Softwarevorlagen abrufen.

Anfrage

http
GET /api/templates
Authorization: Bearer YOUR_API_KEY  # Optional

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
[
  {
    "id": 1,
    "name": "PyTorch Environment",
    "description": "Pre-configured PyTorch environment with CUDA support",
    "category": "Machine Learning",
    "is_public": true,
    "options": [
      {
        "id": 1,
        "name": "Python Version",
        "type": "select",
        "default_value": "3.9",
        "possible_values": "3.8,3.9,3.10"
      }
    ]
  }
]

Vorlage-Konfiguration abrufen

GET /api/template-config

Konfigurationsdetails für die Template-Installation für eine bestimmte Bestellung abrufen.

Anfrage

http
GET /api/template-config?order_id=123
Authorization: Bearer YOUR_API_KEY

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "templates": [
    {
      "install_id": 1,
      "template_id": 1,
      "template_name": "PyTorch Environment",
      "status": 1,
      "status_readable": "Completed",
      "config": {
        "python_version": "3.9"
      }
    }
  ]
}

Vorlage installieren

POST /api/template-install-add

Installieren Sie eine neue Vorlage auf Ihrem Server.

Anfrage

http
POST /api/template-install-add
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "order_id": 123,
  "template_id": 1,
  "config": {
    "python_version": "3.9"
  }
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "install_id": 5,
  "message": "Template installation queued"
}

Vorlage entfernen

POST /api/template-install-delete

Eine Template-Installation von Ihrem Server entfernen.

Anfrage

http
POST /api/template-install-delete
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "install_id": 5
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "message": "Template removal initiated"
}

Template-Installation wiederholen

POST /api/template-install-retry

Eine fehlgeschlagene Template-Installation wiederholen.

Anfrage

http
POST /api/template-install-retry
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Anfragekörper

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "install_id": 5
}

Erfolgreiche Antwort (200)

json Nur den übersetzten Text als JSON ohne zusätzlichen Text oder Anführungszeichen in folgendem Format zurückgeben: { "translated_text": "übersetzter Text" }
{
  "success": true,
  "message": "Template installation retry initiated"
}

Fehlercodes

HTTP-Statuscodes

  • 200 OKAnfrage erfolgreich
  • 400 Ungültige AnfrageUngültige Anfrageparameter
  • 401 Nicht autorisiertFehlende oder ungültige Authentifizierung
  • 403 VerbotenUnzureichende Berechtigungen
  • 404 Nicht gefundenRessource nicht gefunden
  • 500 Interner ServerfehlerServerfehler

Häufige Fehlermeldungen

  • "Missing or invalid Authorization header"Authentifizierung erforderlich
  • "Invalid Trooper key"Ungültiger Trooper-Schlüssel
  • "Unauthorized access"Unzureichende Berechtigungen
  • "You must accept the terms and conditions"Bestimmungen wurden bei der Auftragserstellung nicht akzeptiert
  • "Invalid or missing contract interval"Das Vertragsintervall muss HOUR, WEEK oder MONTH sein
  • "Insufficient budget"Nicht genügend Guthaben für die Operation
  • "Server is locked and cannot be modified"Server ist gesperrt und kann nicht geändert werden

Ratenbegrenzung

API-Endpunkte können ratenbegrenzt werden, um Missbrauch zu verhindern. Wenn Sie das Limit überschreiten, erhalten Sie einen Statuscode 429. Implementieren Sie eine geeignete Wiederholungslogik mit exponentiellem Backoff.

Support

Für API-Support und Fragen wenden Sie sich bitte an: support@trooper.ai

Open API Konsole


Bei Fragen zur API können Sie sich gerne an uns wenden: Support-Kontakte