Node.js & Python Maroc

API SMS pour développeurs Node.js, TypeScript et Python au Maroc

Intégrez l'envoi de SMS, OTP et alertes transactionnelles au Maroc dans vos stacks Node.js (Fetch, Express, Next.js) et Python (HTTPX, FastAPI, Django, Celery). Routes locales fiables vers IAM, Orange et Inwi avec basculement automatique.

services/envoisms.ts (Node.js & TypeScript)
import fetch from 'node-fetch'; export interface EnvoiSmsPayload { to: string; // E.164 (+2126... ou 06...) message: string; from?: string; // Sender ID validé (11 car. max) } export interface EnvoiSmsResponse { success: boolean; message_id: string; recipient: string; carrier: 'IAM' | 'Orange' | 'Inwi'; segments: number; cost_mad: number; } export async function sendSms(payload: EnvoiSmsPayload): Promise<EnvoiSmsResponse> { const apiKey = process.env.ENVOISMS_API_KEY; if (!apiKey) throw new Error('ENVOISMS_API_KEY non configurée'); const res = await fetch('https://api.envoisms.ma/v1/messages', { method: 'POST', headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }); if (!res.ok) { const err = await res.json().catch(() => ({})); throw new Error(`Erreur EnvoiSMS (${res.status}): ${JSON.stringify(err)}`); } return res.json() as Promise<EnvoiSmsResponse>; }
● Routes locales MarocIAM • Inwi • Orange
https://api.envoisms.ma/v1
Routage direct local
Maroc Telecom (IAM) • Inwi • Orange
Accusés réels DLR
Signatures HMAC-SHA256
Tarifs clairs en MAD
dès 0,48 MAD/SMS • 5 MAD offerts

Intégration Node.js 18+ & TypeScript : Native Fetch et Server Actions Next.js

Pas besoin d'installer de paquet SDK externe lourd. Une simple requête HTTPS avec le fetch natif de Node.js ou Axios suffit pour expédier vos messages avec typage complet des requêtes et réponses.

  • Compatible Node.js 18+, Bun, Deno, Next.js App Router et Cloudflare Workers
  • Interfaces TypeScript fournies (EnvoiSmsPayload, EnvoiSmsResponse)
  • Utilisation directe dans vos Server Actions Next.js ou routes API Express

Intégration Python moderne : Requêtes asynchrones avec httpx et FastAPI

Envoyez des messages de façon synchrone avec requests ou de manière asynchrone et non-bloquante avec httpx et FastAPI. Idéal pour les pipelines de données, les backends Django et les tâches d'arrière-plan Celery.

  • Support complet de async/await pour des débits élevés sans blocage
  • Intégration facile dans les tâches Celery ou RQ pour les applications Django
  • Gestion typée avec les schémas Pydantic

Validation de signature HMAC-SHA256 pour les Webhooks DLR

Sécurisez votre endpoint de réception d'accusés de réception (DLR) en validant la signature transmise dans l'en-tête HTTP. En Node.js (module crypto natif) ou en Python (hmac et hashlib), la vérification s'effectue en 3 lignes de code.

  • Prévention totale contre les attaques par rejeu et faux webhooks
  • Statuts normalisés : queued, sent, delivered, undelivered, failed
  • Horodatage précis transmis par l'opérateur télécom de destination

Comptage des segments SMS : GSM-7 (160 car.) vs Unicode Arabe (70 car.)

Comprenez précisément la tarification de vos SMS : en alphabet latin standard (GSM-7), un segment contient jusqu'à 160 caractères (153 par segment au-delà). En cas d'utilisation de l'arabe ou d'emojis (UCS-2 Unicode), un segment contient 70 caractères (67 par segment pour les messages longs).

  • Encodage GSM-7 : 160 caractères par SMS unitaire
  • Encodage Unicode (Arabe / Emojis) : 70 caractères par SMS unitaire
  • Calculateur automatique de segments disponible sur le tableau de bord

Gestion robuste des erreurs HTTP et reprise automatique

Notre API renvoie des codes d'état HTTP explicites (400 Requête invalide, 401 Clé API non reconnue, 402 Solde insuffisant, 422 Numéro non routable, 429 Limite de débit). Vos scripts peuvent ainsi gérer proprement les exceptions.

Environnement Sandbox illimité (env_test_...) et clé de production

Validez l'ensemble de vos tests d'intégration avec votre clé Sandbox sans coût. Une fois vos tests terminés, remplacez simplement votre clé d'API pour passer instantanément en production avec vos 5 MAD offerts.

Tout savoir sur Node.js & Python Maroc.

Comment envoyer un SMS en Node.js avec le fetch natif ?
Effectuez un fetch POST vers https://api.envoisms.ma/v1/messages avec les en-têtes Authorization: Bearer <token> et Content-Type: application/json, et le corps { to: '+2126XXXXXXXX', message: 'Votre texte', from: 'VOTREMARQUE' }.
Comment gérer les envois asynchrones en Python avec FastAPI ?
Utilisez async with httpx.AsyncClient() as client: response = await client.post(...) pour expédier le SMS sans bloquer la boucle d'événements asyncio de votre serveur FastAPI.
Quels formats de numéros marocains sont acceptés ?
L'API accepte les formats locaux (06XXXXXXXX, 07XXXXXXXX) et internationaux (+2126XXXXXXXX, 2127XXXXXXXX) et effectue automatiquement la normalisation E.164.
Comment tester les webhooks en local pendant le développement ?
Vous pouvez utiliser un tunnel comme ngrok ou Cloudflare Tunnels pour rediriger les webhooks EnvoiSMS vers votre serveur de développement local (localhost).
Y a-t-il des limites de débit (Rate Limits) sur l'API ?
Les quotas de requêtes sont configurés par forfait (de 60 à 1 200 requêtes par minute), extensibles sur demande auprès du support technique pour les besoins spécifiques.

Prêt à intégrer Node.js & Python Maroc ?

Créez votre compte en moins de 2 minutes. Bénéficiez immédiatement de 5 MAD de crédit gratuit pour tester l'API.