Skip to content
This translation is behind the English original, updated 2026-09-15. Read the English version for the current text.

GET /apiv2/pricing

Dinamik zaman aralıklarıyla tüm hizmet fiyatlarını tek bir yanıtta döndüren evrensel fiyatlandırma uç noktası.

Karşılama sırasında fiyat değişebilir

Bu uç nokta tarafından döndürülen fiyat, bir sipariş işlenirken değişebilir. Bir enerji sağlayıcısı yetkilendirme (delegation) talebini reddedebilir; bu durumda Netts siparişi otomatik olarak bir sonraki uygun sağlayıcıya yönlendirir. Netts yalnızca en rekabetçi fiyatı sunmayı değil, aynı zamanda güvenilir bir enerji tedariki sağlamayı da taahhüt eder — bu nedenle bir sipariş teklif edilenden daha yüksek bir fiyattan karşılanabilir. Bu durum yalnızca 300.000 enerji birimi ve üzerindeki siparişler için geçerlidir.

Önerilen

Bu, önerilen fiyatlandırma uç noktasıdır. Kullanımdan kaldırılacak olan eski /apiv2/prices uç noktasının yerini alır.

Uç Nokta URL'si

GET https://netts.io/apiv2/pricing

İstek Başlıkları

BaşlıkGerekliAçıklamaDeğerler
X-API-KEYEvetAPI anahtarınızstring
X-Real-IPEvetBeyaz listedeki IP adresiIP adresi
X-FormatHayırYanıt formatı (varsayılan: tam JSON)now, compact, short, short1h, count

Sorgu Parametreleri

ParametreTürVarsayılanAçıklama
servicesstringallDahil edilecek hizmetlerin virgülle ayrılmış filtresi

Mevcut Hizmetler

HizmetAçıklama
energy_1h1 saatlik enerji yetkilendirme fiyatları
energy_5m5 dakikalık enerji yetkilendirme fiyatları
hostHost enerji yetkilendirme oranları
amlAML adres kontrolü fiyatları
bandwidthBandwidth kiralama fiyatları — isteğe bağlı (opt-in): yalnızca ?services=bandwidth aracılığıyla açıkça istendiğinde döndürülür (varsayılan yanıtın bir parçası değildir)

Örnek İstekler

cURL — Tam Yanıt

bash
curl -X GET https://netts.io/apiv2/pricing \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

cURL — Hizmetlere Göre Filtreleme

bash
# Yalnızca energy 1h fiyatları
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

# Energy 1h + AML
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h,aml" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

# Yalnızca Host fiyatları
curl -X GET "https://netts.io/apiv2/pricing?services=host" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

# Bandwidth kiralama fiyatları (isteğe bağlı — açıkça talep edilmelidir)
curl -X GET "https://netts.io/apiv2/pricing?services=bandwidth" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

Python

python
import requests

url = "https://netts.io/apiv2/pricing"
headers = {
    "X-API-KEY": "your_api_key",
    "X-Real-IP": "your_whitelisted_ip"
}

response = requests.get(url, headers=headers)
data = response.json()

if data.get("success"):
    print(f"API version: {data['version']}")
    print(f"TRX/USD rate: {data['data']['trx_rate_usd']}")

    services = data["data"]["services"]

    for svc_name, svc_data in services.items():
        pricing_type = svc_data.get("pricing_type")
        print(f"\n--- {svc_name} ({pricing_type}) ---")

        if pricing_type == "periodic":
            for period in svc_data["periods"]:
                marker = " <-- current" if period["is_current"] else ""
                print(f"  {period['label']}: {period['price']} {svc_data['unit']}{marker}")

        elif pricing_type == "flat_rates":
            for rate, price in svc_data["rates"].items():
                print(f"  {rate}: {price} {svc_data['unit']}")

        elif pricing_type == "provider_based":
            for name, info in svc_data["providers"].items():
                status = "available" if info["available"] else "unavailable"
                print(f"  {name}: {info['price']} {svc_data['unit']} - {status}")

Python — Hizmetleri Filtreleme

