API RESTful

API Trooper AI zapewnia kompleksowy dostęp do zarządzania serwerami GPU, w tym do ich tworzenia, monitorowania, migracji i funkcji administracyjnych. To RESTful API umożliwia programowe zarządzanie infrastrukturą GPU, tworzenie i monitorowanie zamówień na serwery, obsługę szablonów oraz wykonywanie zadań administracyjnych.

Punkty końcowe API oraz dokumentacja API znajdują się obecnie w fazie Beta. W razie problemów skontaktuj się z nami: Kontakty wsparcia.

Znajdziesz swój klucz API w Konsoli API.

Wypróbuj Konsolę API

Porada: Podaj tę dokumentację swojemu Agenci LLM do Rozwoju i on zintegruje ją automatycznie z kodem.


Przegląd

Uzyskaj krótki przegląd podstaw API, takich jak URL, uwierzytelnianie i więcej:

Adres URL bazowy

Kod
https://james.trooper.ai

Uwierzytelnianie

Większość punktów końcowych wymaga uwierzytelniania za pomocą tokenu Bearer, używając Twojego klucza API Trooper:

http
Authorization: Bearer YOUR_API_KEY

Pobierz swój klucz API z Konsoli API.

Format odpowiedzi

Wszystkie odpowiedzi API są w formacie JSON. Pomyślne odpowiedzi zazwyczaj zawierają:

  • successWartość logiczna wskazująca powodzenie operacji
  • Dodatkowe pola danych specyficzne dla punktu końcowego

Odpowiedzi w przypadku błędów zawierają:

  • error: Ciąg znaków opisujący błąd
  • nextOpcjonalne pole sugerujące następną akcję (np. „login”)

Punkty końcowe publiczne

Sprawdź status testu

GET /api/test

Prosty punkt końcowy testowy służący do weryfikacji połączenia z API.

Żądanie

http
GET /api/test

Odpowiedź sukcesu (200)

json
{
  "test": "meinstring5"
}

Pobierz dostępne serwery GPU (Publiczne)

GET /api/blibs

Pobierz wszystkie publicznie dostępne konfiguracje serwerów GPU.

Żądanie

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

Odpowiedź sukcesu (200)

json
[
  {
    "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
  }
]

Odpowiedź o błędzie (500)

json
{
  "error": "Error fetching Blibs"
}

Wymagane uwierzytelnienie

Pobierz prywatne serwery GPU

GET /api/prywatne-bloby

Pobierz serwery GPU dostępne na Twoim koncie, w tym konfiguracje prywatne.

Żądanie

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

Odpowiedź sukcesu (200)

json
[
  {
    "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"
  }
]

Odpowiedź o błędzie (401)

json
{
  "error": "Missing or invalid Authorization header"
}

Utwórz zamówienie na serwer

POST /api/zamówienie

Utwórz nowe zamówienie na serwer GPU. Musisz podać podaną cenę, w przeciwnym razie zamówienie nie zostanie przyjęte. Zapewnia to zgodność aktualnej ceny z Twoimi oczekiwaniami!

Otwórz konsolę API i przetestuj

Żądanie

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

Treść żądania

json
{
  "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"
    }
  ]
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "orderId": 123
}

Odpowiedź błędu (400)

json
{
  "error": "You must accept the terms and conditions."
}

Odpowiedź błędu (400)

json
{
  "error": "Invalid or missing contract interval."
}

Pobierz zamówienia na swoje serwery

GET /api/zamówienia

Pobierz wszystkie zamówienia serwerowe z szczegółowymi informacjami.

Obsługując statusy serwerów, należy wziąć pod uwagę wzajemne powiązania między desired_status i current_statusNa przykład, serwer może mieć desired_status do „zatrzymanego”, ale jego current_status może nadal być w stanie „uruchomiony”, jeśli proces zatrzymywania jest w toku. Twoja aplikacja powinna uwzględniać te przejścia i odpowiednio je obsługiwać.

Żądanie

http
GET /api/orders
Authorization: Bearer YOUR_API_KEY

Parametry zapytania

  • machine_name (opcjonalnie): Filtruj według konkretnej nazwy maszyny

Odpowiedź sukcesu (200)

json
[
  {
    "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"
      }
    ]
  }
]

Odpowiedź o błędzie (401)

json
{
  "error": "Missing or invalid Authorization header",
  "next": "login"
}

Aktualizuj status serwera

POST /api/status-zamówienia-serwera

Zaktualizuj status zamówienia serwera (uruchomiony, zatrzymany, ponownie uruchomiony, zamrożony).

Ustaw "migration_allowed": true jeśli zatwierdzisz migrację hosta podczas przechodzenia ze stanu zamrożonego do uruchomionego. Ten proces może trwać od 10 do 90 minut i zmieni zakres portów oraz potencjalnie model/szybkość procesora.

Żądanie

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

Treść żądania

json
{
  "serverId": 123,
  "desired_status": "running",
  "migration_allowed": false
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "updated": 1
}

Odpowiedź o błędzie (403)

json
{
  "success": false,
  "error": "Server is locked and cannot be modified"
}

Zaktualizuj tytuł serwera

POST /api/zamów-tytuł-serwera

Zaktualizuj tytuł wyświetlania swojego serwera.

Żądanie

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

Treść żądania

json
{
  "serverId": 123,
  "title": "My New Server Title"
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "message": "Title updated successfully"
}

Zablokuj/Odblokuj Serwer

POST /api/zamówienie-zablokuj

