@railhook/node
Node.js SDK for Railhook. No runtime dependencies.
npm install @railhook/node
Send an event
import { Railhook } from '@railhook/node';
const client = new Railhook({
apiKey: process.env.RAILHOOK_API_KEY!,
baseUrl: 'https://railhook.io',
});
const event = await client.events.send(
{ type: 'order.completed', data: { orderId: 'ord_123', amount: 99.99 } },
'order-123-completed',
);
console.log(event.eventId, event.deliveriesCreated);
Verify a webhook
The signature covers the raw body, so read it before any JSON parser does.
import express from 'express';
import { constructEvent } from '@railhook/node';
const app = express();
app.post('/webhooks', express.raw({ type: 'application/json' }), (req, res) => {
try {
const event = constructEvent(req.body.toString(), req.headers, process.env.WEBHOOK_SECRET!);
console.log(event.eventId, event.data);
res.sendStatus(200);
} catch {
res.sendStatus(400);
}
});
verifyStandardWebhook checks the webhook-* headers instead. During a secret rotation
either secret's signature is accepted.
The client also covers endpoints, subscriptions, deliveries, consumers and portal sessions,
and incoming sources and events. It does not retry: one call is one HTTP request.
Full docs: https://railhook.io/docs/tools/sdks/
Develop
npm install
npm test
npm run build
npm run smoke:live
License
MIT