Webhooks
Webhooks allow you to receive real-time notifications when certain events occur in your Serply account.
Registering Webhooks
Register a webhook endpoint in your dashboard or via the API:
curl -X POST "https://api.serply.io/v1/webhooks" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-app.com/webhooks",
"events": ["search.completed", "search.failed"]
}'
Consuming Webhooks
Your webhook endpoint should:
- Accept POST requests
- Verify the webhook signature
- Process the event data
- Return a 200 status code
Example webhook handler:
app.post('/webhooks', (req, res) => {
const signature = req.headers['x-serply-signature'];
const isValid = verifySignature(req.body, signature);
if (!isValid) {
return res.status(401).send('Invalid signature');
}
const event = req.body;
// Process the event
processEvent(event);
res.status(200).send('OK');
});
Event Types
search.completed- A search request completed successfullysearch.failed- A search request failedquota.exceeded- API quota limit reached
Security
Always verify webhook signatures to ensure requests are from Serply:
const crypto = require('crypto');
function verifySignature(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret);
const digest = hmac.update(JSON.stringify(payload)).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(digest)
);
}