API v1
GELİŞTİRİCİ DOKÜMANTASYONUv1.1

Bayi API
Siparişten teslimata.

Proxy satışını kendi sitenize bağlayın. Paketleri listeleyin, fiyatı doğrulayın ve tamamlanan siparişin bağlantı bilgilerini API üzerinden alın.

HTTPSJSONHTTP & SOCKS5

API erişimi etkinleştirilmiş bayi hesabınızla çalışır. İzin verilen paketler ve alış fiyatları hesabınıza göre belirlenir. Örneklerdeki tutarlar ve teslimat bilgileri temsilidir.

Kimlik doğrulama#

Her istekte size tanımlanan anahtarı HTTP başlığında gönderin. Anahtar yalnız kendi sunucunuzda tutulmalıdır.

İstek başlıkları
Authorization: Bearer API_ANAHTARINIZ
Content-Type: application/json
BaşlıkKullanım
AuthorizationTüm uçlarda gerekli. Bearer önekiyle gönderilir.
X-API-KeyAuthorization yerine desteklenen alternatif başlık.
Content-TypePOST isteklerinde application/json.
Sunucudan sunucuya entegrasyon

Anahtarı URL’ye, tarayıcı koduna veya herkese açık bir dosyaya eklemeyin. API erişimi ve anahtar tanımı için bizimle iletişime geçin.

Temel adres ve istek sınırları#

İstekleri aşağıdaki temel adrese gönderin. İşlem, path sorgu parametresiyle seçilir.

Temel API adresi
https://panel.saglamproxy.com/bayi-api/v1/index.php
Örnek istekGET ?path=products
Varsayılan istek sınırı60 istek / dakika

Geçerli limit yanıttaki X-RateLimit-Limit, kalan hak X-RateLimit-Remaining başlığındadır. 429 yanıtında Retry-After süresi kadar bekleyin.

Bu sayfadaki kopyalama düğmeleri yalnız örnek kodu kopyalar. Kodları kendi sunucunuzda çalıştırın. Satın alma isteği hesabınızın bakiyesinden ödeme yapar.

API REFERANSI

Bağlantı kontrolü#

GET?path=ping

Anahtarınızla erişimi ve yeni sipariş alımının açık olup olmadığını kontrol edin.

purchases_enabled: false olduğunda yeni satın alma kapalıdır; durum ve teslimat sorguları açık kalabilir.

İstek örneği
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=ping"
Örnek yanıt200 OK
{
  "success": true,
  "data": {
    "version": "1.1",
    "purchases_enabled": true,
    "pricing_source": "account_dealership"
  }
}
API REFERANSI

Ürün kataloğu#

GET?path=products

Satılabilir paketlerin kimliklerini, adetlerini ve desteklenen dönemlerini alın.

AlanAçıklama
idSatın alma isteğindeki product_id.
quantityPaketin içerdiği proxy adedi.
cyclesDesteklenen ödeme dönemleri.
provisionableOtomatik alıma uygunluk. Satış için true olmalı.
availability_reasonPaket uygun değilse neden kodu.
reseller_discount_percentHesabınıza tanımlı bayi indirim oranı.
Ek alanAçıklama
familyÜrün ailesinin kategori kodu.
supported_protocolsBu pakette gerçekten seçilebilen protokoller.
delivery_typestatic, mobile, rotating veya ipv6.
pricing_sourceaccount_dealership: fiyat hesabınıza ait bayi kurallarından hesaplanır.

Katalog; IPv4 Residential, Knight Online, Metin2, Private SRO, Growtopia, Datacenter, ISP/lokasyon, IPv6, tekil mobil ve rotating proxy ailelerini kapsar. Satın alma erişimi ürün bazında kademeli açılır.

Her alıştan önce provisionable değerini kontrol edin. out_of_stock stok yetersizliğini, automatic_setup_disabled otomatik kurulumun kapalı olduğunu, package_configuration_mismatch paket ayarı uyuşmazlığını belirtir. pilot_required veya adapter_not_verified doğrulama bekleyen ürünlerdir. Kapalı ürünleri kendi sitenizde hemen teslim edilebilir göstermeyin.

Growtopia paketleri yalnız socks5 destekler. Bu ürünlerde protokolü açıkça socks5 gönderin; HTTP varsayılanını kullanmayın. Diğer paketlerde de supported_protocols listesini esas alın.

