notpanel
HizmetlerFiyatlandırmaSSSÇekilişAPI
notpanel

Her platform için takipçi, beğeni ve görüntüleme.

Katalog, doğrudan işlettiğimiz hizmetleri ve doğrulanmış ortakların kapasitesini birleştirir. Kullanılabilirlik, süre, refill ve drip-feed her hizmette gösterilir; yönlendirme ve ortak kimlikleri gizli kalır.

Ürün

  • Hizmetler
  • Fiyatlandırma
  • Fiyat endeksi
  • Ortaklık Programı

Kaynaklar

  • API
  • Blog
  • SSS
  • Durum

Şirket

  • Hakkımızda
  • Neden NotPanel
  • Bize Ulaşın

Yasal

  • Hizmet Şartları
  • Gizlilik Politikası
  • İade Politikası

Diller

  • English
  • Español
  • Português
  • Русский
  • Türkçe
  • العربية
  • हिन्दी
  • Bahasa Indonesia
  • Français
  • 中文

© 2026 NotPanel. Tüm hakları saklıdır.

support@notpanel.com
notpanel
API dokümantasyonu
+
API dokümantasyonu

Giriş

  • Genel bakış
  • Başlarken
  • Kimlik Doğrulama
  • Hız limitleri
  • Hatalar

Katalog

  • Servisleri listeleme
  • Gelişmiş katalog
  • Hizmet türleri

Siparişler

  • Sipariş verme
  • Sipariş durumu
  • İade teklifi
  • Yeniden dolum
  • İptal

Hesap

  • Hesap durumu
  • Bakiye

Webhook'lar

  • Webhook'ları yönet

Referans

  • Değişiklik günlüğü
  • SDK'lar ve kütüphaneler

Yardım mı gerekli?

support@notpanel.com →

Webhook kaydet

Herkese açık URL'yi desteklenen olaylara abone eder. Her uç noktanın HMAC-SHA256 gizli anahtarı oluşturulurken bir kez gösterilir. Kaybolursa uç noktayı kaldırıp yeniden ekleyin.

POSThttps://notpanel.com/api/v3action=webhook.add
API anahtarı gerekliHız sınırlı (paylaşılan hesap + IP + işlem)Gövde: application/x-www-form-urlencoded
API anahtarı başına en fazla 5 webhook. Herkese açık erişilebilir HTTPS URL kullanın. Güvensiz, özel, loopback veya diğer herkese kapalı hedefler reddedilir.

Parametreler

AdTürAçıklama
keyZorunlustringAPI anahtarınız.
actionZorunlustringBirebir "webhook.add" dizesi olmalıdır.
urlZorunlustring (URL)POST'ları alacak herkese açık HTTPS uç noktası. Herkese açık internetten erişilebilir olmalıdır.
eventsstring (CSV)Aşağıdaki altı desteklenen olayın virgülle ayrılmış alt kümesi. Altısına da abone olmak için atlayın.

Örnek istek

YOUR_API_KEY değerini panonuzun API sayfası altında oluşturulan anahtarla değiştirin.

curl -X POST https://notpanel.com/api/v3 \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "key=YOUR_API_KEY&action=webhook.add&url=https://your-server.example.com/notpanel-webhook&events=order.completed,order.refunded"
const res = await fetch("https://notpanel.com/api/v3", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    key: "YOUR_API_KEY",
    action: "webhook.add",
    url: "https://your-server.example.com/notpanel-webhook",
    events: "order.completed,order.refunded",
  }),
});

const data = await res.json();
console.log(data);
import requests

res = requests.post(
  "https://notpanel.com/api/v3",
  data={
    "key": "YOUR_API_KEY",
    "action": "webhook.add",
    "url": "https://your-server.example.com/notpanel-webhook",
    "events": "order.completed,order.refunded",
},
)
print(res.json())
<?php
$body = http_build_query([
    'key' => 'YOUR_API_KEY',
    'action' => 'webhook.add',
    'url' => 'https://your-server.example.com/notpanel-webhook',
    'events' => 'order.completed,order.refunded',
]);

$response = file_get_contents('https://notpanel.com/api/v3', false, stream_context_create([
    'http' => [
        'method'  => 'POST',
        'header'  => "Content-Type: application/x-www-form-urlencoded\r\n",
        'content' => $body,
        'ignore_errors' => true,
    ],
]));

print_r(json_decode($response, true));

Örnek yanıt

{
  "webhook_id": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
  "url": "https://your-server.example.com/notpanel-webhook",
  "secret": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
  "events": [
    "order.completed",
    "order.refunded"
  ]
}

Yaygın hatalar

