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.
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.
Authorization: Bearer API_ANAHTARINIZ
Content-Type: application/json| Başlık | Kullanım |
|---|---|
Authorization | Tüm uçlarda gerekli. Bearer önekiyle gönderilir. |
X-API-Key | Authorization yerine desteklenen alternatif başlık. |
Content-Type | POST isteklerinde application/json. |
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.
https://panel.saglamproxy.com/bayi-api/v1/index.phpGET ?path=productsGeç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.
Bağlantı kontrolü#
?path=pingAnahtarı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.
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=ping"require 'SaglamBayiApi.php';
$api = new SaglamBayiApi(getenv('SAGLAM_API_KEY'));
$result = $api->request('GET', 'ping');import os
from saglam_bayi_api import SaglamBayiAPI
api = SaglamBayiAPI(os.environ['SAGLAM_API_KEY'])
result = api.request('GET', 'ping'){
"success": true,
"data": {
"version": "1.1",
"purchases_enabled": true,
"pricing_source": "account_dealership"
}
}Ürün kataloğu#
?path=productsSatılabilir paketlerin kimliklerini, adetlerini ve desteklenen dönemlerini alın.
| Alan | Açıklama |
|---|---|
id | Satın alma isteğindeki product_id. |
quantity | Paketin içerdiği proxy adedi. |
cycles | Desteklenen ödeme dönemleri. |
provisionable | Otomatik alıma uygunluk. Satış için true olmalı. |
availability_reason | Paket uygun değilse neden kodu. |
reseller_discount_percent | Hesabınıza tanımlı bayi indirim oranı. |
| Ek alan | Açıklama |
|---|---|
family | Ürün ailesinin kategori kodu. |
supported_protocols | Bu pakette gerçekten seçilebilen protokoller. |
delivery_type | static, mobile, rotating veya ipv6. |
pricing_source | account_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.
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=products"require 'SaglamBayiApi.php';
$api = new SaglamBayiApi(getenv('SAGLAM_API_KEY'));
$result = $api->products();import os
from saglam_bayi_api import SaglamBayiAPI
api = SaglamBayiAPI(os.environ['SAGLAM_API_KEY'])
result = api.products(){
"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
}
]
}Bakiye sorgulama#
?path=balanceHesabınızdaki kullanılabilir bakiyeyi ve düşük bakiye durumunu okuyun.
| Alan | Açıklama |
|---|---|
balance | Bakiye tutarı ve para birimi. |
wallet_empty | Bakiye sıfıra yakınsa true. |
low_balance | Hesaptaki uyarı eşiğine göre düşük bakiye durumu. |
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=balance"require 'SaglamBayiApi.php';
$api = new SaglamBayiApi(getenv('SAGLAM_API_KEY'));
$result = $api->balance();import os
from saglam_bayi_api import SaglamBayiAPI
api = SaglamBayiAPI(os.environ['SAGLAM_API_KEY'])
result = api.balance(){
"success": true,
"data": {
"balance": {
"amount": 500,
"currency": "TRY"
},
"wallet_empty": false,
"low_balance": false
}
}Fiyat önizleme#
?path=quotesBayi indirimi, vergi ve varsa ödeme ücretini içeren güncel toplamı alın. Bu istek satın alma yapmaz.
| Alan | Gerekli | Açıklama |
|---|---|---|
product_id | Evet | Katalogdan alınan sayısal paket kimliği. |
cycle | Evet | Yalnız paketin cycles listesindeki dönemler. Örneğin daily, weekly, monthly veya onetime. |
protocol | Hayır | Paketin 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.
{
"product_id": 116,
"cycle": "monthly",
"protocol": "http"
}cURL için JSON gövdesini istek.json dosyasına kaydedin.
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"require 'SaglamBayiApi.php';
$api = new SaglamBayiApi(getenv('SAGLAM_API_KEY'));
$result = $api->quote(116, 'monthly', 'http');import os
from saglam_bayi_api import SaglamBayiAPI
api = SaglamBayiAPI(os.environ['SAGLAM_API_KEY'])
result = api.quote(116, 'monthly', 'http'){
"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"
}
}
}Sipariş oluşturma#
?path=ordersOnayladığınız paketi hesap bakiyenizden satın alın. İşlemi kendi müşterinizin ödemesini doğruladıktan sonra çağırın.
| Alan | Gerekli | Açıklama |
|---|---|---|
external_order_id | Evet | Sizin kalıcı sipariş kalemi numaranız. 1–96 harf/rakam/nokta/tire/alt çizgi; ilk karakter harf veya rakam. |
product_id | Evet | Katalogda alıma uygun paket kimliği. |
cycle | Evet | Paketin desteklediği ödeme dönemi. |
protocol | Hayır | http veya socks5. |
max_total | Evet | Önizlemeden aldığınız azami toplam. "120.00" gibi iki ondalıklı metin. |
currency | Evet | Önizlemedeki para birimi; örneğin TRY. |
terms | Evet | Satı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.
{
"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.
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"require 'SaglamBayiApi.php';
$api = new SaglamBayiApi(getenv('SAGLAM_API_KEY'));
$quote = $api->quote(116, 'monthly', 'http');
$result = $api->order(
'SITE-1001-1', 116, 'monthly', 'http',
number_format($quote['total']['amount'], 2, '.', ''),
$quote['total']['currency']
);import os
from saglam_bayi_api import SaglamBayiAPI
api = SaglamBayiAPI(os.environ['SAGLAM_API_KEY'])
quote = api.quote(116, 'monthly', 'http')
result = api.order(
'SITE-1001-1', 116, 'monthly', 'http',
f"{quote['total']['amount']:.2f}",
quote['total']['currency']
){
"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
}
}Sipariş durumu#
?path=orders/SITE-1001-1Kendi sipariş kalemi numaranızla ödeme ve kurulum durumunu izleyin.
| Durum | Anlamı | Sonraki adım |
|---|---|---|
processing | Kurulum 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. |
review | Kurulum 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.
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=orders/SITE-1001-1"require 'SaglamBayiApi.php';
$api = new SaglamBayiApi(getenv('SAGLAM_API_KEY'));
$result = $api->status('SITE-1001-1');import os
from saglam_bayi_api import SaglamBayiAPI
api = SaglamBayiAPI(os.environ['SAGLAM_API_KEY'])
result = api.status('SITE-1001-1'){
"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
}
}Proxy teslimatı#
?path=orders/SITE-1001-1/deliveryTamamlanan siparişin bağlantı bilgilerini alıp kendi müşterinize teslim edin.
| Alan | Açıklama |
|---|---|
proxies[].host | Hostname, IPv4 veya IPv6 adresi; port bu alana eklenmez. |
proxies[].port | Seçilen protokole ait port. |
proxies[].protocol | http veya socks5. |
proxies[].username | Proxy kullanıcı adı. |
proxies[].password | Proxy parolası. |
expires_at | ISO 8601 ve saat dilimiyle bitiş. Süre sınırı olmayan, kota bazlı uygun teslimatta null olabilir. |
delivery_type | Teslimatın ürün türü; katalogla aynı değerler. |
quota | Desteklenen 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.
curl --header "Authorization: Bearer API_ANAHTARINIZ" "https://panel.saglamproxy.com/bayi-api/v1/index.php?path=orders/SITE-1001-1/delivery"require 'SaglamBayiApi.php';
$api = new SaglamBayiApi(getenv('SAGLAM_API_KEY'));
$result = $api->delivery('SITE-1001-1');import os
from saglam_bayi_api import SaglamBayiAPI
api = SaglamBayiAPI(os.environ['SAGLAM_API_KEY'])
result = api.delivery('SITE-1001-1'){
"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.
| Senaryo | Davranış |
|---|---|
| Aynı numara ve aynı istek | Mevcut siparişin durumu döner; ikinci alışa çevrilmez. |
| Aynı numara, farklı içerik | 409 external_id_conflict döner. |
| Aynı hesapta işlem sürüyor | 409 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ı#
{
"success": false,
"error": {
"code": "insufficient_balance",
"message": "Bakiye yetersiz; önce bakiye yükleyin."
}
}| HTTP | error.code | Ne yapmalı? |
|---|---|---|
| 401 | missing_token / invalid_token / key_revoked | Anahtarı veya erişim durumunu kontrol edin. |
| 403 | account_forbidden / insufficient_scope | Hesabın ya da anahtarın işlem izni yok. |
| 403 | product_forbidden | Paket hesabın API kapsamı dışında. |
| 404 | order_not_found | Bu hesapta dış sipariş bulunamadı. |
| 409 | account_busy | Aynı numara ve gövdeyle bekleyip tekrar deneyin. |
| 409 | external_id_conflict | Numara daha önce başka içerikle kullanıldı. |
| 409 | price_changed / currency_changed / price_inconsistent | Güncel önizlemeyi ve mevcut siparişi kontrol edin. |
| 409 | price_invalid | Sıfır veya negatif toplam otomatik satın almaya uygun değil. |
| 409 | product_unavailable | Paket otomatik alıma uygun değil. |
| 409 | discount_unavailable | Bayi indirimi doğrulanamadı; satın alma yapılmadı. |
| 409 | delivery_not_ready | Teslimat hazır değil; durumu sorgulayın. |
| 422 | insufficient_balance | Bakiye yükleyin; mevcut sipariş varsa yeni alış açmayın. |
| 422 | unknown_field / cycle_invalid / protocol_invalid / protocol_unsupported | İstek gövdesini veya dönemi düzeltin. |
| 429 | rate_limited / abuse_lockout | Retry-After süresi kadar bekleyin. |
| 503 | api_unavailable / purchases_disabled | API erişimi veya yeni alım geçici olarak kapalı. |
| 503 | native_unavailable / temporarily_unavailable | Dış 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.