İstek örneği
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=products"
Örnek yanıt200 OK
{
  "success": true,
  "data": [
    {
      "id": 116,
      "name": "3 Adet IPv4 Residential Proxy",
      "category": "ipv4-residential-proxy",
      "family": "ipv4-residential-proxy",
      "quantity": 3,
      "cycles": [
        "monthly",
        "quarterly",
        "semiannually",
        "annually"
      ],
      "supported_protocols": [
        "http",
        "socks5"
      ],
      "delivery_type": "static",
      "delivery_schema_version": 1,
      "provisionable": true,
      "availability_reason": null,
      "pricing_source": "account_dealership",
      "reseller_discount_percent": 0
    }
  ]
}
API REFERANSI

Bakiye sorgulama#

GET?path=balance

Hesabınızdaki kullanılabilir bakiyeyi ve düşük bakiye durumunu okuyun.

AlanAçıklama
balanceBakiye tutarı ve para birimi.
wallet_emptyBakiye sıfıra yakınsa true.
low_balanceHesaptaki uyarı eşiğine göre düşük bakiye durumu.
İstek örneği
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=balance"
Örnek yanıt200 OK
{
  "success": true,
  "data": {
    "balance": {
      "amount": 500,
      "currency": "TRY"
    },
    "wallet_empty": false,
    "low_balance": false
  }
}
API REFERANSI

Fiyat önizleme#

POST?path=quotes

Bayi indirimi, vergi ve varsa ödeme ücretini içeren güncel toplamı alın. Bu istek satın alma yapmaz.

AlanGerekliAçıklama
product_idEvetKatalogdan alınan sayısal paket kimliği.
cycleEvetYalnız paketin cycles listesindeki dönemler. Örneğin daily, weekly, monthly veya onetime.
protocolHayırPaketin supported_protocols listesinden http veya socks5. Varsayılan http.

İndirim kişiye özeldir. Aynı paketin farklı bayi hesaplarında farklı alış fiyatı olabilir. Hesabınıza tanımlanan ürün, kategori ve genel bayi kuralları WISECP fiyat motorunda değerlendirilir; reseller_rate uygulanan oranı belirtir. Oranı veya fiyatı istek gövdesinde değiştiremezsiniz.

Ödenecek bedel total alanındadır. Vergi ve indirim alanlarını bu tutara yeniden ekleyip çıkarmayın. wallet_sufficient ödeme anındaki bakiye kontrolünün yerine geçmez.

JSON gövdesi
{
  "product_id": 116,
  "cycle": "monthly",
  "protocol": "http"
}

cURL için JSON gövdesini istek.json dosyasına kaydedin.

İstek örneği
curl --request POST --header "Authorization: Bearer API_ANAHTARINIZ" --header "Content-Type: application/json" --data-binary "@istek.json" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=quotes"
Örnek yanıt200 OK
{
  "success": true,
  "data": {
    "product_id": 116,
    "cycle": "monthly",
    "protocol": "http",
    "quantity": 3,
    "reseller_rate": 0,
    "pricing_source": "account_dealership",
    "wallet_sufficient": true,
    "subtotal": {
      "amount": 120,
      "currency": "TRY"
    },
    "discount": {
      "amount": 0,
      "currency": "TRY"
    },
    "tax": {
      "amount": 20,
      "currency": "TRY"
    },
    "fee": null,
    "total": {
      "amount": 120,
      "currency": "TRY"
    }
  }
}
API REFERANSI

Sipariş oluşturma#

POST?path=orders

Onayladığınız paketi hesap bakiyenizden satın alın. İşlemi kendi müşterinizin ödemesini doğruladıktan sonra çağırın.

AlanGerekliAçıklama
external_order_idEvetSizin kalıcı sipariş kalemi numaranız. 1–96 harf/rakam/nokta/tire/alt çizgi; ilk karakter harf veya rakam.
product_idEvetKatalogda alıma uygun paket kimliği.
cycleEvetPaketin desteklediği ödeme dönemi.
protocolHayırhttp veya socks5.
max_totalEvetÖnizlemeden aldığınız azami toplam. "120.00" gibi iki ondalıklı metin.
currencyEvetÖnizlemedeki para birimi; örneğin TRY.
termsEvetSatın alma koşulları için true.

Bir istek bir paket satın alır. 10 adetlik paketin tek alımı 10 proxy verir. Birden fazla paket için farklı kalem numaraları kullanın. İsteğe quantity, özel fiyat, kullanıcı ID’si veya bitiş tarihi eklemeyin.