Zablokuj lub odblokuj serwer, aby zapobiec/umożliwić zmiany statusu.

Żądanie

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

Treść żądania

json
{
  "serverId": 123,
  "is_locked": true
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "updated": 1
}

Pobierz dane dostępu do serwera

POST /api/uwierzytelnienia

Pobierz dane uwierzytelniające SSH i szczegóły połączenia dla Twojego serwera.

Żądanie

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

Treść żądania

json
{
  "serverId": 123
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "ssh_password": "generated-password"
}

Odpowiedź o błędzie (403)

json
{
  "error": "Access denied or server not found"
}

Pobierz historię statusu serwera

GET /api/historia-stanów-zamówienia

Pobierz 5 ostatnich zmian statusu zamówienia serwera.

Żądanie

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

Odpowiedź sukcesu (200)

json
{
  "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"
    }
  ]
}

Punkty końcowe migracji

Migracja służy do zmiany konfiguracji Twojego serwera GPU. Nie zalecamy używania jej w środowisku produkcyjnym, ale możesz spróbować, jeśli chcesz!

Pobierz opcje migracji

GET /api/opcje-migracji

Pobierz dostępne konfiguracje serwerów do migracji.

Żądanie

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

Odpowiedź sukcesu (200)

json
{
  "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
    }
  ]
}

Oblicz koszt migracji

POST /api/koszt-migracji

Oblicz koszt migracji do innej konfiguracji serwera.

Żądanie

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

Treść żądania

json
{
  "order_id": 123,
  "target_blib_id": 2
}

Odpowiedź sukcesu (200)

json
{
  "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"
  }
}

Wykonaj Migrację

POST /api/kup-wmigracje

Uruchom migrację do nowej konfiguracji serwera.

WAŻNE Jeśli przesłasz niepoprawne dane tutaj, nic nie jest gwarantowane. Zespół supportu nie może przywrócić Twojego zamówienia w przypadku nadużycia tego punktu końcowego przy zakupie migracji. Polecamy korzystanie z interfejsu UI Dashboard.

Żądanie

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

Treść żądania

json
{
  "order_id": 123,
  "target_blib_id": 2,
  "keep_data": true
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "message": "Migration initiated successfully",
  "new_order_id": 124
}

Odpowiedź błędu (400)

json
{
  "error": "Insufficient budget for migration"
}

Zarządzanie szablonami

Pobierz dostępne szablony

GET /api/szablony

Pobierz wszystkie dostępne szablony oprogramowania.

Żądanie

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

Odpowiedź sukcesu (200)

json
[
  {
    "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"
      }
    ]
  }
]

Pobierz konfigurację szablonu

GET /api/szablon-konfiguracja

Pobierz konfigurację instalacji szablonu dla konkretnego zamówienia.

Żądanie

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

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "templates": [
    {
      "install_id": 1,
      "template_id": 1,
      "template_name": "PyTorch Environment",
      "status": 1,
      "status_readable": "Completed",
      "config": {
        "python_version": "3.9"
      }
    }
  ]
}

Zainstaluj szablon

POST /api/instalacja-szablonu-dodaj

Zainstaluj nową konfigurację na swoim serwerze.

Żądanie

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

Treść żądania

json
{
  "order_id": 123,
  "template_id": 1,
  "config": {
    "python_version": "3.9"
  }
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "install_id": 5,
  "message": "Template installation queued"
}

Usuń szablon

POST /api/instalacja-szablonu-usun

Usuń instalację szablonu z Twojego serwera.

Żądanie

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

Treść żądania

json
{
  "install_id": 5
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "message": "Template removal initiated"
}

Ponowna instalacja szablonu

POST /api/wtórna-instalacja-szablonu

Ponów instalację nieudanej szablony.

Żądanie

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

Treść żądania

json
{
  "install_id": 5
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "message": "Template installation retry initiated"
}

Kody błędów

Kody statusu HTTP

  • 200 OK: Żądanie zakończone pomyślnie
  • 400 Błędny Zapytanie: Niewłaściwe parametry żądania
  • 401 Brak uprawnień: Brakujący lub niewłaściwy token autoryzacji
  • 403 Zabronione: Brak wystarczających uprawnień
  • 404 Nie znaleziono: Zasób nie został znaleziony
  • Błąd serwera 500 (Internal Server Error): Błąd serwera

Typowe komunikaty o błędach

  • "Missing or invalid Authorization header"Wymagana autoryzacja
  • "Invalid Trooper key": Klucz API jest nieprawidłowy
  • "Unauthorized access"Brak uprawnień
  • "You must accept the terms and conditions": Warunki nie zostały zaakceptowane podczas tworzenia zamówienia
  • "Invalid or missing contract interval"Interwał kontraktu musi być GODZINOWY, TYGODNIOWY lub MIESIĘCZNY
  • "Insufficient budget"Brak wystarczających środków na operację
  • "Server is locked and cannot be modified"Serwer jest zablokowany i nie można go modyfikować

Ograniczenie częstotliwości

Punkty końcowe API mogą być ograniczone, aby zapobiec nadużyciom. Jeśli przekroczysz limit częstotliwości, otrzymasz kod statusu 429. Zaimplementuj odpowiednią logikę ponawiania prób z wykładniczym wycofaniem.

Wsparcie

W przypadku wsparcia dotyczącego API oraz pytań skontaktuj się pod adresem: support@trooper.ai

Otwórz konsolę API


W przypadku pytań związanych z API skontaktuj się z nami: Kontakt z wsparciem