1Authorization: Basic base64("{AccountSid}:{AuthToken}")
12curl -u "$RUUT_ACCOUNT_SID:$RUUT_AUTH_TOKEN" \ "https://voice.ruut.chat/2010-04-01/Accounts/$RUUT_ACCOUNT_SID/Calls"
401 Unauthorized.phone_calls_read can list calls:12curl -u "$RUUT_ACCOUNT_SID:$RUUT_API_KEY" \ "https://voice.ruut.chat/2010-04-01/Accounts/$RUUT_ACCOUNT_SID/Calls"
credentials flow).X-Twilio-Signature. The current call-status callback job does not add that header; see call status webhooks.123456789import { validateWebhookSignature } from "@ruut/voice-sdk"; const valid = await validateWebhookSignature({ url: "https://app.example.com/webhooks/recording", params: req.body, signature: req.headers["x-twilio-signature"], authToken: process.env.RUUT_AUTH_TOKEN, }); if (!valid) return res.status(403).end();
123456789import { ruutWebhook } from "@ruut/voice-sdk/express"; app.post("/webhooks/recording", ruutWebhook({ authToken: process.env.RUUT_AUTH_TOKEN }), (req, res) => { console.log(req.ruutWebhook.RecordingStatus); res.sendStatus(200); } );