API RESTful

L'API Trooper AI offre un accès complet à la gestion des serveurs GPU, notamment le provisionnement, la surveillance, la migration et les fonctions administratives. Cette API RESTful vous permet de gérer par programmation votre infrastructure GPU, de créer et de surveiller les commandes de serveurs, de gérer les modèles et d'effectuer des tâches administratives.

Les points de terminaison de l'API et la documentation de l'API sont actuellement en version Beta. Veuillez nous contacter pour tout problème : Contacts Support.

Vous trouverez votre clé API dans la console API.

Tester la console API

Conseil de pro : Donnez simplement cette documentation à votre agent LLM de développement et il l'intégrera dans votre code.


Aperçu

Obtenez un bref aperçu des bases de l'API, telles que l'URL, l'authentification et plus encore :

URL de base

Code
https://james.trooper.ai

Authentification

La plupart des points de terminaison nécessitent une authentification par jeton Bearer en utilisant votre clé API Trooper :

http
Authorization: Bearer YOUR_API_KEY

Obtenez votre clé API depuis Console API.

Format de réponse

Toutes les réponses de l'API sont au format JSON. Les réponses réussies incluent généralement :

  • success: Booléen indiquant le succès de l'opération
  • Champs de données supplémentaires spécifiques au point de terminaison

Les réponses d'erreur incluent :

  • error: Chaîne décrivant l'erreur
  • nextChamp facultatif indiquant la prochaine action à effectuer (par exemple, « connexion »)

Points de terminaison publics

Vérifier l'état du test

GET /api/test

Point de terminaison de test simple pour vérifier la connectivité de l’API.

Requête

http
GET /api/test

Réponse réussie (200)

json
{
  "test": "meinstring5"
}

Obtenir les serveurs GPU disponibles (Public)

GET /api/blibs

Récupérer toutes les configurations de serveurs GPU publiquement disponibles.

Requête

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

Réponse réussie (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
  }
]

Réponse d'erreur (500)

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

Points de terminaison nécessitant une authentification

Obtenir des serveurs GPU privés

GET /api/blibs-private

Récupérer les serveurs GPU accessibles à votre compte, y compris les configurations privées.

Requête

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

Réponse réussie (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"
  }
]

Réponse d'erreur (401)

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

Créer une commande de serveur

POST /api/order

Créez une nouvelle commande de serveur GPU. Vous devez soumettre le prix indiqué, sinon la commande ne sera pas acceptée. Cela garantit que le prix actuel correspond à vos attentes !

Console Open API et Essai

Requête

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

Corps de la requête

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

Réponse réussie (200)

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

Réponse d'erreur (400)

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

Réponse d'erreur (400)

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

Obtenez vos commandes de serveur

GET /api/orders

Récupérez toutes vos commandes de serveur avec des informations détaillées.

Lorsque vous gérez les statuts des serveurs, tenez compte de l'interaction entre desired_status et current_statusPar exemple, un serveur peut avoir un desired_status d'"arrêté", mais son current_status pourrait encore être "en cours d'exécution" si le processus d'arrêt est en cours. Votre application doit tenir compte de ces transitions et les gérer en conséquence.

Requête

http
GET /api/orders
Authorization: Bearer YOUR_API_KEY

Paramètres de requête

  • machine_name (facultatif) : Filtrer par nom de machine spécifique

Réponse réussie (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"
      }
    ]
  }
]

Réponse d'erreur (401)

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

Mettre à jour le statut du serveur

POST /api/order-status

Mettez à jour le statut de votre commande de serveur (en cours d'exécution, arrêté, redémarré, gelé).

Définir "migration_allowed": true si vous approuvez la migration de l'hôte lors du passage d'un état gelé à un état en cours d'exécution. Ce processus peut prendre 10 à 90 minutes et modifier la plage de ports ainsi que potentiellement le modèle/vitesse du CPU.

Requête

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

Corps de la requête

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

Réponse réussie (200)

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

Erreur de réponse (403)

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

Mettre à jour le titre du serveur

POST /api/order-title

Mettez à jour le titre d’affichage de votre serveur.

Requête

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

Corps de la requête

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

Réponse réussie (200)

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

Verrouiller/Déverrouiller le serveur

POST /api/order-lock

Verrouiller ou déverrouiller un serveur pour empêcher/autoriser les modifications d'état.

Requête

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

Corps de la requête

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

Réponse réussie (200)

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

Obtenir les informations d'identification du serveur

POST /api/credentials

Récupérer les identifiants SSH et les détails de connexion de votre serveur.

Requête

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

Corps de la requête

json
{
  "serverId": 123
}

Réponse réussie (200)

json
{
  "success": true,
  "ip": "192.168.1.100",
  "ssh_port": 22001,
  "username": "root",
  "password": "generated-password",
  "status": "running"
}

Erreur de réponse (403)

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

Historique du statut du serveur

GET /api/order-status-history

Obtenir les 5 derniers changements d'état d'une commande de serveur.

Requête

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

Réponse réussie (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"
    }
  ]
}

