عنوان URL الأساسي: https://api.tronnrg.com المصادقة: لا توجد متطلبات. جميع نقاط النهاية عامة. حد المعدل: 20 طلب/ثانية لكل عنوان IP عنوان الدفع: TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx (API فقط، وليس للتأجيرات اليدوية)

كيفية العمل

ثلاث خطوات. بدون مفتاح API، بدون تسجيل، بدون توصيل محفظة. يتم إثبات الملكية بشكل تشفيري.

  1. أرسل TRX — أرسل 4 TRX (أو أكثر) إلى عنوان الدفع. 4 TRX = 65,000 طاقة. 8 TRX = 130,000. خطي تماماً.
  2. وقّع — وقّع الرسالة {tx_hash}:{delegate_to} باستخدام المحفظة التي أرسلت TRX. هذا يثبت أنك أذنت بتفويض الطاقة.
  3. استلمPOST /delegate مع tx_hash، delegate_to، وsignature. تصل الطاقة في حوالي 3 ثوان.

عنوان الدفع

TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx
عنوان دفع API فقط. هذا العنوان مخصص للتكاملات البرمجية عبر API. لا تستخدمه لتأجير الطاقة اليدوي. عنوان التأجير اليدوي مختلف ومتاح على .tronnrg.com.

أرسل TRX إلى هذا العنوان. بصمة معاملتك هي رمزك لتفعيل تفويض الطاقة. لا يمكن استخدام كل بصمة سوى مرة واحدة.

TRX المرسلةالطاقة المفوضةحالة الاستخدام
4 TRX65,000تحويل USDT قياسي إلى محفظة موجودة (الحد الأدنى للطلب)
8 TRX130,000تحويل USDT إلى متلقٍ لأول مرة
16 TRX260,000أربع تحويلات قياسية في طلب واحد
40 TRX650,000عشرة تحويلات قياسية
100 TRX1,625,000حوالي 25 تحويلاً قياسياً — شائع للمنصات الصغيرة
1,000 TRX16,250,000الحد الأقصى للطلب، حوالي 250 تحويلاً قياسياً
أي مبلغ بينهماtrx × 16,250خطي تماماً. لا فئات، لا حزم، لا خصومات.
الصيغة: energy = trxSent × 16,250. الحدود: الحد الأدنى 4 TRX (65,000 طاقة)، الحد الأقصى 1,000 TRX (16,250,000 طاقة). كلاهما مفروض على مستوى API — المبالغ أقل من الحد الأدنى يتم رفضها بـ below_minimum وتُسترجع؛ المبالغ فوق الحد الأقصى يتم رفضها قبل التفويض.

POST /delegate

POST/delegate

طلب تفويض طاقة. يجب أن تكون قد أرسلت TRX بالفعل إلى عنوان الدفع على السلسلة. مرّر بصمة التحويل وعنوان المستقبل والتوقيع الذي يثبت أنك المُرسل.

معاملالنوعالوصف
tx_hashstringمطلوببصمة التحويل السادسة والستين (hex) لدفع TRX
delegate_tostringمطلوبعنوان Tron لاستقبال الطاقة
signaturestringمطلوبtronWeb.trx.signMessageV2() من tronWeb.trx.signMessageV2(). يثبت أنك مُرسل الدفع.
curl -X POST https://api.tronnrg.com/delegate \ -H "Content-Type: application/json" \ -d '{"tx_hash":"TX_HASH","delegate_to":"TWallet","signature":"SIG"}'
const result = await fetch('https://api.tronnrg.com/delegate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ tx_hash: 'YOUR_TX_HASH', delegate_to: 'TWalletAddress', signature: 'YOUR_SIGNATURE', }), }).then(r => r.json()); if (result.error) { console.error(result.error, result.message); } else { console.log('Delegated:', result.energy, 'energy'); console.log('Ref:', result.ref); }
import requests response = requests.post('https://api.tronnrg.com/delegate', json={ 'tx_hash': 'YOUR_TX_HASH', 'delegate_to': 'TWalletAddress', 'signature': 'YOUR_SIGNATURE', }) result = response.json() if 'error' in result: print(f"Error: {result['error']} - {result['message']}") else: print(f"Delegated: {result['energy']} energy") print(f"Delegation tx: {result['delegations'][0]['tx']}") print(f"Ref: {result['ref']}")
$ch = curl_init('https://api.tronnrg.com/delegate'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_POSTFIELDS => json_encode([ 'tx_hash' => 'YOUR_TX_HASH', 'delegate_to' => 'TWalletAddress', 'signature' => 'YOUR_SIGNATURE', ]), ]); $result = json_decode(curl_exec($ch), true); curl_close($ch); if (isset($result['error'])) { echo "Error: " . $result['message']; } else { echo "Delegated: " . $result['energy'] . " energy"; }
var client = new HttpClient(); var content = new StringContent( JsonSerializer.Serialize(new { tx_hash = "YOUR_TX_HASH", delegate_to = "TWalletAddress", signature = "YOUR_SIGNATURE" }), Encoding.UTF8, "application/json" ); var response = await client.PostAsync("https://api.tronnrg.com/delegate", content); var json = await response.Content.ReadAsStringAsync(); var result = JsonSerializer.Deserialize<JsonElement>(json); if (result.TryGetProperty("error", out var err)) Console.WriteLine($"Error: {err}"); else Console.WriteLine($"Delegated: {result.GetProperty("energy")} energy");
الاستجابة 200
{ "ref": "nrg_d_42", "delegate_to": "TWalletAddress", "energy": 65000, "cost": 4, "status": "delegated", "delegations": [ { "tx": "a1b2c3d4e5f6...your delegation tx hash", "energy": 65000 } ] }
الحقلالنوعالوصف
refstringمعرّف TronNRG. احفظ هذا للاستفسارات التقنية.
energynumberإجمالي الطاقة المُفوّضة
costnumberTRX المُحتسبة
statusstring"delegated" عند النجاح
delegationsarrayبصمات معاملات التفويض على السلسلة. كل tx قابلة للتحقق على TronScan. هذا إيصالك.