python
params = {"services": "energy_1h,aml"}
response = requests.get(url, headers=headers, params=params)

Yanıt Yapısı

Üst Düzey Alanlar

AlanTürAçıklama
successbooleanBaşarılı istekler için true
versionstringAPI sürümü (ör. "2.1")
timestampstringISO 8601 UTC formatında sunucu saati
dataobjectYanıt yükü

Veri Alanları

AlanTürAçıklama
data.trx_rate_usdnumberMevcut TRX/USD döviz kuru
data.units_metaobjectMakine tarafından okunabilir birim dönüştürme bilgisi
data.servicesobjectFiyatlandırma verileriyle talep edilen hizmetlerin eşlemesi

Birim Meta Bilgisi (Units Meta)

İstemcilerin birimler arasında programatik olarak dönüşüm yapmasına olanak tanır:

json
{
    "units_meta": {
        "sun": {"base": "trx", "multiplier": 1000000},
        "trx": {"base": "trx", "multiplier": 1},
        "usdt": {"base": "usdt", "multiplier": 1}
    }
}

SUN biriminden TRX birimine dönüştürmek için: trx_price = sun_price / units_meta.sun.multiplier

Hizmet Ortak Alanları

Her hizmet şu alanları içerir:

AlanTürAçıklama
unitstringFiyat birimi (sun, trx, usdt)
pricing_typestringBu hizmetin nasıl ayrıştırılacağı (aşağıya bakın)
descriptionstringİnsan tarafından okunabilir açıklama
cache_ttlintegerBu verilerin ne sıklıkla yenilendiği (saniye cinsinden)

Fiyatlandırma Türleri

pricing_type alanı istemcilere her bir hizmeti nasıl ayrıştıracaklarını bildirir:

TürYapıTarafından kullanılır
periodicZamana dayalı fiyatları içeren periods[] dizisienergy_1h, energy_5m
flat_ratesAdlandırılmış oran anahtarlarına sahip rates{} nesnesihost
provider_basedSağlayıcı verilerini içeren providers{} nesnesiaml
tiered_by_amount_and_periodMiktar aralığına göre tiers[], her biri periods[] içerenbandwidth

Hizmet: energy_1h / energy_5m

pricing_type: periodic

AlanTürAçıklama
current_periodstringŞu anda aktif olan dönemin tanımlayıcısı (slug)
periods[]arrayTüm fiyatlandırma dönemleri (dinamik, veritabanından yüklenir)
periods[].idstringBenzersiz dönem tanımlayıcısı (slug)
periods[].labelstringİnsan tarafından okunabilir dönem adı
periods[].startstringDönem başlangıç zamanı (HH:MM UTC)
periods[].endstringDönem bitiş zamanı (HH:MM UTC)
periods[].is_currentbooleanBu dönemin şu anda aktif olup olmadığı
periods[].priceintegerSUN cinsinden enerji birimi başına fiyat
periods[].tiersarray|nullHacme dayalı fiyatlandırma kademeleri (bkz. Kademeler)

Dinamik dönemler

Dönem sayısı, zaman aralıkları, etiketleri ve fiyatların tümü dinamiktir ve sunucu tarafında yönetilir. Dönem ID'lerini veya sayılarını sabit kodlamayın (hardcode yapmayın). Her zaman periods dizisi üzerinde döngü kurun.


Hizmet: host

pricing_type: flat_rates

AlanTürAçıklama
rates.standard_65knumber65k enerji için standart oran (TRX)
rates.standard_131k_initialnumber131k enerji, ilk aktivasyon için standart oran (TRX)
rates.frequent_65knumber65k enerji için sık kullanım oranı (TRX)
rates.frequent_131knumber131k enerji için sık kullanım oranı (TRX)

Hizmet: aml

pricing_type: provider_based

AlanTürAçıklama
providersobjectAML sağlayıcılarının eşlemesi (dinamiktir, değişebilir)
providers[name].pricenumberUSDT cinsinden kontrol fiyatı
providers[name].price_trxnumberMevcut kurdan TRX'e dönüştürülmüş kontrol fiyatı
providers[name].availablebooleanSağlayıcının uygun kotası olup olmadığı

