Automatiser l'envoi de SMS avec n8n via l'API OVHcloud
Objectif
Ce guide vous explique comment intégrer l'API SMS d'OVHcloud dans n8n, afin d'envoyer automatiquement des SMS depuis vos workflows. Vous apprendrez à configurer un appel HTTP signé via l'API OVHcloud pour déclencher l'envoi d’un message.
Découvrez comment envoyer des SMS depuis n8n en utilisant l'API OVHcloud.
Prérequis
- Disposer d'un compte SMS OVHcloud et d'un expéditeur SMS valide.
- Disposer d'un VPS OVHcloud, d'un serveur ou d'un poste local avec n8n installé et accessible.
En pratique
Si vous n'avez pas encore installé n8n sur votre VPS, suivez les instructions de notre guide « Installer n8n sur un VPS OVHcloud ».
Étape 1 – Générer les identifiants API OVHcloud
Avant de pouvoir envoyer des SMS via l’API OVHcloud, vous devez être en possession des trois identifiants suivants :
- Application key
- Application secret
- Consumer key
Pour cela, consultez la section Utilisation avancée : coupler les API OVHcloud avec une application de notre guide « Premiers pas avec les API OVHcloud », puis copiez et conservez les trois identifiants Application key, Application secret et Consumer key.
Étape 2 — Créer le workflow et les nœuds
Connectez-vous à votre interface n8n puis cliquez sur le bouton Create Workflow.
Créez les nœuds suivants (vides pour le moment) :
Set - Credentials: de type Edit Fields (Set).Set - Request Details: de type Edit Fields (Set).Merge: de type Merge.Sign - Generate Signature: de type Code.SMS - Send: de type HTTP Request.
Pour plus de détails concernant la création de nœuds, consultez la documentation officielle de n8n.
Reliez les nœuds dans cet ordre :

