> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aihubmix.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Récupérer les informations de compte via l'API

> Gérez vos clés, consultez vos comptes et la liste des modèles disponibles en ligne de commande grâce au script utilitaire AiHubMix CLI.

L'AiHubMix CLI est un ensemble de scripts utilitaires qui vous permet de gérer vos clés API AiHubMix, d'interroger les informations de compte et d'utiliser les services d'IA sans passer par une interface web. Il encapsule essentiellement des appels d'API (avec curl ou Python requests) pour plus de commodité en ligne de commande.

<Tip>
  Nous recommandons d'utiliser le nouvel outil en ligne de commande [AIHubMix CLI (outil en ligne de commande)](/fr/api/aihubmix-cli) : binaire unique, zéro dépendance à l'exécution (sans Python), proposant des commandes par ressource telles que `aihubmix keys list`, et adapté à `jq` ainsi qu'aux agents IA. Cette page conserve l'usage de l'ancien script Python à titre de référence.
</Tip>

## Prérequis

Avant d'utiliser l'AiHubMix CLI, vous devez :

1. Disposer d'un [compte AIHubMix](https://aihubmix.com)
2. Générer un Access Token en cliquant sur « Generate System Access Token » sur la [page Paramètres d'AIHubMix](https://aihubmix.com/setting) ;
3. Installer les dépendances Python nécessaires :

```bash theme={null}
pip install -U requests openai
```

<Info>
  Le script aihubmix\_cli.py peut être [téléchargé ici](https://github.com/jerlinn/inferHub)
</Info>

## Aperçu des fonctionnalités

L'AIHubMix CLI offre les fonctionnalités clés suivantes :

### Aperçu des endpoints API

| Endpoint                     | Méthode HTTP | Description                                                              |
| ---------------------------- | ------------ | ------------------------------------------------------------------------ |
| `/api/user/self`             | GET          | Récupère les informations de l'utilisateur courant et le solde du compte |
| `/api/token/`                | GET          | Récupère la liste de toutes les clés                                     |
| `/api/token/`                | POST         | Crée une nouvelle clé API                                                |
| `/api/token/`                | PUT          | Met à jour une clé API existante                                         |
| `/api/token/{token_id}`      | GET          | Récupère les informations détaillées d'une clé spécifique                |
| `/api/token/{token_id}`      | DELETE       | Supprime une clé spécifique                                              |
| `/api/token/search`          | GET          | Recherche des clés (utiliser `?keyword=search_term`)                     |
| `/api/user/token`            | GET          | Récupère les clés utilisateur                                            |
| `/api/user/available_models` | GET          | Récupère la liste des modèles disponibles pour l'utilisateur courant     |

### Récupérer les informations de solde

<CodeGroup>
  ```shell theme={null}
  # Using curl to retrieve balance, balance is quota / 500000
  curl -X GET "https://aihubmix.com/api/user/self" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py theme={null}
  import requests
  import json

  # API Configuration
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # Retrieve account balance
  response = requests.get(f"{api_url}/api/user/self", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          user_data = data.get("data", {})
          quota = user_data.get('quota', 0)
          usd_balance = quota / 500000  # $1 equals 500,000 quota
          print(f"Username: {user_data.get('username', 'Unknown')}")
          print(f"Display Name: {user_data.get('display_name', 'Unknown')}")
          print(f"Current Quota: {quota}")
          print(f"Available USD: ${usd_balance:.2f}")
      else:
          print(f"Request failed: {data.get('message', 'Unknown error')}")
  else:
      print(f"Request failed, status code: {response.status_code}")
  ```

  ```shell theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_balance
  ```

  ```shell theme={null}
  # Retrieve remaining quota for Key
  curl 'https://aihubmix.com/dashboard/billing/remain' \
    -H 'authorization: Bearer sk-***' \
  ```
</CodeGroup>

### Gestion des clés

#### Créer une nouvelle clé

<CodeGroup>
  ```shell theme={null}
  curl -X POST "https://aihubmix.com/api/token/" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "New Key Name",
      "expired_time": -1,
      "remain_quota": 500000,
      "unlimited_quota": false,
      "subnet": ""
    }'
  ```

  ```py theme={null}
  import requests
  import json

  # API Configuration
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # Create New Key
  payload = {
      "name": "New Key Name",
      "expired_time": -1,  # Never expires
      "remain_quota": 500000,
      "unlimited_quota": False,
      "subnet": ""
  }

  response = requests.post(f"{api_url}/api/token/", headers=headers, json=payload)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          token_data = data.get("data", {})
          print(f"New Key: {token_data.get('key', 'Unknown')}")
          print(f"Key ID: {token_data.get('id', 'Unknown')}")
      else:
          print(f"Failed to create Key: {data.get('message', 'Unknown error')}")
  else:
      print(f"Request failed, status code: {response.status_code}")
  ```

  ```shell theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action create_token --name "New Key Name" --expires -1 --quota 500000
  ```
</CodeGroup>

#### Récupérer la liste des clés

<CodeGroup>
  ```shell theme={null}
  curl -X GET "https://aihubmix.com/api/token/?num=20" \ # Adjust num parameter to change the number of output data.
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py theme={null}
  import requests
  import json

  # API Configuration
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # Retrieve Key List
  response = requests.get(f"{api_url}/api/token/", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          tokens_data = data.get("data", [])
          print(f"Key List (Total {len(tokens_data)}):")
          for token in tokens_data:
              print(f"Key ID: {token.get('id', 'Unknown')}")
              print(f"Key Name: {token.get('name', 'Unknown')}")
              print(f"Key: {token.get('key', 'Unknown')}")
              print("---")
      else:
          print(f"Failed to retrieve Key list: {data.get('message', 'Unknown error')}")
  else:
      print(f"Request failed, status code: {response.status_code}")
  ```

  ```shell theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_tokens
  ```
</CodeGroup>

#### Rechercher une clé

<CodeGroup>
  ```shell theme={null}
  curl -X GET "https://aihubmix.com/api/token/search?keyword=search_term" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py theme={null}
  import requests
  import json

  # API Configuration
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # Search Keyword
  query = "search_term"

  # Search Key
  response = requests.get(f"{api_url}/api/token/search?keyword={query}", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          tokens_data = data.get("data", [])
          print(f"Search Results (Total {len(tokens_data)}):")
          for token in tokens_data:
              print(f"Key ID: {token.get('id', 'Unknown')}")
              print(f"Key Name: {token.get('name', 'Unknown')}")
              print(f"Key: {token.get('key', 'Unknown')}")
              print("---")
      else:
          print(f"Failed to search Key: {data.get('message', 'Unknown error')}")
  else:
      print(f"Request failed, status code: {response.status_code}")
  ```

  ```shell theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action search_tokens --query "search_term"
  ```
</CodeGroup>

#### Mettre à jour une clé

<CodeGroup>
  ```shell theme={null}
  curl -X PUT "https://aihubmix.com/api/token/" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "id": "Key_ID",
      "name": "New Name",
      "expired_time": 86400,
      "remain_quota": 100000,
      "status": 1
    }'
  ```

  ```py theme={null}
  import requests
  import json

  # API Configuration
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # Update Key
  key_id = "Key_ID"  # Replace with the actual Key ID
  payload = {
      "id": key_id,
      "name": "New Name",
      "expired_time": 86400,  # Expires after 24 hours
      "remain_quota": 100000,
      "status": 1  # 1-Enabled, 0-Disabled
  }

  response = requests.put(f"{api_url}/api/token/", headers=headers, json=payload)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          print(f"Key updated successfully")
          if "data" in data:
              token_data = data.get("data", {})
              print(f"Name: {token_data.get('name', 'Unknown')}")
              print(f"Expiration Time: {token_data.get('expired_time', 'Unknown')}")
      else:
          print(f"Failed to update Key: {data.get('message', 'Unknown error')}")
  else:
      print(f"Request failed, status code: {response.status_code}")
  ```

  ```shell theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action update_token --id "Key_ID" --name "New Name" --expires 86400 --quota 100000 --status 1
  ```
</CodeGroup>

#### Supprimer une clé

<CodeGroup>
  ```shell theme={null}
  curl -X DELETE "https://aihubmix.com/api/token/Key_ID" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py theme={null}
  import requests
  import json

  # API Configuration
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # Delete Key
  key_id = "Key_ID"  # Replace with the actual Key ID

  response = requests.delete(f"{api_url}/api/token/{key_id}", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          print(f"Key deleted successfully")
      else:
          print(f"Failed to delete Key: {data.get('message', 'Unknown error')}")
  else:
      print(f"Request failed, status code: {response.status_code}")
  ```

  ```shell theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action delete_token --id "Key_ID"
  ```
</CodeGroup>

#### Récupérer la clé utilisateur

<CodeGroup>
  ```shell theme={null}
  curl -X GET "https://aihubmix.com/api/user/token" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py theme={null}
  import requests
  import json

  # API Configuration
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # Retrieve User Key
  response = requests.get(f"{api_url}/api/user/token", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          user_token = data.get("data", {}).get("token")
          print(f"User Key: {user_token}")
      else:
          print(f"Failed to retrieve User Key: {data.get('message', 'Unknown error')}")
  else:
      print(f"Request failed, status code: {response.status_code}")
  ```

  ```shell theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_user_token
  ```
</CodeGroup>

### Gestion des modèles

#### Récupérer les modèles disponibles de l'utilisateur

<CodeGroup>
  ```shell theme={null}
  curl -X GET "https://aihubmix.com/api/user/available_models" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py theme={null}
  import requests
  import json

  # API Configuration
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # Retrieve User's Available Models
  response = requests.get(f"{api_url}/api/user/available_models", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          models_data = data.get("data", [])
          print(f"User's Available Model List (Total {len(models_data)}):")
          for i, model in enumerate(models_data, 1):
              print(f"  {i}. {model}")
      else:
          print(f"Failed to retrieve user's available models: {data.get('message', 'Unknown error')}")
  else:
      print(f"Request failed, status code: {response.status_code}")
  ```

  ```shell theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_available_models
  ```
</CodeGroup>

## Sortie au format JSON

Toutes les commandes de la CLI prennent en charge la sortie des résultats au format JSON, ce qui facilite le traitement programmatique :

```bash theme={null}
python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_balance --json
```

## Dépannage

Si vous rencontrez des problèmes, vous pouvez essayer les solutions suivantes :

1. **Problèmes de connexion** : si le domaine principal échoue à se connecter, essayez d'utiliser un autre domaine :

   ```bash theme={null}
   python aihubmix_cli.py --url "https://api.aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_balance
   ```
2. **Access Token invalide** : assurez-vous que l'access token fourni est une clé valide obtenue depuis le site AIHubMix. Le format de l'access token est généralement de type `fd***`.
3. **Permissions insuffisantes** : certaines opérations peuvent nécessiter des permissions spécifiques, vérifiez que votre compte dispose des permissions adéquates.
4. **Échec de la requête** : vérifiez votre connexion réseau ou réessayez ultérieurement.

## Remarques

* L'access token est différent de la clé API normale utilisée pour accéder aux modèles d'IA.
* Chaque utilisateur dispose de son propre access token système, et le niveau d'accès est déterminé par le rôle de l'utilisateur (utilisateur régulier, administrateur ou utilisateur root).

***

Dernière mise à jour : 2026-06-01
