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.
Authentification
- Header
apiKey: <AT_API_KEY>(pasAuthorization). - Header
Accept: application/jsonpour 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,fromoptionnel. - Réponse :
SMSMessageData.Recipients[]avecnumber,status,statusCode,messageId,cost.
Erreurs
statusCode: 101= envoyé.403numéro invalide.405solde insuffisant.401clé invalide ouusernameincohérent.
Webhooks
- Rapports de livraison : configurés dans le dashboard, reçus en
POSTurlencoded avecidetstatus.
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,
usernamevautsandbox. - Le corps n'est pas du JSON.
- Le header est
apiKey, pasX-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_USERNAMEAT_API_KEY