Le nœud Merge reçoit les sorties des deux nœuds Set - Credentials et Set - Request Details, puis alimente Sign - Generate Signature, qui alimente SMS - Send.
Étape 3 — Paramétrer le nœud Set – Credentials
Ajoutez les paramètres suivants dans votre nœud Set - Credentials :
- Mode :
Manual Mapping.
| Nom | Valeur |
|---|---|
| applicationKey | "VOTRE_APPLICATION_KEY" |
| consumerKey | "VOTRE_CONSUMER_KEY" |
| serviceName | "VOTRE_COMPTE_SMS_OVHCLOUD" (par exemple : "sms-ab12345-1") |
| applicationSecret | "VOTRE_APPLICATION_SECRET" |
| timestamp | {{ Math.floor(Date.now() / 1000) }} |
Étape 4 — Paramétrer le nœud Set – Request Details
Paramétrez le nœud Set - Request Details :
- Mode :
Manual Mapping. - Ajoutez un champ nommé
bodyde typeObjectavec le contenu ci-dessous (exemple minimal).
- Le numéro du destinataire (
receivers) doit être au format international et commencer par exemple par « +336 » ou « +337 » pour un numéro de mobile français. - L'expéditeur doit être défini dans votre compte OVHcloud. Pour réaliser un test sans déclarer d'expéditeur et utiliser un numéro court, remplacez
"sender": "Your_sender"par"senderForResponse": true.
Étape 5 — Paramétrer le nœud Merge
Paramétrez le nœud Merge :
- Mode :
Combine. - Combine by :
Position. - Number of Inputs :
2.
Reliez Set - Credentials en Input 1 et Set - Request Details en Input 2.
En sortie (output), vous devez avoir au même niveau : applicationKey, applicationSecret, consumerKey, serviceName, timestamp et body.
Étape 6 — Paramétrer le nœud Sign – Generate Signature
Paramétrez le nœud Sign - Generate Signature :
- Mode :
Run once for each item. - Language :
JavaScript.
Collez le code ci-dessous :
N'utilisez pas de HMAC ici (OVHcloud attend "$1$" + SHA1(AppSecret + … + Timestamp)). Le paramètre bodyString est exactement le JSON qui sera envoyé ensuite (pas d’autre stringify). L’URL signée doit être strictement identique à celle de l’envoi (même host, pas de / final en plus).
Étape 7 — Paramétrer le nœud SMS - Send
Paramétrez le nœud SMS - Send :
- Method :
POST. - URL :
{{$json.url}}. - Authentication :
None. - Send Headers :
ON. - Specify Headers :
Using fields below.
Ajoutez les paramètres de header suivants :
| Nom | Valeur |
|---|---|
| Content-Type | application/json |
| X-Ovh-Application | {{$json.applicationKey}} |
| X-Ovh-Consumer | {{$json.consumerKey}} |
| X-Ovh-Timestamp | {{$json.timestamp}} |
| X-Ovh-Signature | {{$json.signature}} |
Activez le Send Body et ajoutez les paramètres de body suivants :
| Nom | Valeur |
|---|---|
| Body Content Type | Raw |
| Content Type | application/json |
| Body | {{$json.bodyString}} |
Tester votre workflow
Exécutez votre workflow. Les étapes suivantes s'exécutent :
- Set - Credentials : met à disposition applicationKey, consumerKey, serviceName (et éventuellement applicationSecret si vous ne l’avez pas externalisé).
- Set - Request Details : prépare l’objet body contenant le corps du SMS.
- Merge (Combine/Position) : fusionne les deux sorties des nœuds précédents.
- Sign - Generate Signature (Code) : calcule bodyString, timestamp, signature (SHA‑1 simple) et l’URL d’appel.
- SMS - Send (HTTP Request) : envoie le POST vers l'URL avec le body {{$json.bodyString}} et les headers X-Ovh-*.
Le message est alors transmis via l’API OVHcloud à votre destinataire.
Erreurs fréquentes
Invalid_signature (400)
- L’URL signée est différente de l'URL envoyée (host différent,
/final en trop). - Le body signé est différent du body envoyé (re-
stringify, espaces, ordre, etc.). - L'horloge locale est trop décalée. Utilisez plutôt l’heure serveur OVHcloud (voir la partie Industrialisation et sécurité).
Sms sender ... does not exist (403)
Le sender (expéditeur) n’est pas déclaré/validé dans votre espace client OVHcloud. Testez avec "senderForResponse": true ou validez votre expéditeur.
Bad Request
- Vérifiez dans chaque nœud le nom et la valeur de vos paramètres.
- Assurez-vous que les headers et les body soient complets.
- Vérifiez que l'URL du nœud
SMS - Sendrespecte bien le format suivant :https://eu.api.ovh.com/1.0/sms/sms-ab12345-1/jobs
Erreurs de nœud Code
- N'utilisez pas de
require('crypto')dans n8n mais plutôt SHA-1 pur JavaScript ci-dessus. - Utilisez le mode par item et évitez d'appeler
$input.all()dans votre code.
Industrialisation et sécurité
Si vous souhaitez industrialiser votre workflow et le sécuriser davantage, appliquez les conseils suivants.
Heure serveur OVHcloud
Ajoutez un nœud de type HTTP Request avant la signature :
GET https://eu.api.ovh.com/1.0/auth/time- Récupérez la valeur et remplacez
timestamppar cette valeur exacte.
Ne pas faire transiter l’applicationSecret
- Stockez-le comme variable d’environnement (par exemple :
OVH_APP_SECRET) et lisez-le dans le nœud de type Code (Sign - Generate Signature) via$env.OVH_APP_SECRET, ou via la fonctionnalité Secrets/Credentials de n8n. - À défaut, ne retournez jamais le secret en sortie du nœud.
Gestion des caractères
Si votre message contient des emojis/accents non GSM, utilisez "coding": "ucs2".
Aller plus loin
Échangez avec notre communauté d'utilisateurs.