</> REST API v1

TRONENS API

Vollständiger TRONENS-API-v1-Vertrag: Preise, Energy-Schätzung, Auftragserstellung, Status, Guthaben und Webhooks.

Anmelden

Antwortformat

Eine echte API-Antwort enthält immer success und bei Erfolg data. Fehler enthalten einen maschinenlesbaren error-Code. Die Diagnosedatei zeigt zusätzlich method, url, http_code, duration_ms, request, response und curl_error; diese Felder gehören nicht zur öffentlichen API. Die echte TRONENS-Antwort steht im Feld response des Testers.

{
  "success": true,
  "data": { ... }
}
{
  "success": false,
  "error": "ERROR_CODE"
}

Authentifizierung

Authorization: Bearer te_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

Bearer-Token im Authorization-Header senden. Der Schlüssel wird im Konto erstellt und nur einmal vollständig angezeigt.

ScopeZugriff
quotePreis + Energy-Schätzung
orders:createAuftrag erstellen + Bulk API
orders:readAuftragsstatus
balanceGuthaben

Pro Schlüssel sind IP-Whitelist, Limit pro Minute und Ablaufdatum möglich. Antworten enthalten X-RateLimit-Limit und X-RateLimit-Remaining; bei 429 auch Retry-After.

GET/api/v1/quote/

Preis

Gibt den Kundenpreis inklusive Kontorabatt zurück.

GET /api/v1/quote/?package_id=1&duration_minutes=15
GET /api/v1/quote/?energy_amount=65000&duration_minutes=60
FeldBedeutung
typePreisart: package oder custom.
package_idPaket-ID; nur bei package.
namePaketname; nur bei package.
energy_amountEnergy-Menge, die der Kunde kauft.
duration_minutesMietdauer in Minuten.
base_price_trxPreis vor dem Kontorabatt.
discount_percentTatsächlich angewendeter Rabatt in Prozent.
discount_trxRabattbetrag in TRX.
price_trxEndbetrag, der dem Kunden belastet wird.

Beispielantwort

{
  "success": true,
  "data": {
    "type": "custom",
    "energy_amount": 65000,
    "duration_minutes": 60,
    "base_price_trx": 1.961,
    "discount_percent": 0,
    "discount_trx": 0,
    "price_trx": 2.05
  }
}
POST/api/v1/estimate/

Energy-Schätzung

Schätzt den benötigten Energy-Betrag für eine TRON-Empfängeradresse.

{
  "recipient_address": "T...",
  "has_usdt": true
}
FeldBedeutung
recipient_addressTRON-Empfängeradresse.
has_usdtOptionales boolean: ob USDT TRC20 verwendet wird.
FeldBedeutung
estimated_energyGeschätzter benötigter Energy-Betrag.
recommended_packagePassendes aktives Paket oder null.

Beispielantwort

{
  "success": true,
  "data": {
    "estimated_energy": 65000,
    "recommended_package": {
      "id": 1,
      "name": "65 000 Energy",
      "energy_amount": 65000,
      "duration_minutes": 15
    }
  }
}
POST/api/v1/order/

Auftrag erstellen

Erstellt einen echten Auftrag und belastet das interne TRX-Guthaben. Die Empfängeradresse muss zuvor im TRON-Netzwerk aktiviert sein. Neue API-Aufträge werden asynchron mit HTTP 202 angenommen. external_id sollte immer verwendet werden; Wiederholung liefert den bestehenden Auftrag ohne zweite Belastung.

{
  "external_id": "merchant_93481",
  "package_id": 1,
  "duration_minutes": 15,
  "address": "T..."
}
FeldBedeutung
external_idIhre eindeutige ID (max. 128 Zeichen: A-Z, a-z, 0-9, . _ : -).
package_idPackage ID. Use package_id OR energy_amount.
energy_amountCustom Energy amount. Custom uses the available duration, currently 60 min.
duration_minutesRental duration.
addressRecipient TRON address.
FeldBedeutung
order_idTRONENS-Auftrags-ID.
external_idIhre Auftrags-ID für Idempotenz und Statussuche.
statusAktueller öffentlicher Auftragsstatus.
idempotenttrue bedeutet: external_id existierte bereits; kein neuer Auftrag.

Beispielantwort

HTTP 202
{
  "success": true,
  "data": {
    "order_id": 123,
    "external_id": "merchant_93481",
    "status": "processing",
    "idempotent": false
  }
}
POST

Bulk API

/api/v1/orders/bulk/

Erstellt bis zu 50 Aufträge in einem Request. Jeder Eintrag hat eine eigene external_id und ein accepted/failed-Ergebnis. Erfordert orders:create.

Request-Felder

{
  "orders": [
    {"external_id":"bulk-001","package_id":1,"duration_minutes":15,"address":"T..."},
    {"external_id":"bulk-002","energy_amount":65000,"duration_minutes":60,"address":"T..."}
  ]
}

1–50 Aufträge · Berechtigung: orders:create · HTTP 202 / 207

Beispielantwort

{
  "success": true,
  "data": {
    "accepted": 1,
    "failed": 1,
    "results": [
      {"index":0,"external_id":"bulk-001","status":"accepted","order":{"id":123}},
      {"index":1,"external_id":"bulk-002","status":"failed","error":"INVALID_TRON_ADDRESS"}
    ]
  }
}
GET/api/v1/status/

Auftragsstatus

Gibt die aktuellen Auftragsdaten und den Status zurück.