Points de migration

La migration est utilisée pour configurer votre serveur GPU avec une configuration différente. Nous ne recommandons pas d'utiliser cette option pour la production. Mais vous pouvez essayer si vous le souhaitez !

Obtenir les options de migration

GET /api/migration-options

Obtenir les configurations serveur disponibles pour la migration.

Requête

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

Réponse réussie (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
    }
  ]
}

Calculer le coût de la migration

POST /api/migration-cost

Calculer le coût de migration vers une configuration serveur différente.

Requête

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

Corps de la requête

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

Réponse réussie (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"
  }
}

Exécuter la migration

POST /api/buy-migration

Exécuter la migration vers une nouvelle configuration de serveur.

IMPORTANT Si vous fournissez des données invalides ici, rien n'est garanti. L'équipe de support ne peut pas restaurer votre commande si vous utilisez abusivement ce point de terminaison pour acheter des migrations. Nous vous recommandons d'utiliser le Tableau de bord de l'interface utilisateur.

Requête

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

Corps de la requête

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

Réponse réussie (200)

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

Réponse d'erreur (400)

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

Gestion des modèles

Obtenir les modèles disponibles

GET /api/templates

Obtenez tous les modèles logiciels disponibles.

Requête

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

Réponse réussie (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"
      }
    ]
  }
]

Obtenir la configuration du modèle

GET /api/template-config

Obtenir la configuration d'installation du modèle pour une commande spécifique.

Requête

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

Réponse réussie (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"
      }
    }
  ]
}

Installer le modèle

POST /api/template-install-add

Installer un nouveau modèle sur votre serveur.

Requête

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

Corps de la requête

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

Réponse réussie (200)

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

Supprimer le modèle

POST /api/template-install-delete

Supprimer une installation de modèle de votre serveur.

Requête

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

Corps de la requête

json
{
  "install_id": 5
}

Réponse réussie (200)

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

Réessayer l'installation du modèle

POST /api/template-install-retry

Réessayer une installation de modèle ayant échoué.

Requête

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

Corps de la requête

json
{
  "install_id": 5
}

Réponse réussie (200)

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

Codes d'erreur

Codes d'état HTTP

  • 200 OKDemande réussie
  • 400 Mauvaise requête: Paramètres de requête non valides
  • 401 Non autoriséAuthentification manquante ou invalide
  • 403 InterditPermissions insuffisantes
  • 404 Non trouvéRessource introuvable
  • Erreur interne du serveur 500: Erreur serveur

Messages d'erreur courants

  • "Missing or invalid Authorization header": Authentification requise
  • "Invalid Trooper key"Clé API invalide
  • "Unauthorized access"Permissions insuffisantes
  • "You must accept the terms and conditions"Conditions d'utilisation non acceptées lors de la création de la commande
  • "Invalid or missing contract interval"L'intervalle du contrat doit être HEURE, SEMAINIER ou MENSUEL.
  • "Insufficient budget"Budget insuffisant pour l'opération
  • "Server is locked and cannot be modified"Serveur verrouillé pour les modifications

Limitation de débit

Les points de terminaison de l'API peuvent être limités pour éviter les abus. Si vous dépassez la limite de débit, vous recevrez un code d'état 429. Mettez en œuvre une logique de nouvelle tentative appropriée avec un retour exponentiel.

Support

Pour obtenir de l’assistance et des informations sur l’API, veuillez contacter : support@trooper.ai

Console API ouverte


Pour toute question relative à l’API, veuillez nous contacter : Contacts Support