notpanel
सेवाएंमूल्य निर्धारणFAQगिवअवेAPI
notpanel

हर प्लेटफॉर्म के लिए फॉलोअर्स, लाइक और व्यूज़।

कैटलॉग में हमारी सीधे संचालित सेवाएं और जांचे हुए साझेदारों की क्षमता दोनों शामिल हैं। उपलब्धता, समय, refill और drip-feed हर सेवा पर दिखते हैं; रूटिंग और साझेदारों की पहचान गोपनीय रहती है।

प्रोडक्ट

  • सेवाएं
  • मूल्य निर्धारण
  • मूल्य सूचकांक
  • एफिलिएट प्रोग्राम

संसाधन

  • API
  • ब्लॉग
  • FAQ
  • स्थिति

कंपनी

  • हमारे बारे में
  • NotPanel क्यों
  • संपर्क करें

कानूनी

  • सेवा की शर्तें
  • गोपनीयता नीति
  • रिफंड नीति

भाषाएँ

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

© 2026 NotPanel. सर्वाधिकार सुरक्षित।

support@notpanel.com
notpanel
API डॉक्युमेंटेशन
+
API डॉक्युमेंटेशन

परिचय

  • अवलोकन
  • शुरू करना
  • प्रमाणीकरण
  • रेट लिमिट
  • एरर

कैटलॉग

  • सर्विसेज़ की सूची
  • Advanced catalog
  • सेवा प्रकार

ऑर्डर

  • ऑर्डर प्लेस करें
  • ऑर्डर स्टेटस
  • Refund quote
  • रिफिल
  • रद्द करें

अकाउंट

  • Account status
  • बैलेंस

Webhooks

  • Webhooks मैनेज करें

रेफ़रेंस

  • चेंजलॉग
  • SDK और लाइब्रेरी

मदद चाहिए?

support@notpanel.com →

Webhook रजिस्टर करें

एक public URL को supported events में subscribe करता है। हर endpoint को अपना HMAC-SHA256 secret मिलता है, जो बनाते समय एक बार दिखता है। खो जाने पर endpoint हटाकर दोबारा जोड़ें।

POSThttps://notpanel.com/api/v3action=webhook.add
API की आवश्यकरेट लिमिटेड (shared account + IP + action)बॉडी: application/x-www-form-urlencoded
प्रति API की अधिकतम 5 webhooks। सार्वजनिक रूप से पहुंच योग्य HTTPS URL इस्तेमाल करें। असुरक्षित, private, loopback या अन्य non-public destinations अस्वीकार किए जाते हैं।

पैरामीटर

नामटाइपविवरण
keyआवश्यकstringआपकी API की।
actionआवश्यकstringलिटरल स्ट्रिंग "webhook.add" होना चाहिए।
urlआवश्यकstring (URL)सार्वजनिक HTTPS एंडपॉइंट जो POSTs प्राप्त करेगा। सार्वजनिक इंटरनेट से पहुंच योग्य होना चाहिए।
eventsstring (CSV)नीचे दिए छह supported events का comma-separated subset। सभी छह subscribe करने के लिए इसे छोड़ दें।

उदाहरण रिक्वेस्ट

YOUR_API_KEY को अपने डैशबोर्ड के API पेज के तहत जनरेट की गई की से बदलें।

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));

उदाहरण रिस्पॉन्स

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

सामान्य एरर

स्टेटसबॉडीकारण
400{"error":"Maximum 5 webhook endpoints per API key"}मौजूदा एंडपॉइंट ने कैप ख़त्म कर दिया। पहले action=webhook.remove के साथ एक अप्रयुक्त एंडपॉइंट हटाएं।
400{"error":"Webhook URL must be a publicly reachable HTTPS URL"}URL वैध HTTPS नहीं था, parse नहीं हुआ, या private/loopback IP पर resolve हुआ।
400{"error":"Webhook event is invalid","error_code":"INVALID_WEBHOOK_EVENT"}इवेंट नाम allow-list पर नहीं है। स्पेलिंग दोबारा जांचें — नाम "order.<status>" रूप का इस्तेमाल करते हैं।

उपलब्ध इवेंट

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

Webhooks की सूची

action=webhook.list कॉल करने वाली की के तहत रजिस्टर हर एंडपॉइंट लौटाता है, जिसमें उसकी डिलीवरी हेल्थ (status, failureCount, lastDeliveredAt) शामिल है।

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"
  }
]

एक webhook हटाएँ

endpoint UUID के साथ action=webhook.remove endpoint हटाता है और उसका signing secret निरस्त करता है। पहले से चल रही delivery अभी भी आ सकती है; उसके लिए नए events queue नहीं होंगे।

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

{
  "success": true
}

डिलीवरी पेलोड

हर delivery Content-Type: application/json के साथ POST होती है। Body में top-level events, timestamp और deliveryId fields होते हैं। मौजूदा public batching defaults events को अधिकतम 5 seconds तक group करते हैं और अधिकतम 50 event objects रखते हैं; हर object में stable logical id के साथ event, timestamp और data होते हैं। Queueing या outage delay बढ़ा सकती है, इसलिए यह 5-second delivery promise नहीं है। Headers में शामिल हैं:

  • X-Webhook-Signature — sha256=&lt;hex&gt;, जिसे &lt;timestamp&gt;.&lt;exact JSON body bytes&gt; पर compute किया जाता है।
  • X-Webhook-Timestamp — delivery का Unix timestamp, seconds में।
  • X-Webhook-Delivery-Id — batch delivery UUID, जिसे उसी batch के retry में दोबारा इस्तेमाल किया जाता है। Delivery-level event header नहीं होता; हर event body से पढ़ें।
{
  "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"
}

साइनेचर वेरिफ़ाई करना

X-Webhook-Timestamp और मिली हुई JSON body के exact bytes पढ़ें। Endpoint secret से &lt;timestamp&gt;.&lt;body bytes&gt; पर HMAC-SHA256 compute करें, उसे sha256=&lt;hex&gt; के रूप में format करें और constant time में X-Webhook-Signature से तुलना करें। Retry में event IDs और deliveryId वही रहते हैं, लेकिन नया timestamp, body और signature मिलता है।

अपनी replay policy के अनुसार, सही sign हुई delivery को भी अस्वीकार किया जा सकता है यदि उसका timestamp आपके server clock से 5 मिनट से अधिक अलग हो।

Delivery का व्यवहार और retries

  • Retries के साथ best-effort। 2xx response delivery पूरी करता है। हर attempt 30 seconds बाद timeout होती है। Failures को 5 seconds बाद से exponential backoff के साथ retry किया जा सकता है, जिसकी सीमा 5 minutes है; लेकिन delivery टिकाऊ at-least-once guarantee नहीं है।
  • Pause threshold। लगातार 10 failed attempts के बाद endpoint pause हो जाता है। Enable या update action नहीं है; इसे हटाएं, फिर action=webhook.add से replacement register करें और नया दिखाया secret सुरक्षित रखें।
  • Order की गारंटी नहीं है। Handlers idempotent रखें, batch का हर event process करें, logical transition को event id या retried batch को deliveryId से deduplicate करें और महत्वपूर्ण state को action=status से reconcile करें।