max_total için her zaman güncel önizlemeyi kullanın. PHP/Python örnekleri bu alanı önizlemeden doldurur. JSON örneğindeki tutar temsilidir.

JSON gövdesi
{
  "external_order_id": "SITE-1001-1",
  "product_id": 116,
  "cycle": "monthly",
  "protocol": "http",
  "max_total": "120.00",
  "currency": "TRY",
  "terms": true
}

cURL için JSON gövdesini istek.json dosyasına kaydedin.

İstek örneği
curl --request POST --header "Authorization: Bearer API_ANAHTARINIZ" --header "Content-Type: application/json" --data-binary "@istek.json" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=orders"
Örnek yanıt200 OK
{
  "success": true,
  "data": {
    "external_order_id": "SITE-1001-1",
    "order_id": 100001,
    "invoice_id": 100002,
    "service_id": 100003,
    "status": "processing",
    "payment_status": "paid",
    "product_id": 116,
    "expected_count": 3,
    "delivered_count": 0,
    "total": {
      "amount": 120,
      "currency": "TRY"
    },
    "expires_at": "2026-11-29T00:00:00+03:00",
    "error_code": null
  }
}
API REFERANSI

Sipariş durumu#

GET?path=orders/SITE-1001-1

Kendi sipariş kalemi numaranızla ödeme ve kurulum durumunu izleyin.

DurumAnlamıSonraki adım
processingKurulum hazırlanıyor.Yaklaşık 5 saniye arayla durumu sorgulayın.
deliveredÖdeme ve tam teslimat doğrulandı.Teslimat ucunu çağırın.
payment_failedÖdeme tamamlanmadı.Mevcut numarayla destek isteyin; yeni alış açmayın.
reviewKurulum eksik veya sonuç belirsiz.Sipariş numarasıyla destek isteyin.

HTTP 200 ve success: true, sorgunun başarıyla işlendiğini belirtir. Teslimat için data.status değerini kontrol edin. payment_status; paid, unpaid veya unknown olabilir.

İstek örneği
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=orders/SITE-1001-1"
Örnek yanıt200 OK
{
  "success": true,
  "data": {
    "external_order_id": "SITE-1001-1",
    "order_id": 100001,
    "invoice_id": 100002,
    "service_id": 100003,
    "status": "processing",
    "payment_status": "paid",
    "product_id": 116,
    "expected_count": 3,
    "delivered_count": 0,
    "total": {
      "amount": 120,
      "currency": "TRY"
    },
    "expires_at": "2026-11-29T00:00:00+03:00",
    "error_code": null
  }
}
API REFERANSI

Proxy teslimatı#

GET?path=orders/SITE-1001-1/delivery

Tamamlanan siparişin bağlantı bilgilerini alıp kendi müşterinize teslim edin.

AlanAçıklama
proxies[].hostHostname, IPv4 veya IPv6 adresi; port bu alana eklenmez.
proxies[].portSeçilen protokole ait port.
proxies[].protocolhttp veya socks5.
proxies[].usernameProxy kullanıcı adı.
proxies[].passwordProxy parolası.
expires_atISO 8601 ve saat dilimiyle bitiş. Süre sınırı olmayan, kota bazlı uygun teslimatta null olabilir.
delivery_typeTeslimatın ürün türü; katalogla aynı değerler.
quotaDesteklenen teslimatta isteğe bağlı kota tanımı. scope: per_proxy, limit_bytes ve unlimited. Canlı tüketim ölçümü değildir.

IPv6 adresinden bağlantı metni oluştururken [IPv6]:PORT biçimini kullanın. Rotating paketlerde farklı kullanıcıların aynı host ve porta bağlanması normaldir; çıkış IP’si bağlantı sırasında belirlenebilir.

IPv6 çıkışlı proxyleri IPv6 destekleyen bir hedefte test edin; örneğin https://api6.ipify.org?format=json. Yalnız IPv4 erişimi olan hedeflerde bağlantı kurulamaması, IPv6 teslimatının eksik olduğu anlamına gelmez.

Teslimat yalnız ödeme ve tam paket doğrulandıktan sonra açılır. Paket eksikse kısmi parola listesi verilmez. Teslimat verisini kendi müşterinize güvenli şekilde sunun ve günlüklerinize yazmayın.