Dinamik sağlayıcılar

AML sağlayıcıları veritabanından yüklenir. Yeni sağlayıcılar eklenebilir veya mevcut olanlar kullanılamaz hale gelebilir. Her zaman providers nesnesi üzerinde döngü kurun.


Hizmet: bandwidth

pricing_type: tiered_by_amount_and_period

İsteğe bağlı katılım ve erişim

Bandwidth fiyatlandırması yalnızca ?services=bandwidth aracılığıyla açıkça istendiğinde döndürülür — varsayılan yanıtın bir parçası değildir. Bandwidth kiralama uç noktasının kendisi talep üzerine sunulur; erişim için destek ile iletişime geçin. Bkz. Bandwidth kiralama.

Bandwidth kiralama fiyatı; sipariş miktarına (birim kademesi), kiralama süresine (ör. 5m / 1h), günün zaman dilimi penceresine (UTC) ve haftanın gününe bağlıdır. Temel fiyatlar birim başına SUN cinsindendir; temel fiyata ek olarak sabit ek ücretler (TRX cinsinden) uygulanabilir — tüm değerler yanıtta döndürülür.

Yanıt hem bir kolaylık görünümü (tiersmevcut zaman penceresi/gün için fiyatlar) hem de tam ızgara (windows + schedule — her hafta içi günündeki tüm pencereler) sağlar.

Uyarlanabilir format — sabit kodlamayın

Fiyatlandırma ızgarası tamamen veri odaklıdır ve her an değişebilir: zaman pencerelerinin sayısı, bunların etiketleri, başlangıç/bitiş zamanları, kiralama süreleri kümesi (yeni süreler eklenebilir veya kaldırılabilir), miktar kademeleri, haftanın günü dökümü ve fiyatların kendisi. İstemciler, döndürülen diziler (windows, schedule, tiers, periods) üzerinde döngü kurmalı ve değere göre eşleştirme yapmalıdır — hiçbir zaman sabit bir sayı, sabit etiketler, sabit zamanlar veya sabit süre id'leri varsaymayın. Bu şekilde yazılan kod, zamanlama değiştiğinde de çalışmaya devam eder.

AlanTürAçıklama
unitstringsun_per_unit
windowstringGeçerli gün içi zaman penceresi etiketi (UTC)
current_day_of_weekintegerGeçerli haftanın günü, ISO 1=Pzt … 7=Paz (UTC)
tiers[]arrayGeçerli zaman penceresi/gün için miktar kademeleri (kolaylık amaçlı; schedule içindekiyle aynı yapı)
windows[]arrayTüm gün içi zaman pencerelerinin dizini (büyüyebilir/küçülebilir/kayabilir)
windows[].labelstringZaman penceresi etiketi
windows[].start / .endstringPencere başlangıç/bitiş HH:MM UTC (bir pencere gece yarısını geçebilir, yani start > end olabilir)
schedule[]arrayTam ızgara — (haftanın günü × pencere) başına bir giriş
schedule[].day_of_weekintegerISO haftanın günü 17
schedule[].windowstringZaman penceresi etiketi (windows[].label ile eşleşir)
schedule[].period_start / .period_endstringHH:MM UTC
schedule[].is_currentbooleanŞu anda aktif olan segment için true
schedule[].tiers[]arrayBu segment için miktar kademeleri
tiers[].amount_minintegerKademe alt sınırı (dahil)
tiers[].amount_maxinteger|nullKademe üst sınırı (hariç). null = sınırsız
tiers[].periods[]arrayKademe içindeki kiralama süresi başına fiyatlar
tiers[].periods[].idstringKiralama süresi id'si (ör. 5m, 1h) — değişebilir/genişleyebilir
tiers[].periods[].rental_secondsintegerSaniye cinsinden dönem uzunluğu
tiers[].periods[].priceintegerSUN cinsinden Bandwidth birimi başına fiyat
surchargesobjectİstemci fiyatına yapılan sabit eklemeler (TRX) — aşağıya bakın
limitsobjectSipariş limitleri: min_units, max_units