DurumGövdeNeden
400{"error":"Maximum 5 webhook endpoints per API key"}Mevcut uç noktalar üst sınırı tüketti. Önce action=webhook.remove ile kullanılmayan bir uç noktayı kaldırın.
400{"error":"Webhook URL must be a publicly reachable HTTPS URL"}URL geçerli bir HTTPS adresi değildi, ayrıştırılamadı veya özel/loopback bir IP’ye çözümlendi.
400{"error":"Webhook event is invalid","error_code":"INVALID_WEBHOOK_EVENT"}Olay adı izin listesinde değil. Yazımı yeniden kontrol edin — adlar "order.<status>" biçimini kullanır.

Kullanılabilir olaylar

  • order.completed
  • order.partial
  • order.processing
  • order.in_progress
  • order.refunded
  • order.refill_completed

Webhook'ları listeleme

action=webhook.list, çağrı yapan anahtar altında kayıtlı her uç noktayı, teslimat sağlığıyla (status, failureCount, lastDeliveredAt) birlikte döndürür.

key=YOUR_API_KEY&action=webhook.list
[
  {
    "id": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
    "url": "https://your-server.example.com/notpanel-webhook",
    "events": ["order.completed", "order.refunded"],
    "status": "active",
    "failureCount": 0,
    "lastDeliveredAt": "2026-04-30T15:42:11.000Z",
    "createdAt": "2026-04-15T09:01:00.000Z"
  }
]

Bir webhook'u kaldırma

Uç nokta UUID'siyle action=webhook.remove, uç noktayı kaldırır ve imzalama gizli anahtarını iptal eder. Başlamış teslimat gelebilir; yeni olaylar kuyruğa alınmaz.

key=YOUR_API_KEY&action=webhook.remove&id=3f2504e0-4f89-41d3-9a0c-0305e82c3301

{
  "success": true
}

Teslimat yükü

Her teslimat Content-Type: application/json ile POST'tur. Gövde events, timestamp ve deliveryId içerir. Güncel genel varsayılanlar en fazla 5 saniye gruplar ve her biri sabit mantıksal id, event, timestamp, data taşıyan en fazla 50 olay içerir. Kuyruk veya kesinti gecikme ekleyebilir; bu 5 saniyede teslimat sözü değildir. Header'lar:

  • X-Webhook-Signature — &lt;timestamp&gt;.&lt;exact JSON body bytes&gt; üzerinden hesaplanan sha256=&lt;hex&gt;.
  • X-Webhook-Timestamp — teslimatın saniye cinsinden Unix zaman damgası.
  • X-Webhook-Delivery-Id — aynı batch yeniden denendiğinde tekrar kullanılan teslimat UUID'si. Teslimat düzeyinde olay header'ı yoktur; her olayı gövdeden okuyun.
{
  "events": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "event": "order.completed",
      "timestamp": 1777534931,
      "data": {
        "order": 7001,
        "orderId": 7001,
        "serviceId": 1,
        "status": "Completed",
        "status_key": "completed",
        "charge": "0.50",
        "startCount": 1234,
        "remains": 0
      }
    }
  ],
  "timestamp": 1777534931,
  "deliveryId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}

İmzaları doğrulama

X-Webhook-Timestamp ve alınan tam JSON baytlarını okuyun. Secret ile &lt;timestamp&gt;.&lt;body bytes&gt; üzerinde HMAC-SHA256 hesaplayın, sha256=&lt;hex&gt; biçiminde sabit zamanda X-Webhook-Signature ile karşılaştırın. Retry event ID'lerini ve deliveryId değerini korur; timestamp, gövde ve imza yenilenir.

Kendi tekrar politikanız olarak, doğru imzalı teslimatın zaman damgası sunucu saatinizden 5 dakikadan fazla farklıysa reddedebilirsiniz.

Teslimat davranışı ve yeniden denemeler

  • Yeniden denemeli en-iyi-çaba. 2xx yanıt teslimatı tamamlar. Her deneme 30 saniyede zaman aşımına uğrar. Hatalar 5 saniye sonra başlayıp 5 dakikayla sınırlı üstel gecikmeyle yeniden denenebilir; kalıcı en-az-bir-kez garantisi yoktur.
  • Duraklatma eşiği. Uç nokta 10 ardışık başarısız denemeden sonra duraklatılır. Etkinleştirme veya güncelleme action’ı yoktur; uç noktayı kaldırın, action=webhook.add ile yenisini kaydedin ve gösterilen yeni secret’ı saklayın.
  • Sıra garanti edilmez. İşleyicileri idempotent tutun, gruptaki her olayı işleyin, mantıksal geçişi event id değeriyle veya yeniden denenen grubu deliveryId ile tekilleştirin ve önemli durumu action=status ile uzlaştırın.