Skip to content
Translated page. The English version is the source of truth.

Orchestrator — tek çağrıda toplu siparişler ​

Tek bir istekte 100 adede kadar adres gönderin ve Netts'in her biri için tüm diziyi yürütmesine izin verin: gerekirse adresi etkinleştirin, eksikse bandwidth miktarını tamamlayın, ardından energy kiralayın — büyük miktarları otomatik olarak parçalara bölün.

Bir takip anahtarı ile anında 202 Accepted yanıtı alırsınız ve bağlantıda asla beklemezsiniz. İlerleme daha sonra durum uç noktasından okunur.

Neden kullanılmalı ​

Yeni bir adres için energy siparişi vermek normalde, doğru sırada ve aralarında kendi yeniden deneme mantığınızın bulunduğu üç ayrı çağrı gerektirir. Orchestrator bunu tek bir isteğe indirger ve diziyi adres başına çalıştırır:

probe → activation (adres aktif değilse) → bandwidth (boşta olan < 400 ise) → energy

Etkinleştirme veya bandwidth aşamasındaki bir başarısızlık, o adres için energy siparişini durdurmaz ve bir adresin başarısız olması diğerlerini asla etkilemez.

Uç nokta temel URL'si ​

https://netts.io/apiv2/orchestrator

İstek Başlıkları ​

BaşlıkGerekliAçıklama
Content-TypeEvetapplication/json
X-API-KEYEvetNetts kontrol panelinizden alınan API anahtarınız
X-Real-IPEvetBeyaz listenizdeki IP adresi
X-Idempotency-KeyEvet*Bu sipariş için anahtarınız, A-Z a-z 0-9 . _ : - karakterlerinden oluşan 12–128 karakter

* X-Idempotency-Key başlığı veya gövdedeki clientRequestId alanından biri gereklidir. İkisini de göndermezseniz, istek 5010 ile reddedilir.

Anahtar, siparişin tamamını tanımlar. Aynı anahtarla bir isteğin tekrarlanması, ikinci bir sipariş oluşturmak yerine orijinal sonucu döndürür — bkz. Tekrarlanabilirlik (Idempotency).


Sipariş oluşturma — POST /apiv2/orchestrator ​

İstek gövdesi ​

json
{
    "clientRequestId": "my-batch-2026-01-01-001",
    "defaults": {
        "bandwidth": true,
        "bandwidthAmount": 400,
        "bandwidthPeriod": "1h",
        "check": true,
        "trx_send": false
    },
    "items": [
        { "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE", "amount": 65000 },
        { "receiveAddress": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "amount": 131000 },
        { "receiveAddress": "TYYyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy", "amount": 61000, "bandwidth": false }
    ]
}

Üst düzey alanlar ​

AlanTürGerekliAçıklama
itemsarrayEvet1 ila 100 adres. Tek bir sipariş içindeki mükerrer kayıtlar reddedilir.
clientRequestIdstringHayırSipariş referansınız, A-Z a-z 0-9 . _ : - karakterlerinden oluşan 8–128 karakter. Başlık yoksa idempotency anahtarı işlevi de görür.
defaultsobjectHayırBunları geçersiz kılmayan her bir öğeye uygulanan değerler.

Öğe alanları ​

receiveAddress ve amount dışındaki her alan defaults altında da ayarlanabilir. Öğe üzerindeki bir değer, varsayılan değere göre önceliklidir.

AlanTürVarsayılanAçıklama
receiveAddressstring—Energy alacak TRON adresi
amountint—Bu adres için Energy, 61 000 … 50 000 000
bandwidthbooltrueYetersiz olduğunda bu adres için Bandwidth siparişi ver
bandwidthAmountint400400 veya 5000
bandwidthPeriodstring1h5m veya 1h
checkboolaşağıya bakınÖnce boşta olan Bandwidth miktarını kontrol et ve yeterli varsa siparişi atla
trx_sendboolfalseBandwidth servisine doğrudan iletilir
activationbooltrueAktif değilse adresi etkinleştir. Zaten aktif olduğunu bildiğiniz bir adres için bu adımı atlamak üzere false olarak ayarlayın.

check, bandwidthAmount değeri 400 olduğunda varsayılan olarak true, aksi takdirde false olur — 5 000 birim sipariş etmek genellikle halihazırda ne olduğuna bakılmaksızın bunları istediğiniz anlamına gelir.

Miktarlar adres başınadır. Tek bir istek, farklı miktarları serbestçe harmanlayabilir; tek üst sınır toplam miktardır.

Limitler ​

LimitDeğer
Sipariş başına adres100
Adres başına Energy61 000 … 50 000 000
Sipariş başına toplam Energy50 000 000
Hesap başına işlemdeki siparişler3
Hesap başına işlemdeki adresler300
Kabul edilmek için minimum bakiye4 TRX

