API del Server GPU (RESTful)

L'API di Trooper.AI offre un accesso completo alla gestione dei GPU Server, inclusi la configurazione, il monitoraggio, la migrazione e le funzioni amministrative. Questa API RESTful Le consente di gestire in modo programmatico la Sua infrastruttura GPU, creare e monitorare ordini per server, gestire modelli e svolgere compiti amministrativi.

Gli endpoint API e la documentazione dell'API sono attualmente in fase Beta. Contattaci per qualsiasi problema: Contatti di Assistenza.

Trova la Sua chiave API nella Console API.

Prova in API Playground

Consiglio pratico: Basta fornire questa documentazione al Suo agente LLM di Sviluppo e lo integrerà automaticamente nel codice.


Panoramica

Ottenga una panoramica rapida sui concetti base dell'API come URL, autenticazione e altro:

URL di base

Codice
https://james.trooper.ai

Autenticazione

La maggior parte degli endpoint richiede autenticazione con Bearer token utilizzando la Sua chiave Trooper API:

http
Authorization: Bearer YOUR_API_KEY

Ottenga la Sua chiave API dalla API Console.

Formato della risposta

Tutte le risposte dell'API sono in formato JSON. Le risposte di successo includono tipicamente:

  • success: Boolean che indica il successo dell'operazione
  • Campi dati aggiuntivi specifici per l'endpoint

Le risposte di errore includono:

  • error: String che descrive l’errore
  • next: Campo facoltativo che suggerisce la prossima azione da compiere (es. «login»)

Punti di Estremo Pubblici

Ottenga Stato di Test

GET /api/test

Punto di accesso di test semplice per verificare la connettività dell'API.

Richieda

http
GET /api/test

Risposta di successo (200)

json
{
  "test": "meinstring5"
}

Ottieni i GPU Server Disponibili (Pubblici)

GET /api/blibs

Recuperi tutte le configurazioni pubblicamente disponibili dei GPU Server.

Richieda

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

Risposta di successo (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
  }
]

Risposta di Errore (500)

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

Endpoint che richiedono autenticazione

Ottieni i GPU Server Privati

GET /api/blibs-private

Recuperi i GPU Server accessibili al Suo account, inclusi i configurazioni private.

Richieda

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

Risposta di successo (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"
  }
]

Risposta di errore (401)

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

Crea Ordine di Macchina

POST /api/order

Crea un nuovo ordine per il GPU Server. Lei deve inserire il prezzo fornito, altrimenti l'ordine non verrà accettato. Questo garantisce che il prezzo attuale corrisponda alle Sue aspettative!

Apri Console API & Prova

Richieda

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

Corpo della richiesta

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

Risposta di successo (200)

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

Risposta di Errore (400)

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

Risposta di Errore (400)

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

Recuperi i Suoi Ordini di Server

OTTENI /api/ordini

Recuperi tutti i Suoi ordini di server con informazioni dettagliate.

Nel gestire gli status del server, tenga conto dell'interazione tra desired_status e current_status. Ad esempio, un server potrebbe avere un desired_status di «fermo», ma il suo current_status potrebbe ancora essere "in esecuzione" se il processo di arresto è in corso. La Sua applicazione deve tenere conto di queste transizioni e gestirle di conseguenza.

Richieda

http
GET /api/orders
Authorization: Bearer YOUR_API_KEY

Parametri di query

  • machine_name (facoltativo): Filtra per nome specifico della macchina

Risposta di successo (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"
      }
    ]
  }
]

Risposta di errore (401)

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

Aggiornamento dello stato del server

POST /api/order-status

Aggiorni il Suo stato dell'ordine del server (in esecuzione, fermato, riavviato, congelato, terminato).

Impostare "migration_allowed": true Se Lei approva la migrazione dell'host durante il passaggio da uno stato congelato a quello attivo, questo processo potrebbe richiedere 10–90 minuti e modificare la Ports Range nonché eventualmente il modello/velocità della CPU.

Richieda

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

Corpo della richiesta

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

Risposta di successo (200)

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

Risposta di Errore (403)

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

Aggiorna Titolo del Server

POST /api/order-title

Aggiorni il titolo di visualizzazione della Sua macchina.

Richieda

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

Corpo della richiesta

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

