Aller au contenu

API WhatsApp avec Next.js : recevoir et répondre en une route

Pour utiliser l'API WhatsApp depuis une application Next.js, il faut une seule route : elle vérifie la signature du webhook, lit le message reçu et répond par l'API. La voici en entier, avec le SDK TypeScript de Nodium.

Mis à jour le 10 novembre 2026Lire en Markdown

Installer et régler

Shell

npm i @nodium.io/whatsapp# .env.localNODIUM_KEY=nod_… # console › Settings › API keysNODIUM_WEBHOOK_SECRET=whsec_… # shown once, when you create the webhook

La route

TypeScript

// app/api/webhooks/nodium/route.tsimport { Nodium } from '@nodium.io/whatsapp'import { NodiumSignatureError, verifyWebhook } from '@nodium.io/whatsapp/server'const nodium = new Nodium(process.env.NODIUM_KEY!)export async function POST(request: Request) { // The raw body, before any JSON parsing: the signature is computed on it. const rawBody = await request.text() try { const event = verifyWebhook(rawBody, request.headers, process.env.NODIUM_WEBHOOK_SECRET!) if (event.event === 'message.received' && event.data.type === 'text') { await nodium.messages.send({ channelId: event.data.channel_id, to: event.data.from, type: 'text', text: `You wrote: ${event.data.text}`, idempotencyKey: `reply-${event.id}` // the same on every redelivery: sent once }) } return new Response(null, { status: 200 }) } catch (error) { if (error instanceof NodiumSignatureError) return new Response(null, { status: 400 }) throw error }}

Dire à Nodium où vous appeler

Shell

curl https://nodium.io/api/v1/webhooks \ -H "Authorization: Bearer $NODIUM_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://your-app.example.com/webhooks/nodium", "events": ["message.received"] }'# → data.secret (whsec_…): shown once

En développement, npx @nodium.io/cli listen rejoue vos vrais événements vers localhost, sans tunnel.

Ensuite

  • Écrivez en premier à un client avec un modèle approuvé : le texte libre ne part que dans la fenêtre de 24 heures.
  • Répondez 200 vite et faites le travail lent ensuite : un événement non acquitté est livré de nouveau, avec le même id.
  • Branchez les numéros de vos clients avec une clé pour tous.

Questions fréquentes

Est-ce que cela marche sur Vercel et dans le runtime Edge ?

La route ci-dessus tourne dans le runtime Node.js, celui par défaut des routes : le SDK vérifie la signature avec le module crypto de Node.

Puis-je appeler l'API depuis le navigateur ?

Non. La clé d'API doit rester sur le serveur : appelez Nodium depuis une route ou une action serveur, jamais depuis le code client.

Essayez avec votre propre numéro.

Build est gratuit : 3 000 messages par mois, sans carte.

Parlez à l'équipe Nodium

Dites-nous ce que vous branchez. Nous revenons vers vous sous un jour ouvré, avec un tarif adapté à vos numéros WhatsApp et à votre volume.