G-SMS.

Vérifier un numéro camerounais

Format, normalisation E.164 et opérateur : de quoi nettoyer un fichier de contacts.

Sans inscription, sans limite d’usage.

Ce calcul est exactement celui que retourne l’API avant chaque envoi.

La règle, en une ligne

Un numéro mobile camerounais s'écrit sur neuf chiffres et commence par 6, précédé de l'indicatif pays +237 en forme internationale. Les numéros fixes commencent par 2 : ils ne sont pas acceptés à l'envoi. Tout le reste — espaces, tirets, parenthèses, indicatif écrit 00237 — relève de la présentation, pas du numéro.

Ce que l'API accepte, et ce qu'elle refuse

L'outil ci-dessus est volontairement plus tolérant que l'API : il retire aussi les tirets, les points et les parenthèses, parce qu'un carnet d'adresses en est plein. L'API, elle, ne retire que les espaces.

SaisieAPIPourquoi
+237690000000AcceptéeForme E.164, celle que renvoie toujours l’API.
237690000000AcceptéeIndicatif sans le signe plus, sur douze chiffres exactement.
690000000AcceptéeForme nationale : neuf chiffres commençant par 6.
+237 690 00 00 00AcceptéeLes espaces sont ignorés par l’API.
690-00-00-00RefuséeLes tirets ne sont pas retirés par l’API : à nettoyer avant l’appel.
00237690000000RefuséeLe préfixe international 00 n’est pas reconnu ; utilisez +237.
233421234RefuséeNuméro fixe : l’API n’accepte que les mobiles.

Un numéro refusé donne une réponse explicite, et aucun débit :

HTTP/1.1 400 Bad Request

{
  "code": "INVALID_NUMBER",
  "message": "Numéro invalide : formats acceptés +2376XXXXXXXX, 2376XXXXXXXX, 6XXXXXXXX"
}

L'appel visé est POST https://api.sms.gworldship.com/v1/sms ; le contrôle du numéro intervient avant la vérification du solde, donc un numéro invalide ne coûte rien.

Nettoyer un fichier de contacts

La même règle tient en quelques lignes, à passer sur une colonne entière avant tout import. Elle rend la forme E.164, la seule à stocker : c'est celle que l'API renvoie, et celle sur laquelle dédoublonner.

/** Numéro camerounais en E.164, ou null si ce n'est pas un mobile. */
function toE164(raw) {
  const cleaned = String(raw).replace(/[\s.\-()]/g, '');
  const national = cleaned.startsWith('+237')
    ? cleaned.slice(4)
    : cleaned.startsWith('237') && cleaned.length === 12
      ? cleaned.slice(3)
      : cleaned;
  return /^6\d{8}$/.test(national) ? '+237' + national : null;
}

// Dédoublonnez sur la forme E.164 : le même contact arrive souvent
// deux fois, une fois en « 690000000 » et une fois en « +237690000000 ».

Ce qu'une validation de format ne garantit pas

Un numéro bien formé n'est pas un numéro joignable. Il peut ne correspondre à aucune ligne active, ou à un téléphone éteint depuis des semaines. La seule preuve d'arrivée est le statut DELIVERED remonté par l'opérateur après l'envoi ; un message qui finit en FAILED est remboursé automatiquement en crédits.

La détection d'opérateur, elle, lit une plage attribuée : elle ne dit pas si la ligne a changé de main. Pour une campagne, mieux vaut envoyer et lire les statuts que chercher à tout valider en amont.

Questions fréquentes

Un numéro fixe peut-il recevoir un SMS ?

L'API n'accepte que les numéros mobiles, c'est-à-dire neuf chiffres commençant par 6. Un numéro fixe est refusé avec le code INVALID_NUMBER, avant tout débit.

Faut-il écrire l'indicatif +237 ?

Non, les neuf chiffres suffisent. Quelle que soit la forme envoyée, la réponse de l'API renvoie toujours le numéro normalisé en E.164, c'est celle-là qu'il faut stocker.

Comment savoir si le numéro existe vraiment ?

Aucune vérification de format ne le dit : un numéro peut être parfaitement formé sans correspondre à une ligne active. Seul le statut DELIVERED d'un message réellement envoyé le prouve, et un message en échec est remboursé en crédits.

Un compte suffit pour envoyer le premier message : clé API immédiate, 100 F de crédit offert.

Essayer l’API