Risposta di successo (200)

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

Bloccare/Sbloccare la macchina

POST /api/order-lock

Bloccare o sbloccare un server per impedire/consentire modifiche allo stato.

Richieda

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

Corpo della richiesta

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

Risposta di successo (200)

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

Recupero credenziali del Server

POST /api/credentials

Recuperi le credenziali SSH e i dettagli di connessione per la Sua macchina.

Richieda

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

Corpo della richiesta

json
{
  "serverId": 123
}

Risposta di successo (200)

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

Risposta di Errore (403)

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

Recupera cronologia stato del server

GET /api/storia-stato-ordine

Recuperi gli ultimi 5 cambiamenti di stato per un ordine di macchina.

Richieda

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

Risposta di successo (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"
    }
  ]
}

Punti di migrazione

La migrazione viene utilizzata per portare il Suo GPU Server a una configurazione diversa. Non raccomandiamo di utilizzarla per ambienti di produzione. Tuttavia, può provare se lo desidera!

Ottieni opzioni di migrazione

GET /api/migration-options

Ottenga le configurazioni disponibili del server per la migrazione.

Richieda

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

Risposta di successo (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
    }
  ]
}

Calcolo Costo Migrazione

POST /api/migration-cost

Calcoli il costo per migrare a una configurazione di server diversa.

Richieda

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

Corpo della richiesta

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

Risposta di successo (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"
  }
}

Esegui Migrazione

POST /api/buy-migration

Esegua la migrazione alla nuova configurazione della macchina.

IMPORTANTE Se invia dati non validi qui, nulla è garantito. Il team di supporto non può ripristinare il Suo ordine se Lei utilizza impropriamente questa endpoint per l'acquisto di migrazioni. Le raccomandiamo di utilizzare l’UI Dashboard.

Richieda

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

Corpo della richiesta

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

Risposta di successo (200)

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

Risposta di Errore (400)

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

Gestione Modelli

Ottieni Modelli Disponibili

GET /api/templates

Ottieni tutti i modelli software disponibili.

Richieda

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

Risposta di successo (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"
      }
    ]
  }
]

Recupera configurazione modello

GET /api/configurazione-template

Recuperi la configurazione di installazione del template per un ordine specifico.

Richieda

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

Risposta di successo (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"
      }
    }
  ]
}

Installa Modello

POST /api/installazione-template-add

Installa un nuovo template sulla Sua macchina.

Richieda

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

Corpo della richiesta

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

Risposta di successo (200)

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

Rimuova modello

POST /api/template-install-elimina

Rimuova un'installazione di template dal Suo server.

Richieda

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

Corpo della richiesta

json
{
  "install_id": 5
}

Risposta di successo (200)

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

Ripristino dell'installazione del template

POST /api/template-install-retry

Riavvio l'installazione di un template fallita.

Richieda

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

Corpo della richiesta

json
{
  "install_id": 5
}

Risposta di successo (200)

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

Codici di Errore

Codici di stato HTTP

  • 200 OK: Richiesta completata con successo
  • 400 Bad Request: Parametri della richiesta non validi
  • 401 Non autorizzato: Autenticazione mancante o non valida
  • 403 Forbidden: Permessi insufficienti
  • 404 Non trovato: Risorsa non trovata
  • Errore Interno del Server 500: Errore del server

Messaggi di errore comuni

  • "Missing or invalid Authorization header": Autenticazione richiesta
  • "Invalid Trooper key": Chiave API non valida
  • "Unauthorized access": Permessi insufficienti
  • "You must accept the terms and conditions": I termini non sono stati accettati durante la creazione dell'ordine
  • "Invalid or missing contract interval": L'intervallo contrattuale deve essere HOUR, WEEK o MONTH
  • "Insufficient budget": Budget insufficiente per l'operazione
  • "Server is locked and cannot be modified": La macchina è bloccata e non può essere modificata

Limite delle richieste

Gli endpoint API potrebbero essere soggetti a rate-limiting per prevenire abusi. Se supera il limite di richieste, riceverà uno status code 429. Implemeniti una logica di retry con backoff esponenziale.

Assistenza

Per il supporto dell'API e domande, contatti: [email protected]

Apri la Console API


Per qualsiasi domanda relativa all'API, contatti pure Support Contacts