50 000 000 üst sınırı her bir adres için değil, istekteki tüm adreslerin toplamı için geçerlidir.

Yanıt — kabul edildi (202, kod 10202) ​

json
{
    "detail": {
        "code": 10202,
        "status": "accepted",
        "msg": "Order accepted for processing",
        "data": {
            "idempotencyKey": "my-batch-2026-01-01-001",
            "requestId": 1234,
            "itemsAccepted": 3,
            "statusUrl": "/apiv2/orchestrator/status/my-batch-2026-01-01-001",
            "items": [
                {
                    "deliveryKey": 5001,
                    "trackingId": "my-batch-2026-01-01-001:TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                    "amount": 65000,
                    "energyChunks": 1,
                    "activation": "planned",
                    "bandwidth": "planned",
                    "status": "queued"
                }
            ]
        }
    }
}

202, yürütüldü değil, sıraya alındı anlamına gelir. Henüz hiçbir ücret tahsil edilmemiştir. Sonuç için statusUrl adresini sorgulayın.

trackingId, idempotency anahtarı + adres ikilisidir — siparişinizdeki tek bir adresin kimliğidir. Kendi günlüklerinizde ve mutabakatınızda bunu kullanın.

Örnek ​

bash
curl -X POST https://netts.io/apiv2/orchestrator \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -H "X-Idempotency-Key: my-batch-2026-01-01-001" \
  -d '{
        "items": [
          {"receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE", "amount": 65000}
        ]
      }'

İlerlemeyi kontrol etme — GET /apiv2/orchestrator/status/{idempotencyKey} ​

Tüm sipariş yerine tek bir adresi almak için ?address=T… ekleyin.

json
{
    "detail": {
        "code": 10000,
        "status": "processing",
        "data": {
            "idempotencyKey": "my-batch-2026-01-01-001",
            "requestId": 1234,
            "clientRequestId": "my-batch-2026-01-01-001",
            "summary": {
                "total": 3, "queued": 1, "processing": 1, "completed": 1,
                "partial": 0, "failed": 0, "insufficient_balance": 0,
                "credentials_revoked": 0, "cancelled": 0
            },
            "items": [
                {
                    "deliveryKey": 5001,
                    "trackingId": "my-batch-2026-01-01-001:TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                    "status": "completed",
                    "energy": {
                        "requested": 65000,
                        "delegated": 65000,
                        "status": "done",
                        "chunks": { "total": 1, "done": 1 },
                        "orderIds": ["1Hxxxxxxxxxx"],
                        "hashes": ["0000000000000000000000000000000000000000000000000000000000000000"]
                    },
                    "activation": { "status": "not_needed", "orderId": null, "hash": null },
                    "bandwidth": {
                        "status": "enough", "orderId": "B1Hxxxxxxxxxxxxxx",
                        "amount": 400, "period": "1h", "hashes": [], "skipReason": null
                    },
                    "attempts": 1,
                    "startedAt": "2026-01-01T00:00:00+00:00",
                    "finishedAt": "2026-01-01T00:00:03+00:00"
                }
            ]
        }
    }
}

Bilinmeyen bir anahtar veya başka bir hesaba ait olan bir anahtar 404 döndürür.

Adres durum değerleri ​

DurumAnlamı
queuedİşleme alınmayı bekliyor
processingDevam ediyor
completedİstenen tüm Energy delege edildi
partialBazı parçalar teslim edildi, bazıları başarısız oldu
failedHiçbir şey teslim edilmedi
insufficient_balanceDurduruldu — bakiyeniz minimum tutarın altına düştü
credentials_revokedSipariş çalışırken API anahtarınız kaldırıldı veya devre dışı bırakıldı
cancelledİptal talebinizle kuyruktan kaldırıldı

Adım durum değerleri ​

AdımDeğerler
activationnot_needed, done, failed, skipped, skipped_unavailable
bandwidthenough, done, failed, skipped
energydone, partial, failed

bandwidth.skipReason, bir skipped durumunu açıklar: option_off (devre dışı bıraktınız), energy_gt_600000 (büyük Energy siparişleri bir Bandwidth takviyesine ihtiyaç duymaz).

Delegasyon karmaları (hashes) ​

energy.hashes teslimat kanıtınızdır. Energy harici bir sağlayıcıdan geldiğinde karma sipariş anında bilinmez — yaklaşık bir dakika sonra doldurulur ve karmalar toplanana ya da bekleme penceresi sona erene kadar adres tamamlandı olarak bildirilmez. Karma değeri mevcut olan completed durumundaki bir adres tamamen sonuçlandırılmıştır.


İptal etme — POST /apiv2/orchestrator/cancel/{idempotencyKey} ​

Henüz işleme alınmamış her adresi kuyruktan kaldırır.

