Pricing
Current energy price and hourly price history, public and without an API key.
These two endpoints need no API key and allow any origin (CORS), so you can call them from a browser, a price widget or a script. They show our price. To get the exact cost of a relay for your account, use Estimate.
Current price
Returns what an amount of energy costs right now. It uses the same provider choice and pricing rules as Estimate, and provider prices are refreshed every minute. An answer can be up to a minute old. Limit: 60 requests per minute per IP address.
curl "https://apiv2.tronergy.io/api/relayer_tron/public/rate?energy=65000" \
-H "x-api-key: $TRONERGY_API_KEY"energynumberqueryEnergy units to price, 10,000 to 10,000,000, rounded up to a whole thousand. Defaults to 65,000, enough for one USDT transfer to an address that already holds USDT. A transfer to an address with no USDT needs about 131,000.
{
"ok": true,
"currency": "TRX",
"energy": 65000,
"billedEnergy": 65000,
"priceTrx": "1.120000",
"priceSun": "1120000",
"sunPerEnergy": 17.2308,
"quotedAt": "2026-10-27T09:12:30.000Z"
}| Field | Meaning |
|---|---|
energy | The amount priced: your energy, rounded up to a whole thousand. |
priceTrx | Price for the energy, in TRX, as a decimal string. |
priceSun | The same price in sun (1 TRX = 1,000,000 sun), as an integer string. |
billedEnergy | Energy you get for that price. It can be more than energy when the cheapest provider sells a larger minimum amount. |
sunPerEnergy | priceSun divided by billedEnergy. |
quotedAt | When the price was calculated. |
The price is for energy only. Bandwidth and activating a new address are not included; Estimate adds them for a real transaction, and can come out lower if the address already has energy. Prices follow the market and can change between calls.
Errors use the standard format:
| Status | error | Meaning |
|---|---|---|
422 | Invalid query parameters | energy is not a whole number from 10,000 to 10,000,000. |
429 | Over 60 requests in a minute from your IP address. Wait and retry. | |
502 | PRICE_QUOTE_FAILED | The price could not be calculated. |
503 | PRICE_UNAVAILABLE | No energy provider can be priced right now. Try again in a minute. |
curl "https://apiv2.tronergy.io/api/relayer_tron/public/rate?energy=131000"Price history
Returns our price for each hour over a recent window, for a price chart. An answer can be up to five minutes old.
curl "https://apiv2.tronergy.io/api/relayer_tron/public/price-history?hours=48&energy=65000" \
-H "x-api-key: $TRONERGY_API_KEY"hoursnumberqueryHours to return, 1 to 168. Defaults to 48.
energynumberqueryEnergy units each price is for, 10,000 to 10,000,000. Defaults to 65,000.
{
"ok": true,
"currency": "TRX",
"energy": 65000,
"interval": "hour",
"window": { "from": "2026-10-25T10:00:00.000Z", "to": "2026-10-27T10:00:00.000Z" },
"latest": { "time": "2026-10-27T09:00:00.000Z", "priceTrx": 1.12, "sunPerEnergy": 17.2308, "basis": "quote" },
"points": [
{ "time": "2026-10-27T08:00:00.000Z", "priceTrx": 1.12, "sunPerEnergy": 17.2308, "basis": "quote" },
{ "time": "2026-10-27T09:00:00.000Z", "priceTrx": 1.12, "sunPerEnergy": 17.2308, "basis": "quote" }
]
}Each point is one hour. priceTrx is a number here, not a string. Hours with no known price have priceTrx, sunPerEnergy and basis set to null. latest is the newest point with a price, or null if there is none. basis says where a point comes from:
quote: the price we quoted in that hour.sale: the average price of energy we sold in that hour. Used only for hours before we started recording quotes.carried: no new price in that hour, so the previous price is repeated.
A point's price is the per-unit price multiplied by energy, so for amounts far from 65,000 it is approximate. Use Current price for an exact amount.
A bad hours or energy answers 400 with error: "Invalid query". If the history cannot be loaded you get 502.