GET /api/v1/status/?id=123
GET /api/v1/status/?external_id=merchant_93481
FeldBedeutung
idTRONENS-Auftrags-ID.
external_idIhre externe ID oder null.
addressTRON-Empfängeradresse.
energy_amountBestellte Energy-Menge.
duration_minutesMietdauer in Minuten.
price_trxFür den Auftrag belasteter TRX-Betrag.
statusAktueller Status.
txidDelegations-TXID, falls verfügbar; sonst null.
refundedtrue, wenn der Betrag bereits auf das Kontoguthaben zurückerstattet wurde.
error_codeSicherer öffentlicher Code: ORDER_REVIEW, ORDER_FAILED oder null.
created_atErstellungszeit.
delivered_atBestätigte Energy-Lieferzeit oder null.
completed_atZeitpunkt des vollständigen Mietendes oder null.
updated_atZeit der letzten Änderung.

Zeitfelder verwenden YYYY-MM-DD HH:MM:SS in der TRONENS-Serverzeitzone.

Beispielantwort

{
  "success": true,
  "data": {
    "id": 123,
    "external_id": "merchant_93481",
    "address": "T...",
    "energy_amount": 65000,
    "duration_minutes": 15,
    "price_trx": 1.14,
    "status": "delegated",
    "txid": "...",
    "refunded": false,
    "error_code": null,
    "created_at": "2026-10-03 18:01:00",
    "delivered_at": "2026-10-03 18:01:12",
    "completed_at": null,
    "updated_at": "2026-10-03 18:01:12"
  }
}

Status

StatusBedeutung
processingAngenommen und wird verarbeitet.
delegatingDelegation wird gesendet oder wartet auf Bestätigung.
delegatedEnergy geliefert; Miete ist aktiv.
undelegatingMietdauer beendet; Ressource wird zurückgeholt.
completedMietvorgang vollständig abgeschlossen.
reviewZusätzliche Prüfung erforderlich. Keinen doppelten Auftrag erstellen.
failedBestätigter Fehler. refunded zeigt, ob bereits erstattet wurde.
GET/api/v1/balance/

Guthaben

Aktuell verfügbares TRX-Guthaben des Kontos.

FeldBedeutung
balance_trxVerfügbares Kundenguthaben in TRX.
{"success":true,"data":{"balance_trx":125.5}}

Webhook

Webhooks senden Auftragsdaten bei Statusänderungen. Die Signatur anhand des rohen JSON-Bodys und des Webhook-Secrets prüfen.

X-Webhook-Event: order.delegated
X-Webhook-Id: order-123-order.delegated-...
X-Webhook-Signature: sha256=<hex_hmac>

expected = HMAC_SHA256(raw_json_body, webhook_secret)
{
  "event": "order.delegated",
  "event_id": "order-123-order.delegated-...",
  "created_at": "2026-10-03T15:01:12Z",
  "data": {
    "order_id": 123,
    "external_id": "merchant_93481",
    "address": "T...",
    "energy_amount": 65000,
    "duration_minutes": 15,
    "price_trx": 1.14,
    "status": "delegated",
    "txid": "...",
    "refunded": false,
    "error_code": null,
    "created_at": "2026-10-03 18:01:00",
    "delivered_at": "2026-10-03 18:01:12",
    "completed_at": null,
    "updated_at": "2026-10-03 18:01:12"
  }
}

Events: order.processing, order.delegating, order.delegated, order.undelegating, order.completed, order.review, order.failed. HTTP 2xx gilt als erfolgreiche Zustellung; temporäre Fehler werden bis zu 8-mal mit Backoff wiederholt. Nach event_id deduplizieren.

Fehler

error-Codes sind für die programmgesteuerte Verarbeitung gedacht. Verwenden Sie HTTP-Status und das Feld error.

HTTPerrorBedeutung
401UNAUTHORIZED / TOKEN_EXPIREDUngültiger oder abgelaufener API-Schlüssel.
403SCOPE_FORBIDDEN / IP_NOT_ALLOWEDErforderlicher Scope fehlt oder IP ist nicht erlaubt.
402INSUFFICIENT_BALANCEUnzureichendes TRX-Guthaben.
400INVALID_JSONUngültiger JSON-Body.
413REQUEST_TOO_LARGEJSON-Body ist zu groß.
400ID_REQUIREDStatus benötigt id oder external_id.
404NOT_FOUND / PACKAGE_NOT_FOUNDAuftrag oder Paket nicht gefunden.
422EXTERNAL_ID_INVALIDexternal_id ist ungültig.
422INVALID_TRON_ADDRESSUngültige TRON-Adresse.
422ADDRESS_NOT_ACTIVEDie TRON-Adresse ist noch nicht aktiviert. Aktivieren Sie sie vor dem Auftrag.
422PRODUCT_REQUIRED / PRODUCT_SELECTOR_CONFLICTGenau einen Parameter package_id oder energy_amount angeben.
422CUSTOM_ENERGY_DISABLEDCustom-Energy ist derzeit deaktiviert.
422CUSTOM_ENERGY_OUT_OF_RANGECustom-Energy liegt außerhalb der aktuellen Limits.
422CUSTOM_ENERGY_INVALID_STEPCustom-Energy entspricht nicht der konfigurierten Schrittweite.
422RENTAL_DURATION_UNAVAILABLE / CUSTOM_DURATION_UNAVAILABLE / DURATION_PRICE_UNAVAILABLEGewünschte Mietdauer ist nicht verfügbar.
503SERVICE_UNAVAILABLEDienst vorübergehend nicht verfügbar; später erneut versuchen.
429RATE_LIMITEDAnfragelimit des API-Schlüssels überschritten.
405METHOD_NOT_ALLOWEDFalsche HTTP-Methode. Verwenden Sie die dokumentierte Methode.