GET /apiv2/prices
Get current energy rental prices for different time periods throughout the day.
Endpoint URL
GET https://netts.io/apiv2/pricesRequest Headers
| Header | Required | Description | Values |
|---|---|---|---|
| X-API-KEY | Yes | Your API key | string |
| X-Real-IP | Yes | IP address from whitelist | IP address |
| X-Format | No | Response format (default: extended JSON) | now, compact, short, short1h, count |
Request Parameters
No parameters required - returns all current pricing information.
Example Requests
cURL
curl -X GET https://netts.io/apiv2/prices \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"Python
import requests
url = "https://netts.io/apiv2/prices"
headers = {
"X-API-KEY": "your_api_key",
"X-Real-IP": "your_whitelisted_ip"
}
response = requests.get(url, headers=headers)
data = response.json()
if response.status_code == 200:
print(f"Status: {data.get('status')}")
print(f"Current UTC time: {data.get('current_utc_time')}")
print(f"Active period: {data.get('active_period')}")
print(f"Host price: {data.get('host_price')} TRX")
print("\nPrice periods:")
for period in data.get('periods', []):
is_active = period.get('is_active', False)
active_marker = " *ACTIVE*" if is_active else ""
print(f"\n{period.get('label')}{active_marker}:")
print(f" Time: {period.get('period')}")
prices = period.get('prices', {})
print(f" < 200k energy: {prices.get('less_than_200k', {}).get('price_sun')} sun")
print(f" = 131k energy: {prices.get('equal_131k', {}).get('price_sun')} sun")
print(f" > 200k energy: {prices.get('more_than_200k', {}).get('price_sun')} sun")
else:
print(f"Error: {data.get('message', 'Unknown error')}")Compact Response Format
New in v2.1: Use the X-Format header to get a compact text response instead of the full JSON structure.
When to Use
- Integration with monitoring systems
- Simple price displays
- Automated price tracking
- Minimal bandwidth requirements
Example Request
curl -X GET https://netts.io/apiv2/prices \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip" \
-H "X-Format: now"Compact Response Example
Daytime Hours (11:00-21:00 UTC): price=27 sun, 65k=1.755 TRX (0.52$), 131k=3.537 TRX (1.05$), 1m=27.000 TRX (7.99$)Response Format Explanation
The compact format provides:
| Component | Description | Example |
|---|---|---|
| Period label | Active pricing period | Daytime Hours (11:00-21:00 UTC) |
| price=X sun | Price per energy unit in SUN | price=27 sun |
| 65k=X.XXX TRX (X.XX$) | Cost for 65,000 energy units | 65k=1.755 TRX (0.52$) |
| 131k=X.XXX TRX (X.XX$) | Cost for 131,000 energy units | 131k=3.537 TRX (1.05$) |
| 1m=X.XXX TRX (X.XX$) | Cost for 1,000,000 energy units | 1m=27.000 TRX (7.99$) |
Calculation Formula
TRX cost = (price_sun / 1,000,000) × energy_amount
USD cost = TRX_cost × current_TRX_USD_rateNote: TRX/USD exchange rate is retrieved from the chain_param table and cached for 30 minutes.
Content Type
- Extended format:
application/json - Compact format:
text/plain
Python Example
import requests
url = "https://netts.io/apiv2/prices"
headers = {
"X-API-KEY": "your_api_key",
"X-Real-IP": "your_whitelisted_ip",
"X-Format": "now" # Request compact format
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
print("Compact price data:")
print(response.text)
# Output: Daytime Hours (11:00-21:00 UTC): price=27 sun, 65k=1.755 TRX (0.52$), ...
else:
print(f"Error: {response.status_code}")Ultra-Compact Response Format (short1h)
New in v2.2: Use the X-Format: short1h header to get an ultra-compact text response with only energy calculations, without the period label and price per unit.
When to Use
- Monitoring dashboards with limited space
- Mobile applications
- Minimal bandwidth requirements
- Focus on final costs only
Example Request
curl -X GET https://netts.io/apiv2/prices \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip" \
-H "X-Format: short1h"Ultra-Compact Response Example
65k=1.755 TRX (0.52$), 131k=3.537 TRX (1.05$), 1m=27.000 TRX (7.99$)Response Format Explanation
The ultra-compact format provides only the essential cost calculations:
| Component | Description | Example |
|---|---|---|
| 65k=X.XXX TRX (X.XX$) | Cost for 65,000 energy units | 65k=1.755 TRX (0.52$) |
| 131k=X.XXX TRX (X.XX$) | Cost for 131,000 energy units | 131k=3.537 TRX (1.05$) |
| 1m=X.XXX TRX (X.XX$) | Cost for 1,000,000 energy units | 1m=27.000 TRX (7.99$) |
Note: This format excludes the period label and price per energy unit for maximum compactness.
Content Type
- Ultra-compact format:
text/plain
Python Example
import requests
url = "https://netts.io/apiv2/prices"
headers = {
"X-API-KEY": "your_api_key",
"X-Real-IP": "your_whitelisted_ip",
"X-Format": "short1h" # Request ultra-compact format
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
print("Ultra-compact price data:")
print(response.text)
# Output: 65k=1.755 TRX (0.52$), 131k=3.537 TRX (1.05$), 1m=27.000 TRX (7.99$)
else:
print(f"Error: {response.status_code}")Count Response Format (count)
New in v2.3: Use the X-Format: count header to get bulk order pricing calculations showing costs for 1, 2, 3, 5, 10, and 20 orders.
When to Use
- Bulk order pricing displays
- Volume discount calculators
- Price comparison tools
- Order quantity planning
- Cost estimation for multiple orders
Example Request
curl -X GET https://netts.io/apiv2/prices \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip" \
-H "X-Format: count"Count Response Example
1-1.690 TRX (0.50$), 2-3.380 TRX (1.00$), 3-5.070 TRX (1.50$), 5-8.450 TRX (2.50$), 10-16.900 TRX (5.00$), 20-33.800 TRX (10.00$)Response Format Explanation
The count format provides calculated pricing for different order quantities:
| Component | Description | Example |
|---|---|---|
| 1-X.XXX TRX (X.XX$) | Cost for 1 order (65,000 energy units) | 1-1.690 TRX (0.50$) |
| 2-X.XXX TRX (X.XX$) | Cost for 2 orders (131,000 energy units) | 2-3.380 TRX (1.00$) |
| 3-X.XXX TRX (X.XX$) | Cost for 3 orders (3 × 65,000 energy) | 3-5.070 TRX (1.50$) |
| 5-X.XXX TRX (X.XX$) | Cost for 5 orders (5 × 65,000 energy) | 5-8.450 TRX (2.50$) |
| 10-X.XXX TRX (X.XX$) | Cost for 10 orders (10 × 65,000 energy) | 10-16.900 TRX (5.00$) |
| 20-X.XXX TRX (X.XX$) | Cost for 20 orders (20 × 65,000 energy) | 20-33.800 TRX (10.00$) |
Calculation Formula
1 order: TRX cost = (price_sun_65k / 1,000,000) × 65,000
2 orders: TRX cost = (price_sun_131k / 1,000,000) × 131,000
3+ orders: TRX cost = (price_sun_65k / 1,000,000) × 65,000 × quantity
USD cost = TRX_cost × current_TRX_USD_rateNote: TRX/USD exchange rate is retrieved from the chain_param table and cached for 30 minutes.
Content Type
- Count format:
text/plain
Python Example
import requests
url = "https://netts.io/apiv2/prices"
headers = {
"X-API-KEY": "your_api_key",
"X-Real-IP": "your_whitelisted_ip",
"X-Format": "count" # Request count format
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
print("Bulk order pricing:")
print(response.text)
# Output: 1-1.690 TRX (0.50$), 2-3.380 TRX (1.00$), 3-5.070 TRX (1.50$), ...
else:
print(f"Error: {response.status_code}")Response
Success Response (200 OK)
{
"status": "success",
"current_utc_time": "2025-09-02 06:50:39",
"current_utc_hour": 6,
"active_period": "05:00-07:00",
"last_update": "2025-09-02 08:05:03",
"host_price": 2.989,
"periods": [
{
"label": "Early Morning Hours (05:00-07:00 UTC)",
"period": "05:00-07:00",
"is_active": true,
"prices": {
"less_than_200k": {
"price_sun": 17
},
"equal_131k": {
"price_sun": 17
},
"more_than_200k": {
"price_sun": 17
}
}
},
{
"label": "Morning Hours (07:00-11:00 UTC)",
"period": "07:00-11:00",
"is_active": false,
"prices": {
"less_than_200k": {
"price_sun": 17
},
"equal_131k": {
"price_sun": 17
},
"more_than_200k": {
"price_sun": 17
}
}
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
| status | string | Always "success" for successful requests |
| current_utc_time | string | Current server time in UTC |
| current_utc_hour | integer | Current UTC hour (0-23) |
| active_period | string | Currently active pricing period |
| last_update | string | Last time prices were updated |
| host_price | number | Current host price in TRX |
| periods | array | Array of all pricing periods |
| periods[].label | string | Human-readable period name |
| periods[].period | string | Time range (HH:MM-HH:MM) |
| periods[].is_active | boolean | Whether this period is currently active |
| periods[].prices.less_than_200k.price_sun | integer | Price in SUN for energy < 200,000 units |
| periods[].prices.equal_131k.price_sun | integer | Price in SUN for exactly 131,000 units |
| periods[].prices.more_than_200k.price_sun | integer | Price in SUN for energy > 200,000 units |
Energy Amount Categories
| Category | Description | Energy Range |
|---|---|---|
| less_than_200k | Small orders | < 200,000 energy units |
| equal_131k | Standard orders | Exactly 131,000 energy units |
| more_than_200k | Large orders | > 200,000 energy units |
Time Periods
The API returns prices for 5 different time periods:
| Period | Time Range (UTC) | Description |
|---|---|---|
| Early Morning | 05:00-07:00 | Lower demand period |
| Morning | 07:00-11:00 | Business hours start |
| Daytime | 11:00-21:00 | Peak business hours |
| Evening | 21:00-23:00 | Evening activity |
| Night | 23:00-05:00 | Lowest demand period |
Rate Limits
The following rate limits apply to this endpoint (per IP address):
| Period | Limit | Description |
|---|---|---|
| 1 minute | 1 request | Maximum 1 request per minute |
| 1 hour | 60 requests | Maximum 60 requests per hour |
Rate Limit Headers
RateLimit-Limit: 1
RateLimit-Remaining: 0
RateLimit-Reset: 21
X-RateLimit-Limit-Minute: 1
X-RateLimit-Remaining-Minute: 0
X-RateLimit-Limit-Hour: 60
X-RateLimit-Remaining-Hour: 59
Retry-After: 21Rate Limit Exceeded (429)
{
"message": "API rate limit exceeded"
}Error Responses
Authentication Error (401)
{
"status": "error",
"code": 401,
"message": "Invalid API key or IP not in whitelist"
}Internal Server Error (500)
{
"status": "error",
"message": "Internal server error"
}Notes
- No request body required - this is a GET request
- All prices are in SUN (1 TRX = 1,000,000 SUN)
- Prices vary by energy amount and time of day (UTC)
- Active period: Changes throughout the day based on demand
- Rate limiting: Strict limits due to database-intensive operations
- Price updates: Prices are refreshed from database periodically
- Time zones: All times are in UTC