Bomocom
Développeurs

Votre premier SMS en moins de dix minutes

Une clé d'API, un appel HTTP, et le message part. Pas de configuration SMPP à négocier, pas de contrat opérateur à signer de votre côté.

Envoyer

Un appel, trois champs obligatoires

Le destinataire, l'expéditeur et le texte. Tout le reste — routage, bascule, accusé de réception — est géré par la plateforme.

API REST
Endpoints JSON versionnés, clés par environnement, idempotence sur chaque envoi.
Webhooks signés
Statuts queued, sent, delivered, failed poussés en temps réel avec signature HMAC.
Envois groupés
Jusqu'à 10 000 destinataires par appel, avec variables de personnalisation.
Bac à sable
Environnement de test gratuit, numéros fictifs et simulation d'échecs opérateur.
curl -X POST https://api.bomocom.com/v1/messages \
  -H "Authorization: Bearer $BOMOCOM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+2210000000000",
    "from": "BOMOCOM",
    "text": "Votre code de validation est 4821.",
    "priority": "otp",
    "callback_url": "https://votre-app.com/webhooks/sms"
  }'
POST /v1/messages201 Created · 128 ms
Suivre

Le cycle de vie d'un message

Chaque changement d'état est poussé sur votre endpoint, signé en HMAC-SHA256. Aucun besoin d'interroger l'API en boucle.

  1. queued

    Le message est accepté, validé et mis en file. L'identifiant vous est rendu immédiatement, en moins de 200 ms.

  2. sent

    Le message est remis à l'opérateur par la route retenue. En cas de dégradation, la bascule est déjà faite à ce stade.

  3. delivered

    L'opérateur confirme la remise sur le terminal. C'est l'accusé de réception qui fait foi dans vos rapports.

  4. failed

    Le message n'a pas pu être remis. Le motif opérateur est transmis dans le webhook et conservé douze mois.

exemple de webhook reçu
POST /webhooks/sms  ·  signature HMAC-SHA256 dans X-Bomocom-Signature

{
  "id": "msg_01HXQ7YF3K2M9TQ4B8ZP",
  "status": "delivered",
  "to": "+2210000000000",
  "from": "BOMOCOM",
  "segments": 1,
  "price": { "amount": 13, "currency": "XOF" },
  "route": { "country": "SN", "operator": "orange", "type": "direct" },
  "sent_at": "2026-09-16T08:41:02Z",
  "delivered_at": "2026-09-16T08:41:04Z"
}
Quotas

Les limites à connaître avant la mise en production

Elles sont relevées au cas par cas dès que votre trafic le justifie. Aucun palier tarifaire n'y change quoi que ce soit.

Débit par défaut
300 req/s
Relevé sur demande selon votre trafic. Un dépassement renvoie un 429 avec l'en-tête Retry-After.
Destinataires par appel
10 000
Au-delà, découpez en plusieurs appels : le traitement reste asynchrone et l'ordre est conservé.
Idempotence
24 h
Renvoyez la même clé Idempotency-Key pour rejouer un appel sans risquer un double envoi.
Rejeu des webhooks
6 tentatives
Backoff exponentiel sur 24 h tant que votre endpoint ne répond pas un code 2xx.
Erreurs

Les quatre réponses qu'il faut savoir traiter

Toutes les erreurs renvoient un corps JSON avec un code machine, un message lisible et, le cas échéant, l'identifiant de la route concernée.

401

Clé invalide ou révoquée

Vérifiez l'environnement : une clé de bac à sable ne fonctionne pas en production.

422

Numéro ou Sender ID refusé

Le numéro n'est pas au format E.164, ou le Sender ID n'est pas encore enregistré dans le pays visé.

429

Débit dépassé

Respectez l'en-tête Retry-After. Les envois groupés sont préférables à une rafale d'appels unitaires.

503

Aucune route disponible

Cas rare : toutes les routes du pays sont indisponibles. Le message est conservé et rejoué automatiquement.

Le prochain code de validation que vous envoyez, il arrive en combien de temps ?

Trente minutes suffisent pour chiffrer votre trafic, comparer vos taux actuels et vous montrer la console en direct. Sans engagement.