İstek örneği
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=orders/SITE-1001-1/delivery"
Örnek yanıt200 OK
{
  "success": true,
  "data": {
    "external_order_id": "SITE-1001-1",
    "order_id": 100001,
    "invoice_id": 100002,
    "service_id": 100003,
    "status": "delivered",
    "payment_status": "paid",
    "product_id": 116,
    "expected_count": 3,
    "delivered_count": 3,
    "total": {
      "amount": 120,
      "currency": "TRY"
    },
    "expires_at": "2026-11-29T00:00:00+03:00",
    "error_code": null,
    "proxies": [
      {
        "host": "192.0.2.10",
        "port": 3128,
        "protocol": "http",
        "username": "ornek_kullanici",
        "password": "ORNEK_PAROLA"
      },
      {
        "host": "192.0.2.11",
        "port": 3129,
        "protocol": "http",
        "username": "ornek_kullanici",
        "password": "ORNEK_PAROLA"
      },
      {
        "host": "192.0.2.12",
        "port": 3130,
        "protocol": "http",
        "username": "ornek_kullanici",
        "password": "ORNEK_PAROLA"
      }
    ]
  }
}

Tekrar denemeler ve sipariş güvenliği#

Siparişi göndermeden önce kendi sisteminizde external_order_id değerini kalıcı kaydedin. Bağlantı kesilse bile aynı numarayı koruyun.

SenaryoDavranış
Aynı numara ve aynı istekMevcut siparişin durumu döner; ikinci alışa çevrilmez.
Aynı numara, farklı içerik409 external_id_conflict döner.
Aynı hesapta işlem sürüyor409 account_busy sonrasında 2–5 saniye bekleyip aynı istekle deneyin.
Yanıt gelmedi veya 503 oluştuÖnce durum sorgulayın. Yeni numarayla ikinci alış üretmeyin.
Fiyat değiştiÖnce durum sorgulayın. Kayıt yoksa yeni önizlemeyle azami bedeli güncelleyin; kayıt varsa destek isteyin.

Tekrar koruması 24 saatle sınırlı değildir. Anahtar değişse de hesap ve dış sipariş numarası eşleştirmesi korunur. İlk sürüm yeni satın alma ve teslimatı kapsar; yenileme, iptal ve silme uçları içermez.

Hata kodları#

Hata yanıtı
{
  "success": false,
  "error": {
    "code": "insufficient_balance",
    "message": "Bakiye yetersiz; önce bakiye yükleyin."
  }
}
HTTPerror.codeNe yapmalı?
401missing_token / invalid_token / key_revokedAnahtarı veya erişim durumunu kontrol edin.
403account_forbidden / insufficient_scopeHesabın ya da anahtarın işlem izni yok.
403product_forbiddenPaket hesabın API kapsamı dışında.
404order_not_foundBu hesapta dış sipariş bulunamadı.
409account_busyAynı numara ve gövdeyle bekleyip tekrar deneyin.
409external_id_conflictNumara daha önce başka içerikle kullanıldı.
409price_changed / currency_changed / price_inconsistentGüncel önizlemeyi ve mevcut siparişi kontrol edin.
409price_invalidSıfır veya negatif toplam otomatik satın almaya uygun değil.
409product_unavailablePaket otomatik alıma uygun değil.
409discount_unavailableBayi indirimi doğrulanamadı; satın alma yapılmadı.
409delivery_not_readyTeslimat hazır değil; durumu sorgulayın.
422insufficient_balanceBakiye yükleyin; mevcut sipariş varsa yeni alış açmayın.
422unknown_field / cycle_invalid / protocol_invalid / protocol_unsupportedİstek gövdesini veya dönemi düzeltin.
429rate_limited / abuse_lockoutRetry-After süresi kadar bekleyin.
503api_unavailable / purchases_disabledAPI erişimi veya yeni alım geçici olarak kapalı.
503native_unavailable / temporarily_unavailableDış sipariş numarasını koruyarak durumu kontrol edin.

Örnek kodlar ve OpenAPI#

Kendi sunucunuzda kullanabileceğiniz istemciler ve makine tarafından okunabilir API tanımı.

Örnekler API anahtarı içermez. .env.example dosyasını kendi sunucunuzda doldurun. İstemciler doğrudan çalıştırıldığında yalnız katalog sorgular.

cURL örnekleri tek satırdır; Windows CMD, Linux ve macOS terminallerinde kullanılabilir. PowerShell’de yerleşik komutla karışmasını önlemek için curl.exe kullanabilirsiniz. PHP istemcisi için cURL eklentisi ve güncel HTTPS CA deposu gerekir; sertifika doğrulamasını açık tutun.