Aller au contenu
AfriContext

Africa's Talking

Africa's Talking - Envoi de SMS

Envoie un SMS en formulaire urlencoded avec le header apiKey et lit les statuts par destinataire.

Vérifié sur la doc officielle • Vérifié sur la doc officielle • 07.10.26API version1

Authentification

  • Header apiKey: <AT_API_KEY> (pas Authorization).
  • Header Accept: application/json pour une réponse JSON.

Endpoints

  • Live : POST https://api.africastalking.com/version1/messaging
  • Sandbox : POST https://api.sandbox.africastalking.com/version1/messaging
  • Corps application/x-www-form-urlencoded : username, to (numéros E.164 séparés par des virgules), message, from optionnel.
  • Réponse : SMSMessageData.Recipients[] avec number, status, statusCode, messageId, cost.

Erreurs

  • statusCode: 101 = envoyé. 403 numéro invalide. 405 solde insuffisant.
  • 401 clé invalide ou username incohérent.

Webhooks

  • Rapports de livraison : configurés dans le dashboard, reçus en POST urlencoded avec id et status.

Idempotence et limites

  • Pas de clé d'idempotence : dédupliquer côté application avant l'envoi.

Pièges courants

Ce que les LLMs inventent le plus souvent pour Africa's Talking.

  • En sandbox, username vaut sandbox.
  • Le corps n'est pas du JSON.
  • Le header est apiKey, pas X-API-Key.

Exemple minimal

1export async function sendSms(to: string[], message: string) {2  const body = new URLSearchParams({ username: process.env.AT_USERNAME ?? "sandbox", to: to.join(","), message });3  const res = await fetch("https://api.sandbox.africastalking.com/version1/messaging", {4    method: "POST",5    headers: { apiKey: process.env.AT_API_KEY ?? "", Accept: "application/json", "Content-Type": "application/x-www-form-urlencoded" },6    body,7  });8  return res.json();9}

Variables d'environnement

  • AT_USERNAME
  • AT_API_KEY