Comment acheter de l'énergie TRON via API en 2026 — Guide pour Vibe Coders et développeurs

Alex Goldsmith
Auteur & chercheur
10 articles
Collez ceci dans votre assistant IA

Automate TRON energy purchases via API.

Copiez ce prompt dans Claude Code, Cursor ou n'importe quel outil IA — vous obtiendrez une intégration fonctionnelle en quelques minutes.

Encore plus simple : MCP — aucun code nécessaire

npx -y @tronrental-com/mcp-server

Le serveur MCP donne à votre assistant IA un accès direct à TronRental. Vous n'avez même pas besoin de vous inscrire sur le site — l'assistant créera un compte, générera une clé API, affichera l'adresse de dépôt et achètera de l'énergie automatiquement. Le tout en langage naturel : « Acheter 65 000 énergie pour l'adresse T... ».

En savoir plus sur MCP →

Ci-dessous — pour ceux qui veulent comprendre les détails et construire l'intégration manuellement.

Pourquoi louer de l'énergie ?

Chaque transfert USDT (TRC-20) sur TRON nécessite de l'énergie. Sans elle, le réseau brûle vos TRX :

  • 65 000 énergie × 100 SUN = 6,43 TRX (~1,60 $) — le destinataire possède des USDT
  • 131 000 énergie × 100 SUN = 13,28 TRX (~3,30 $) — le destinataire ne possède pas d'USDT

Louer de l'énergie via API coûte ~1,80 TRX pour 65K et ~3,60 TRX pour 131K. C'est 72% moins cher.

À 50 transferts par jour, vous économisez ~230 TRX quotidiennement — environ 1 700 $/mois. Difficile de contester les chiffres.

Ce dont vous aurez besoin

  • Un compte sur tronrental.com
  • Une clé API (Tableau de bord → API → Créer une clé)
  • Des TRX sur votre solde (Tableau de bord → Dépôt)
  • 5 minutes

Démarrage rapide : premier achat en 3 étapes

Étape 1 — Vérifier le prix

curl https://api.tronrental.com/v1/prices
{
  "energy_price_sun": 33,
  "energy_price_trx_per_65k": "2.12",
  "energy_price_trx_per_131k": "4.24",
  "burn_cost_trx": "6.43",
  "savings_percent": "67.0"
}

Les prix sont dynamiques, mis à jour toutes les 60 secondes. energy_price_sun est le prix par unité d'énergie. Les autres champs sont pré-calculés pour plus de commodité.

Étape 2 — Acheter de l'énergie

curl -X POST https://api.tronrental.com/v1/energy/buy \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target_address": "TRecipient...", "energy_amount": 65000, "duration": "1h"}'
{
  "order_id": 1842,
  "status": "pending",
  "energy_amount": 65000,
  "price_trx": "2.12",
  "target_address": "TRecipient..."
}

L'énergie est déléguée à target_address — cela peut être votre propre adresse ou celle de quelqu'un d'autre.

Étape 3 — Confirmer la commande

curl https://api.tronrental.com/v1/orders/1842 \
  -H "X-API-Key: YOUR_API_KEY"
{
  "order_id": 1842,
  "status": "filled",
  "energy_amount": 65000,
  "tx_hash": "a1b2c3..."
}

Lorsque le statut devient "filled" — l'énergie a été déléguée. Vous pouvez maintenant envoyer votre transfert USDT.

La même chose en Python

import httpx

API_KEY = "your_api_key"
BASE = "https://api.tronrental.com/v1"
HEADERS = {"X-API-Key": API_KEY}

async def buy_energy(target_address: str, amount: int = 65_000) -> dict:
    async with httpx.AsyncClient() as client:
        resp = await client.post(
            f"{BASE}/energy/buy",
            headers=HEADERS,
            json={"target_address": target_address, "energy_amount": amount, "duration": "1h"},
        )
        resp.raise_for_status()
        return resp.json()

La même chose en JavaScript

const API_KEY = "your_api_key";
const BASE = "https://api.tronrental.com/v1";

async function buyEnergy(targetAddress, amount = 65000) {
  const resp = await fetch(`${BASE}/energy/buy`, {
    method: "POST",
    headers: {
      "X-API-Key": API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      target_address: targetAddress,
      energy_amount: amount,
      duration: "1h",
    }),
  });
  if (!resp.ok) throw new Error(`API error: ${resp.status}`);
  return resp.json();
}