json
{
    "detail": {
        "code": 10005,
        "status": "cancelled",
        "msg": "Order cancelled: 7 addresses removed from queue",
        "data": { "cancelled": 7 }
    }
}

Zaten processing durumunda olan adresler kesintiye uğratılmaz: Energy miktarlarının bir kısmı için zaten ödeme yapılmış olabilir. İptal işlemi, geri kalan kısım için elden gelen en iyi çaba ilkesiyle (best-effort) çalışır.


Tekrarlanabilirlik (Idempotency) ​

Sipariş, anahtarınız tarafından tanımlanır — X-Idempotency-Key başlığı veya başlık olmadığında clientRequestId.

Tekrarlanan istekSonuç
Aynı anahtar, aynı gövdeOrijinal sipariş ve originalAcceptedAt ile 208 — ikinci bir sipariş oluşturulmaz
Aynı anahtar, farklı gövde409 4090 IDEMPOTENCY_CONFLICT

Bu nedenle, tarafınızdaki bir ağ zaman aşımında aynı isteği birebir yeniden denemek güvenlidir. Zaten kullanılmış bir anahtar altındaki yükü değiştirmek, sessizce uygulanmak yerine reddedilir.

Sipariş içinde her adres kendi dahili anahtarını taşır, bu nedenle bir tekrar asla tek bir adresten çift ücret alınmasına da yol açmaz.


Faturalandırma ​

Orchestrator'ın kendisi hiçbir ücret talep etmez. Her adım, işlemi gerçekleştiren servis tarafından kendi normal fiyatı üzerinden faturalandırılır:

AdımFaturalandırma biçimi
Activationayrı kesinti, sipariş numarası A…
Bandwidthayrı kesinti, sipariş numarası B1H… — yalnızca fiilen delege edildiğinde
Energyparça başına bir kesinti, sipariş numarası 1H…

Yeterli boş Bandwidth varken check: true hiçbir maliyet getirmez — durum enough olur ve sipariş verilmez. Büyük Energy miktarları Bandwidth adımını tamamen atlar.

Bakiyeniz toplu işlemin ortasında biterse, kalan adresler denenmeden insufficient_balance olarak sonuçlanır.


Hata Kodu Referansı ​

KodAçıklamaHTTP Durumu
10202Sipariş kabul edildi / zaten kabul edildi202 / 208
10000Durum döndürüldü200
10005Sipariş iptal edildi200
5004Geçersiz alan: adres biçimi, amount aralık dışında, bandwidthAmount 400/5000 değil, bandwidthPeriod 5m/1h değil, gövde bir JSON nesnesi değil400
5005items eksik veya boş400
5006Tek bir siparişte mükerrer receiveAddress400
5009Hatalı biçimlendirilmiş X-Idempotency-Key veya clientRequestId400
5010Ne X-Idempotency-Key ne de clientRequestId sağlandı400
5012İstekteki toplam Energy 50 000 000 sınırını aşıyor400
-1Geçersiz API anahtarı / IP beyaz listede değil401
1004Bakiye 4 TRX minimum tutarının altında402
-1Sipariş bulunamadı (veya size ait değil)404
4090IDEMPOTENCY_CONFLICT — aynı anahtar, farklı gövde409
4220İstek doğrulaması başarısız oldu (ayrıntılar data.errors içinde)422
429 / 5011İşlemde çok fazla sipariş, adres veya parça var429
5003Sipariş kabul edilmedi — servis geçici olarak kullanılamıyor, yeniden denemek güvenlidir503

Oluşturma sırasındaki bir 503 güvenli başarısızlıktır (fail-secure): hiçbir şey depolanmadı ve hiçbir ücret tahsil edilmedi.

İstek Limitleri (Rate Limits) ​

Kaynak IP başına sınırlandırılmıştır:

DönemLimit
1 saniye20 istek

İstek Limiti Aşıldı (429) ​

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

Notlar ​

  • 202 bir teslimat makbuzu değildir. Bunu "sıraya alındı" olarak kabul edin. Sonuç, durum uç noktasında yer alır.
  • Adresler paralel olarak çalışır, tek bir sipariş içinde aynı anda en fazla 5 adet çalışır, böylece büyük bir grup tek bir yavaş adres yüzünden beklemez. Tamamlanma sırası garanti edilmez.
  • Parçalara ayırma (chunking) otomatiktir: 1 000 000 üzerindeki miktarlar eşit parçalara bölünür ve her biri kendi Energy siparişi haline gelir. energy.orderIds ve energy.hashes bunların tümünü listeler.
  • Bir bütün olarak orchestrator siparişleri için webhook yoktur. Her Energy delegasyonu yine de alışılagelmiş delegation.confirmed webhook'unu üretir, bkz. Webhooks.
  • İlgili uç noktalar: Activator, Bandwidth, Order 1H.