Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.plaud.ai/llms.txt

Use this file to discover all available pages before exploring further.

Register an Endpoint

Go to plaud.ai/console → Webhooks and add your HTTPS endpoint URL.

Verify Signatures

const crypto = require('crypto');

function verifyWebhook(payload, signature, timestamp, secret) {
  const message = `${timestamp}.${payload}`;
  const expected = crypto
    .createHmac('sha256', secret)
    .update(message)
    .digest('hex');
  return `sha256=${expected}` === signature;
}

app.post('/webhooks/plaud', (req, res) => {
  const valid = verifyWebhook(
    JSON.stringify(req.body),
    req.headers['plaud-signature'],
    req.headers['plaud-timestamp'],
    process.env.PLAUD_WEBHOOK_SECRET
  );
  if (!valid) return res.status(401).send('Invalid signature');

  const { event, data } = req.body;
  if (event === 'transcription.completed') {
    console.log('Transcript ready:', data.transcriptionId);
  }
  res.sendStatus(200);
});

Webhook Events

EventDescription
transcription.completedTranscript ready to retrieve
transcription.failedProcessing error (check error field)
device.syncedAudio synced to Plaud Cloud
device.connectedDevice paired for the first time
device.disconnectedDevice goes offline
device.recording_completedAudio file ready (+ optional transcript)
device.battery_lowBattery below 15%
device.ota_completedFirmware update finished
device.ota_failedFirmware update failed

Retry Policy

AttemptDelay
1st retry30 seconds
2nd retry5 minutes
3rd retry30 minutes
4th retry2 hours
5th retry24 hours