GET /health

GET/health

فحص الحيوية للمراقبة وأدوات وقت التشغيل. يعيد 200 OK عند تشغيل عملية API. لا يتحقق من العُقد أو الموفرين العلويين.

الاستجابة 200
{ "status": "ok" }

رموز الخطأ

لكل استجابة خطأ error (مستقرة وقابلة للقراءة الآلية) و message (مقروءة بواسطة الإنسان). قم دائماً بالتبديل على error في الكود الخاص بك.

الكودHTTPالمعنى
invalid_tx_hash400ليست سلسلة سادسة وستين حرفاً hex
invalid_address400عنوان Tron غير صحيح
missing_signature400لم يتم تقديم توقيع
invalid_signature401تعذر التحقق من التوقيع
signature_mismatch403عنوان الموقّع لا يطابق مُرسل الدفع
hash_already_used409بصمة التحويل مطالب بها بالفعل
payment_verification_failed404 / 400فشل التحقق من الدفع على السلسلة. اقرأ حقل message للسبب المحدد: المعاملة لم تُوجد بعد (404، أعد المحاولة بعد بضع ثوان)، مُستقبِل خاطئ، ليس تحويل TRX، أو أقل من الحد الأدنى 4 TRX.
delegation_failed400 / 500لم يتمكن الموفر من توصيل الطاقة. إذا حدث الفشل بعد التحقق من الدفع، يتم إدراج استرداد تلقائي. تحقق من كائن refund عند حدوث هذا.
rate_limited429عدد طلبات كثير جداً لكل ثانية من هذا العنوان IP. الحد الأقصى هو 20/ثانية.
server_error500خطأ داخلي غير متوقع. أعد المحاولة بعد بضع ثوان.
const result = await fetch('https://api.tronnrg.com/delegate', { ... }) .then(r => r.json()); if (result.error) { switch (result.error) { case 'payment_verification_failed': // Most common cause: tx not yet indexed. Wait 3s and retry. // Read result.message for the specific cause. break; case 'hash_already_used': // Already claimed. Don't retry. break; case 'signature_mismatch': // Signer != payment sender. Sign with the same key that sent TRX. break; case 'delegation_failed': // Refund queued automatically if payment was verified. if (result.refund) console.log('Refund queued:', result.refund); break; } }
result = requests.post('https://api.tronnrg.com/delegate', json=data).json() if 'error' in result: if result['error'] == 'payment_verification_failed': # Most common cause: tx not yet indexed. Wait 3s and retry. pass elif result['error'] == 'hash_already_used': # Already claimed. Don't retry. pass elif result['error'] == 'signature_mismatch': # Signer != payment sender. Sign with the same key. pass elif result['error'] == 'delegation_failed': # Refund queued automatically if payment was verified. pass
if (isset($result['error'])) { switch ($result['error']) { case 'payment_verification_failed': // Most common cause: tx not yet indexed. Wait 3s and retry. break; case 'hash_already_used': // Already claimed. Don't retry. break; case 'signature_mismatch': // Signer != payment sender. Sign with the same key. break; case 'delegation_failed': // Refund queued automatically if payment was verified. break; } }

المبالغ المسترجعة

إذا فشل التفويض بالطاقة بعد التحقق من الدفع، يتم ترتيب رسوم استرجاع TRX تلقائياً وإرسالها مرة أخرى إلى عنوان المُرسِل على البلوكتشين. ابحث عن كائن المبلغ المسترجع في استجابة الخطأ.

خطأ مع استرداد
{ "error": "delegation_failed", "message": "Energy delegation failed. Your payment will be refunded.", "ref": "nrg_d_43", "refund": { "type": "queued", "to": "TSenderAddress", "amount": 4 } }

مثال كامل

التدفق الكامل من البداية للنهاية: أرسل TRX، وقّع، ادعِ مع إعادة المحاولة. انسخ وشغّل.

const API = 'https://api.tronnrg.com'; const ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx'; async function rentEnergy(delegateTo, trxAmount = 4) { // 1. Send TRX to the payment address const payment = await tronWeb.trx.sendTransaction(ADDR, trxAmount * 1e6); // 2. Sign: proves you are the sender const message = `${payment.txid}:${delegateTo}`; const signature = await tronWeb.trx.signMessageV2(message); // 3. Claim delegation (retry if tx not indexed yet) let result; for (let i = 0; i < 3; i++) { result = await fetch(`${API}/delegate`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ tx_hash: payment.txid, delegate_to: delegateTo, signature, }), }).then(r => r.json()); if (!result.error) break; if (result.error !== 'payment_verification_failed') throw new Error(result.message); await new Promise(r => setTimeout(r, 3000)); } if (result.error) throw new Error(result.message); return result; } // Usage — send any amount between 4 and 1,000 TRX const result = await rentEnergy('TWalletThatNeedsEnergy', 4); // 4 TRX → 65k energy // rentEnergy(addr, 8) // → 130,000 energy (new-wallet transfer) // rentEnergy(addr, 40) // → 650,000 energy (10 transfers) // rentEnergy(addr, 1000) // → 16,250,000 energy (max) console.log(result.energy); // trxAmount × 16,250 console.log(result.delegations[0].tx); // on-chain tx hash console.log(result.ref); // "nrg_d_42"
import requests import time API = 'https://api.tronnrg.com' ADDR = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx' def rent_energy(delegate_to, trx_amount=4): # 1. Send TRX to ADDR (via your Tron library) tx_hash = send_trx(ADDR, trx_amount) # your TRX send function # 2. Sign: proves you are the sender message = f'{tx_hash}:{delegate_to}' signature = tron.trx.sign_message_v2(message) # 3. Claim delegation (retry if tx not indexed yet) for attempt in range(3): result = requests.post(f'{API}/delegate', json={ 'tx_hash': tx_hash, 'delegate_to': delegate_to, 'signature': signature, }).json() if 'error' not in result: return result if result['error'] != 'payment_verification_failed': raise Exception(result['message']) time.sleep(3) raise Exception('Transaction not found after retries') # Usage result = rent_energy('TWalletThatNeedsEnergy', 4) print(f"Delegated: {result['energy']} energy") print(f"Delegation tx: {result['delegations'][0]['tx']}") print(f"Ref: {result['ref']}")
<?php $api = 'https://api.tronnrg.com'; $addr = 'TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx'; function rentEnergy($api, $txHash, $delegateTo, $signature) { // 1. Send TRX to $addr (via iexbase/tron-api) // $payment = $tron->sendTrx($addr, 4); // $txHash = $payment['txid']; // 3. Claim delegation (retry if tx not indexed yet) for ($i = 0; $i < 3; $i++) { $ch = curl_init("${api}/delegate"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_POSTFIELDS => json_encode([ 'tx_hash' => $txHash, 'delegate_to' => $delegateTo, 'signature' => $signature, ]), ]); $result = json_decode(curl_exec($ch), true); curl_close($ch); if (!isset($result['error'])) return $result; if ($result['error'] !== 'payment_verification_failed') throw new Exception($result['message']); sleep(3); } throw new Exception('Transaction not found after retries'); } // Usage $result = rentEnergy($api, $txHash, 'TWalletThatNeedsEnergy'); echo "Delegated: " . $result['energy'] . " energy\n"; echo "Delegation tx: " . $result['delegations'][0]['tx'] . "\n"; echo "Ref: " . $result['ref'] . "\n";
# 1. Send TRX to TFqUiCu1JwLHHnBNeaaVKH7Csm4aA3YhZx # Pricing is linear at 16,250 energy per TRX. # Min 4 TRX (65,000 energy), max 1,000 TRX (16.25M energy). # (use your wallet or tronweb CLI) # 2. Sign the message {tx_hash}:{delegate_to} (proves you are the sender) # (use tronWeb.trx.signMessageV2 in your code) # 3. Claim delegation with tx hash + signature curl -X POST https://api.tronnrg.com/delegate \ -H "Content-Type: application/json" \ -d '{ "tx_hash": "YOUR_PAYMENT_TX_HASH", "delegate_to": "TWalletThatNeedsEnergy", "signature": "YOUR_SIGNATURE" }' # Response includes delegations[].tx — the on-chain hash you can verify on TronScan
Telegram WhatsApp