İçeriğe geç

Idempotency-Key

POST /orders ve POST /orders/{id}/renew her yeni sipariş ya da yenileme için benzersiz bir Idempotency-Key başlığı ister. Zaman aşımında aynı değerle tekrar denemek güvenlidir: tamamlanmış istek yeniden döndürülür (meta.idempotent_replay: true) ve asla iki kez ücret kesilmez.

Idempotency-Key: 3f7a1c9e-2b48-4d51-9c3a-8e6f0d215b47

Anahtarı bir kez üretin

Her yeni sipariş ya da yenileme için bir UUID üretin ve bir değişkende tutun.

Zaman aşımında aynı anahtarla deneyin

Yanıt gelmediyse isteği aynı anahtarla tekrar gönderin. Tekrar için yeni anahtar üretmek ikinci bir sipariş açar.

409 ve Retry-After

İlk istek hâlâ işlenirken gelen tekrar 409 conflict ve Retry-After alır; bekleyip aynı anahtarla tekrar deneyin.

import { randomUUID } from "node:crypto";

const key = randomUUID(); // tekrar denemelerde AYNI değer

async function createOrder(body) {
  for (let attempt = 0; attempt < 3; attempt++) {
    const res = await fetch("https://api.proxynet.io/api/v1/orders", {
      method: "POST",
      headers: {
        Authorization: `Bearer ${process.env.PROXYNET_TOKEN}`,
        "Idempotency-Key": key,
        "Content-Type": "application/json",
      },
      body: JSON.stringify(body),
    });
    if (res.status === 409 && res.headers.get("retry-after")) {
      await new Promise((r) => setTimeout(r, Number(res.headers.get("retry-after")) * 1000));
      continue;
    }
    return res.json();
  }
}
import os, time, uuid, requests

key = str(uuid.uuid4())  # tekrar denemelerde AYNI değer

def create_order(body):
    for _ in range(3):
        res = requests.post(
            "https://api.proxynet.io/api/v1/orders",
            headers={
                "Authorization": f"Bearer {os.environ['PROXYNET_TOKEN']}",
                "Idempotency-Key": key,
            },
            json=body,
        )
        if res.status_code == 409 and "Retry-After" in res.headers:
            time.sleep(int(res.headers["Retry-After"]))
            continue
        return res.json()

Anahtar ne zaman serbest kalır

  • Anahtar yalnızca deneme kesinlikle ücret kesmediyse serbest bırakılır: 4xx ret ya da ücreti iade edilen sağlayıcı hatası (details.refunded: true). Bu durumda aynı anahtar yeni bir deneme başlatır.
  • Bir anahtar tek bir işlem içindir. Aynı anahtarı farklı bir gövdeyle (hedefler, ad ve seçenekler dahil) göndermek ya da başka bir sipariş veya yenileme için kullanmak400 invalid_request döner. Sipariş açmış bir anahtar yenilemede, yenilemede kullanılmış bir anahtar siparişte kabul edilmez.
  • details.order_id içeren 409 conflict, o anahtarla açılan siparişin artık etkin olmadığını gösterir (otomatik iade yapılamadan başarısız oldu ya da iptal edildi). Yeni anahtar kullanın; ücret kesildiyse destekle iletişime geçin.

Sipariş hazır mı

meta.ready siparişin şimdiden aktif olup olmadığını söyler, tekrar yanıtında da. Ön sipariş, zamanlanmış aktivasyon ya da sağlayıcı gecikmesinde false olur vemeta.warning dolar. Siparişi henüz kullanıma vermeyin; state active olana kadar GET /orders/{id} ile yoklayın.

Kimlik bilgileri

Kullanıcı adı ve parola opsiyoneldir. Göndermezseniz sistem üretir; token'da proxies:read da varsa yanıtta döner. Kendiniz seçmek planınızın buna izin vermesini gerektirir:/me yanıtındaki plan.custom_credentials alanına bakın.

Tipe göre sipariş alanları

✓ kabul edilir, ✓* zorunlu, — bu tipte kullanılmaz; parantez içindeki değer, alan gönderilmezse kullanılan varsayılandır. Bilinmeyen alanlar reddedilir; yazım hatası sessizce yok sayılmaz.

AlanISP / DatacenterGamingResidential / Mobile
orderType✓*✓*✓*
locationId✓*✓*—
quantity✓*✓*—
unlimitedAccess / targetUrls✓*——
protocol✓ (auto)✓ (socks5)—
highConnection✓✓✓
extraIpWhitelist✓✓—
nonSequentialIps✓✓—
highSpeed✓✓—
countryCode——✓
gbLimit——✓
username / password / gateName✓✓✓

Ayar değişiklikleri

Hizmet adı ve trafik limiti gibi ayar değişiklikleri para harcamaz ve ayrı bir yetkiyle (proxies:write) yapılır. Idempotency-Key istemezler.