Webhooks API
रियल-टाइम रिस्पॉन्स नोटिफिकेशन के लिए प्रति-फॉर्म और ग्लोबल webhooks कॉन्फ़िगर करें।
Webhooks आपको फॉर्म में नई सबमिशन आने पर रियल-टाइम HTTP POST नोटिफिकेशन प्राप्त करने की सुविधा देते हैं। NueForm दो स्तरों के webhooks सपोर्ट करता है:
- फॉर्म webhooks -- प्रति फॉर्म एक URL जो उस विशिष्ट फॉर्म की सबमिशन प्राप्त करता है।
- ग्लोबल webhooks -- अधिकतम 5 URLs जो आपके सभी फॉर्म की सबमिशन प्राप्त करते हैं।
Webhooks के लिए Pro plan या उससे ऊपर का प्लान आवश्यक है। फ्री प्लान पर webhook endpoints का उपयोग करने का प्रयास 403 error लौटाएगा।
सभी request और response bodies snake_case फ़ील्ड नामों का उपयोग करते हैं।
Get Form Webhook
/api/v1/forms/:id/webhooksकिसी विशिष्ट फॉर्म के लिए कॉन्फ़िगर किए गए webhook URL को प्राप्त करता है।
Path Parameters
idstringआवश्यकफॉर्म ID
यदि कोई webhook कॉन्फ़िगर नहीं है, तो webhook_url का मान null होगा।
Response
{
"webhook_url": "https://example.com/hooks/nueform"
}
Code Examples
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY"
Set Form Webhook
/api/v1/forms/:id/webhooksकिसी विशिष्ट फॉर्म के लिए webhook URL सेट या क्लियर करता है। जब कोई सबमिशन प्राप्त होती है, तो NueForm इस URL पर रिस्पॉन्स डेटा के साथ एक HTTP POST भेजेगा।
Path Parameters
idstringआवश्यकफॉर्म ID
Request Body
urlstring or nullआवश्यकWebhook URL। एक वैध URL होना चाहिए। webhook हटाने के लिए null सेट करें।
Request Example
{
"url": "https://example.com/hooks/nueform"
}
Webhook हटाने के लिए:
{
"url": null
}
Response
{
"webhook_url": "https://example.com/hooks/nueform"
}
Code Examples
curl -X PUT "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/hooks/nueform" }'
List Global Webhooks
/api/v1/webhooksआपके अकाउंट के लिए कॉन्फ़िगर किए गए सभी ग्लोबल webhooks प्राप्त करता है। ग्लोबल webhooks आपके सभी फॉर्म की प्रत्येक सबमिशन के लिए फायर होते हैं।
Response
{
"webhooks": [
{
"url": "https://example.com/hooks/all-forms",
"enabled": true
},
{
"url": "https://backup.example.com/hooks/nueform",
"enabled": false
}
]
}
Code Examples
curl -X GET "https://api.nueform.io/api/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY"
Set Global Webhooks
/api/v1/webhooksसभी ग्लोबल webhooks को दिए गए array से बदलता है। आप अधिकतम 5 ग्लोबल webhooks कॉन्फ़िगर कर सकते हैं। प्रत्येक webhook को व्यक्तिगत रूप से enable या disable किया जा सकता है।
Request Body
webhooksarrayआवश्यकWebhook objects का array (अधिकतम 5)
Request Example
{
"webhooks": [
{
"url": "https://example.com/hooks/all-forms",
"enabled": true
},
{
"url": "https://slack-webhook.example.com/nueform",
"enabled": true
},
{
"url": "https://backup.example.com/hooks/nueform",
"enabled": false
}
]
}
Response
{
"webhooks": [
{
"url": "https://example.com/hooks/all-forms",
"enabled": true
},
{
"url": "https://slack-webhook.example.com/nueform",
"enabled": true
},
{
"url": "https://backup.example.com/hooks/nueform",
"enabled": false
}
]
}
Code Examples
curl -X PUT "https://api.nueform.io/api/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhooks": [
{ "url": "https://example.com/hooks/all-forms", "enabled": true },
{ "url": "https://backup.example.com/hooks/nueform", "enabled": false }
]
}'
Get Webhook Secret
/api/v1/webhooks/secretआपका webhook signing secret प्राप्त करता है। यदि अभी तक कोई secret मौजूद नहीं है, तो एक स्वचालित रूप से जनरेट होता है। Secret 32 random bytes से निकाली गई 64-character hex string है।
इस secret का उपयोग X-NueForm-Signature header में HMAC-SHA256 signature को validate करके यह सत्यापित करने के लिए करें कि आने वाले webhook requests वास्तव में NueForm से हैं।
Signatures सत्यापित करना
जब NueForm एक webhook भेजता है, तो इसमें एक X-NueForm-Signature header शामिल होता है जिसमें request body का HMAC-SHA256 hex digest होता है। प्रामाणिकता सुनिश्चित करने के लिए अपने webhook handler में इसे verify करें।
Response
{
"secret": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2"
}
Signature Verification Examples
const crypto = require("crypto");
function verifyWebhookSignature(body, signature, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(body)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
Code Examples
curl -X GET "https://api.nueform.io/api/v1/webhooks/secret" \
-H "Authorization: Bearer YOUR_API_KEY"
Regenerate Webhook Secret
/api/v1/webhooks/secretएक नया webhook signing secret जनरेट करता है, जो मौजूदा secret को बदल देता है। रीजनरेशन के बाद, सभी webhook deliveries नए secret से sign की जाएंगी।
रीजनरेट करने के बाद, अपने webhook receivers को तुरंत नए secret से अपडेट करें। पुराने secret से sign किए गए requests verification में विफल होंगे।
Response
{
"secret": "f0e1d2c3b4a5968778695a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d"
}
Code Examples
curl -X POST "https://api.nueform.io/api/v1/webhooks/secret" \
-H "Authorization: Bearer YOUR_API_KEY"
Webhook Payload Format
जब कोई फॉर्म सबमिशन प्राप्त करता है, NueForm आपके कॉन्फ़िगर किए गए webhook URLs पर निम्नलिखित payload के साथ एक POST request भेजता है।
event फ़ील्ड event type की पहचान करता है, और response object में सभी answers सहित पूर्ण सबमिशन डेटा होता है।
Headers
Content-Typeapplication/jsonRequest body content type
X-NueForm-SignaturestringRequest body का HMAC-SHA256 hex digest
X-NueForm-EventstringEvent type (जैसे, response.submitted)
Payload Example
{
"event": "response.submitted",
"form_id": "665a1b2c3d4e5f6a7b8c9d0e",
"form_title": "Customer Feedback Survey",
"response": {
"id": "667a1b2c3d4e5f6a7b8c9d01",
"submitted_at": "2026-02-27T15:42:00.000Z",
"completed_at": "2026-02-27T15:45:30.000Z",
"answers": [
{
"question_id": "66a1b2c3d4e5f6a7b8c9d001",
"question_title": "What is your name?",
"value": "Jane Smith"
}
]
}
}
Error Responses
Webhook endpoints द्वारा लौटाए जाने वाले मानक error responses।
Error Codes
400Bad Requestअमान्य URL format, अधिकतम 5 ग्लोबल webhooks से अधिक, या आवश्यक फ़ील्ड्स अनुपस्थित
401UnauthorizedAPI key अनुपस्थित या अमान्य
403ForbiddenWebhooks के लिए Pro plan या उससे ऊपर का प्लान आवश्यक है
404Not Foundफॉर्म नहीं मिला
500Server ErrorInternal server error
Error Example
{
"error": "Webhooks require a Pro plan or higher"
}