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 są obecnie w fazie Beta. W przypadku jakichkolwiek problemów skontaktuj się z nami: Kontakty z wsparciem.

Znajdziesz swój klucz API w Konsoli API.

Wypróbuj Konsolę API

Wskazówka: Po prostu przekaż tę dokumentację swojemu Agentowi LLM dla programistów, a on zintegruje ją z twoim 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 Konsola 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/blibs-private

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/order

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 wypróbuj

Żą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/orders

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/order-status

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,
  "action": "running",
  "migration_allowed": false
}

Odpowiedź sukcesu (200)

json
{
  "success": true,
  "message": "Server start initiated successfully",
  "status": "starting"
}

Odpowiedź o błędzie (403)

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

Zaktualizuj tytuł serwera

POST /api/order-title

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/order-lock

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/credentials

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,
  "ip": "192.168.1.100",
  "ssh_port": 22001,
  "username": "root",
  "password": "generated-password",
  "status": "running"
}

Odpowiedź o błędzie (403)

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

Pobierz historię statusu serwera

GET /api/order-status-history

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/migration-options

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/migration-cost

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/buy-migration

Uruchom migrację do nowej konfiguracji serwera.

WAŻNE Jeśli przekażesz nieprawidłowe dane, nic nie jest gwarantowane. Zespół wsparcia nie może przywrócić Twojego zamówienia, jeśli nadużyjesz tego endpointu do kupowania migracji. Zalecamy korzystanie z panelu UI.

Żą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/templates

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/template-config

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/template-install-add

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/template-install-delete

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/template-install-retry

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 powiodło się
  • 400 Złe żądanieNieprawidłowe parametry żądania
  • 401 NieautoryzowanyBrakujący lub nieprawidłowy nagłówek uwierzytelniania
  • 403 ForbiddenBrak uprawnień
  • Nie znalezionoZasób nie znaleziony
  • 500 Błąd wewnętrzny serwera: 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 pytań i wsparcia dotyczącego API, skontaktuj się: support@trooper.ai

Konsola API


W przypadku jakichkolwiek pytań dotyczących API prosimy o kontakt: Kontakty z wsparciem