Ek Ücretler (Surcharges)

AlanTürAçıklama
surcharges.small_order_threshold_unitsintegeramount değeri bu değerin altında olan siparişlere küçük sipariş ek ücreti uygulanır
surcharges.small_order_surcharge_trxnumberKüçük yetkilendirme siparişleri için eklenen tutar (TRX) — zincir içi yetkilendirme + geri alma telafisi
surcharges.trx_send_surcharge_trxnumberSipariş TRX gönderilerek karşılandığında eklenen tutar (TRX) — TRX transferinin telafisi

Örnek Yanıt

json
{
    "bandwidth": {
        "unit": "sun_per_unit",
        "pricing_type": "tiered_by_amount_and_period",
        "description": "Bandwidth delegation rental",
        "cache_ttl": 30,

        "window": "<current window label>",
        "current_day_of_week": 7,
        "tiers": [
            {
                "amount_min": 400,
                "amount_max": 1000,
                "periods": [
                    {"id": "5m", "rental_seconds": 300,  "price": "<price_sun>"},
                    {"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
                ]
            },
            {"amount_min": 1000, "amount_max": 3000, "periods": ["..."]},
            {"amount_min": 3000, "amount_max": null,  "periods": ["..."]}
        ],

        "windows": [
            {"label": "<window label>", "start": "01:00", "end": "09:00"},
            {"label": "<window label>", "start": "14:00", "end": "00:00"}
        ],
        "schedule": [
            {
                "day_of_week": 1,
                "window": "<window label>",
                "period_start": "01:00",
                "period_end": "09:00",
                "is_current": false,
                "tiers": [
                    {"amount_min": 400, "amount_max": 1000, "periods": [
                        {"id": "5m", "rental_seconds": 300, "price": "<price_sun>"},
                        {"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
                    ]}
                ]
            }
        ],

        "surcharges": {
            "small_order_threshold_units": 1000,
            "small_order_surcharge_trx": "<trx>",
            "trx_send_surcharge_trx": "<trx>"
        },
        "limits": {"min_units": 400, "max_units": 5000}
    }
}

schedule, her (haftanın günü × pencere) kombinasyonu için bir giriş içerir — eksiksiz bir fiyat takvimi oluşturmak için üzerinde döngü kurun. Tam olarak bir giriş is_current: true değerine sahiptir.

İstemci Mantığı (sipariş fiyatını hesaplama)

"Şu anki fiyat" için tiers kullanın. Başka bir zaman için fiyat aramak üzere, haftanın gününe ve zamanı içeren [period_start, period_end) aralığına sahip pencereye göre eşleşen schedule girişini seçin (bir pencerenin start > end olduğunda gece yarısını geçebileceğini unutmayın), ardından onun tiers alanını kullanın.

# geçerli an için fiyat:
for tier in bandwidth.tiers:
    if tier.amount_min <= amount < (tier.amount_max or infinity):
        for p in tier.periods:
            if p.id == requested_period:        # dizine göre değil, değere göre eşleştirin
                base_trx = (p.price / units_meta.sun.multiplier) * amount
if amount < surcharges.small_order_threshold_units:
    base_trx += surcharges.small_order_surcharge_trx      # yetkilendirme siparişleri
# bunun yerine TRX gönderme karşılama dalı:
#   trx_branch_trx = base_trx_for_smallest_tier_shortest_period + surcharges.trx_send_surcharge_trx

# rastgele bir hafta içi günü/zamanı için fiyat: aynı mantık, ancak önce day_of_week değerinin
# eşleştiği ve zamanın [period_start, period_end) aralığına denk geldiği schedule[] girişini seçin.

Merkezi ve dinamik

Bandwidth fiyatları, pencereler, hafta içi gün dökümleri ve ek ücretler sunucu tarafında (veritabanında) yönetilir ve değişebilir. Yanıttaki windows, schedule, tiers ve periods üzerinde her zaman döngü kurun ve değere göre eşleştirin — sayıları, etiketleri, zamanları veya dönem id'lerini sabit olarak kodlamayın. SUB-kullanıcı fiyat artışları Bandwidth için geçerli değildir.


Kademeler (Tiers)

Şu anda tiers tüm dönemler için null değerindedir. Hacme dayalı fiyatlandırma etkinleştirildiğinde bu alan kademe nesnelerinden oluşan bir dizi içerecektir:

json
{
    "tiers": [
        {
            "min_energy": 0,
            "max_energy": 64999,
            "price": "<price_sun>",
            "label": "standard"
        },
        {
            "min_energy": 65000,
            "max_energy": 130999,
            "price": "<price_sun>",
            "label": "65k"
        },
        {
            "min_energy": 131000,
            "max_energy": 131000,
            "price": "<price_sun>",
            "label": "131k"
        },
        {
            "min_energy": 131001,
            "max_energy": null,
            "price": "<price_sun>",
            "label": "bulk"
        }
    ]
}

Kademeler Şeması

AlanTürAçıklama
min_energyintegerBu kademe için minimum enerji miktarı (dahil)
max_energyinteger|nullBu kademe için maksimum enerji miktarı (dahil). null = sınırsız
priceintegerBu kademe için SUN cinsinden enerji birimi başına fiyat
labelstringKademe tanımlayıcısı

İstemci Mantığı

if tiers != null:
    min_energy <= order_amount <= max_energy koşulunu sağlayan kademeyi bulun
    o kademenin fiyatını kullanın
else:
    tüm sipariş miktarları için sabit fiyat alanını kullanın

Kompakt Yanıt Formatları

Kompakt metin yanıtları almak için X-Format başlığını kullanın. Bunlar energy_1h içinden geçerli aktif dönemin fiyatını döndürür.

X-Format: now / compact / short

bash
curl -H "X-API-KEY: your_key" -H "X-Format: now" https://netts.io/apiv2/pricing
text
<Period>: price=<N> sun, 65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)

X-Format: short1h

Aynısıdır, ancak dönem etiketi ve birim başına fiyat yer almaz.

bash
curl -H "X-API-KEY: your_key" -H "X-Format: short1h" https://netts.io/apiv2/pricing
text
65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)