Combien d'énergie acheter ?

ScénarioÉnergiePourquoi
Le destinataire possède des USDT65 000Transfert standard
Le destinataire ne possède pas d'USDT131 000Le premier transfert vers cette adresse coûte 2x

Pas sûr ? Vérifiez avant d'acheter :

curl "https://api.tronrental.com/v1/tools/check-energy?address=TRecipient..."
{
  "has_usdt": true,
  "energy_needed": 64285,
  "rental_cost_trx": "2.12"
}

Limites : minimum 32 000 énergie par commande, maximum 5 000 000.

Location de bande passante

En plus de l'énergie, TRON utilise la bande passante pour toutes les transactions. Chaque adresse activée reçoit 600 bande passante gratuite par jour — suffisant pour 1 transfert USDT. À partir du deuxième transfert, le réseau brûle des TRX pour la bande passante (~0,35 TRX).

Si votre service effectue plusieurs transferts par jour depuis une même adresse — louer de la bande passante est plus économique.

Prix

curl https://api.tronrental.com/v1/bandwidth/prices
{
  "price_per_day_trx": "9.6",
  "min_volume": 350,
  "max_volume": 100000,
  "fixed_fee_trx": "0.2"
}

Formule : (volume / 1000) × 0,4 TRX + 0,2 TRX frais fixes.

Achat

curl -X POST https://api.tronrental.com/v1/bandwidth/buy \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target_address": "TRecipient...", "volume": 350, "duration": "1h"}'

350 bande passante = 1 transfert USDT. Minimum 350, maximum 100 000.

Exemple complet : acheter de l'énergie → envoyer USDT

Cas d'utilisation réel — acheter de l'énergie pour l'adresse de l'expéditeur, attendre la délégation, puis envoyer USDT :

import asyncio
import httpx

API_KEY = "your_api_key"
BASE = "https://api.tronrental.com/v1"
HEADERS = {"X-API-Key": API_KEY}


async def buy_energy_and_wait(target: str, amount: int = 65_000) -> str:
    async with httpx.AsyncClient() as client:
        resp = await client.post(
            f"{BASE}/energy/buy",
            headers=HEADERS,
            json={"target_address": target, "energy_amount": amount, "duration": "1h"},
        )
        data = resp.json()

        if resp.status_code == 400:
            raise Exception(f"Purchase failed: {data.get('detail', data)}")
        resp.raise_for_status()

        order_id = data["order_id"]

        for _ in range(10):
            await asyncio.sleep(3)
            check = await client.get(f"{BASE}/orders/{order_id}", headers=HEADERS)
            order = check.json()
            if order["status"] == "filled":
                return order["tx_hash"]

        raise TimeoutError(f"Order {order_id} not filled after 30s")


async def send_usdt_with_energy(sender: str, recipient: str, amount_usdt: float):
    tx_hash = await buy_energy_and_wait(sender, amount=65_000)
    print(f"Energy delegated: {tx_hash}")
    # ... your USDT transfer logic here (tronpy, tronweb, etc.)

Gestion des erreurs

Statut HTTPSignificationAction à prendre
400Requête invalide (adresse invalide, solde insuffisant)Lire le message d'erreur, corriger et réessayer
429Limite de débit dépassée (100 req/min)Attendre et réessayer avec un délai progressif
5xxErreur serveurRéessayer avec un délai exponentiel progressif

FAQ

Quelle est la rapidité de délégation de l'énergie ?

Généralement 3 à 5 secondes. L'énergie est déléguée on-chain dans le bloc suivant.

Que se passe-t-il si j'achète de l'énergie mais ne fais pas de transfert ?

L'énergie expire après 1 heure. Le coût de location n'est pas remboursé — vous payez pour la délégation, pas pour l'utilisation.

Y a-t-il une limite de débit ?

100 requêtes par minute par clé API. Largement suffisant pour la plupart des cas d'utilisation.

Puis-je acheter de l'énergie pour l'adresse de quelqu'un d'autre ?

Oui. Définissez target_address sur n'importe quelle adresse TRON valide. Vous n'avez pas besoin d'en être le propriétaire.

Où se trouve la documentation complète ?

docs.tronrental.com — tous les endpoints, schémas de requêtes/réponses, configuration des webhooks et plus encore.

C'était utile ?