| Event | Trigger | Reference |
| Call status | Call state changes (ringing, in-progress, completed…) | call status |
| Recording | Recording in-progress / completed / absent | recordings |
| Transcription | Transcription completed / failed (with speaker segments) | transcriptions |
StatusCallback on call creation.statusCallback / recordingStatusCallback on an incoming phone number.<Record transcribeCallback>, <Dial recordingStatusCallback>.1234567891011import { parseWebhook, validateWebhookSignature } from "@ruut/voice-sdk"; const valid = await validateWebhookSignature({ url: "https://app.example.com/webhooks/call-status", params: req.body, // parsed form params signature: req.headers["x-twilio-signature"], authToken: process.env.RUUT_AUTH_TOKEN, }); if (!valid) return res.status(403).end(); const payload = parseWebhook(req.body);
X-Twilio-Signature header before trusting the payload. Do not assume the unsigned call-status callback is authenticated.12345678910import { ruutWebhook } from "@ruut/voice-sdk/express"; app.post("/webhooks/call-status", ruutWebhook({ authToken: process.env.RUUT_AUTH_TOKEN }), (req, res) => { const call = req.ruutWebhook; console.log(call.CallStatus, call.CallSid); res.sendStatus(200); } );