X-Format: count

1, 2, 3, 5, 10, 20 sipariş için toplu sipariş fiyatlandırması.

bash
curl -H "X-API-KEY: your_key" -H "X-Format: count" https://netts.io/apiv2/pricing
text
1-<X.XXX> TRX (<X.XX>$), 2-<X.XXX> TRX (<X.XX>$), ...

Hesaplama Formülü

TRX cost = (price_sun / units_meta.sun.multiplier) x energy_amount
USD cost = TRX_cost x trx_rate_usd

SUB-Kullanıcı Fiyat Artışı (Markup)

SUB-kullanıcılar, üst hesaplarının fiyat artışı uygulanmış fiyatları otomatik olarak alır. API, kimliği doğrulanmış kullanıcı için her zaman nihai fiyatı döndürür — istemci tarafında hesaplama yapılması gerekmez.

Hata Yanıtları

Hatalar, farklı formatlara sahip iki katmandan gelebilir. İstemciniz her ikisini de işleyebilmelidir.

Uygulama Hataları (API'den)

Uygulama düzeyindeki hatalar standart success/error formatını kullanır:

Geçersiz Hizmet (400)

json
{
    "success": false,
    "error": {
        "code": 4002,
        "message": "Unknown services: invalid_service"
    }
}

Kimlik Doğrulama Hatası (401)

API anahtarı eksik olduğunda veya IP beyaz listede olmadığında uygulama tarafından döndürülür:

json
{
    "detail": {
        "code": -1,
        "msg": "Invalid API key or IP not in whitelist"
    }
}

Farklı format

Kimlik doğrulama hataları, success/error yapısını değil FastAPI'nin yerel detail formatını kullanır. Bunun nedeni, hatanın istek uygulama mantığına ulaşmadan önce fırlatılmasıdır.

Kullanıcı Bulunamadı (404)

json
{
    "detail": {
        "code": -1,
        "msg": "User not found"
    }
}

Sunucu İçi Hata (500)

json
{
    "success": false,
    "error": {
        "code": 5001,
        "message": "Failed to retrieve pricing data"
    }
}

Ağ Geçidi Hataları (Kong'dan)

Bu hatalar, istek uygulamaya ulaşmadan önce API ağ geçidi tarafından döndürülür. Kong'un kendi formatını kullanırlar:

İstek Limiti Aşıldı (429)

json
{
    "message": "API rate limit exceeded"
}

Ağ Geçidi Zaman Aşımı (504)

json
{
    "message": "An invalid response was received from the upstream server"
}

Hata Kodu Referansı

KodAçıklamaHTTP DurumuKaynak
-1API anahtarı sağlanmadı401App
-1Geçersiz API anahtarı veya IP beyaz listede değil401App
-1Kullanıcı bulunamadı404App
4002?services= parametresinde bilinmeyen hizmet400App
5000Sunucu içi hata500App
5001Fiyatlandırma verileri alınamadı500App
5002Kompakt format için fiyat verisi mevcut değil500App
-API istek limiti aşıldı429Kong

Önerilen İstemci Hata Yönetimi

python
response = requests.get(url, headers=headers)
data = response.json()

if response.status_code == 200 and data.get("success"):
    # Başarılı — veriyi işle
    services = data["data"]["services"]
elif response.status_code == 429:
    # Kong istek limiti — bekle ve tekrar dene
    retry_after = response.headers.get("Retry-After", "60")
    time.sleep(int(retry_after))
elif "detail" in data:
    # FastAPI kimlik doğrulama/doğrulama hatası
    detail = data["detail"]
    if isinstance(detail, dict):
        print(f"Error {detail.get('code')}: {detail.get('msg')}")
    else:
        print(f"Error: {detail}")
elif "error" in data:
    # Uygulama hatası
    err = data["error"]
    print(f"Error {err.get('code')}: {err.get('message')}")
else:
    print(f"Unexpected response: {response.status_code}")

/apiv2/prices Uç Noktasından Geçiş

Yön/apiv2/prices (eski)/apiv2/pricing (yeni)
Dönemler5 sabitVeritabanından dinamik
Fiyat kademeleri3 sabit kodlanmışTek fiyat + gelecekteki tiers
Süre varyantlarıMevcut değilenergy_5m
AML fiyatlarıAyrı uç nokta?services=aml ile dahil
Host fiyatlarıYanıt içinde karışıkAyrı host hizmeti
Hizmet filtrelemeMevcut değil?services= parametresi
Birim dönüştürmeBelgelenmemişYanıtta units_meta
Önbellek bilgisiBelgelenmemişHizmet başına cache_ttl
Yanıt formatı{"status": "success", ...}{"success": true, "version": "2.1", "data": {...}}

İstek Limitleri (Rate Limits)

/apiv2/prices ile aynı istek limitleri geçerlidir (Kong ağ geçidinde yapılandırılmıştır).

Notlar

  • Tüm enerji fiyatları SUN cinsindendir — dönüşüm için units_meta kullanın
  • Host fiyatları TRX cinsindendir
  • AML fiyatları USDT cinsindendir ve TRX dönüşümü dahildir
  • Tüm zamanlar UTC saat dilimindedir
  • Verilerin ne sıklıkla yenilendiğini öğrenmek için hizmet başına cache_ttl kullanın
  • Her bir hizmeti nasıl ayrıştıracağınızı belirlemek için pricing_type kullanın
  • Dönemler, sağlayıcılar, oranlar ve tüm değerler dinamiktir — bunları sabit olarak kodlamayın
  • Bandwidth fiyatlandırması isteğe bağlıdır (?services=bandwidth), surcharges ile birlikte tiered_by_amount_and_period yapısını kullanır ve SUB-kullanıcı fiyat artışına tabi değildir