Clés d'idempotence
Réessayez sans risque. La même clé n'envoie jamais deux fois.
Développeurs
Envoyez messages et codes de vérification avec une seule requête HTTPS. Du JSON en entrée et en sortie, des erreurs claires et des webhooks signés.

Créez une clé API dans votre tableau de bord, puis faites une requête. La réponse revient tout de suite avec un identifiant à suivre.
https://app.traitzsms.com/api/v1
{
"id": "5b0f6d9e-8a3c-4c2a-9f6e-1d2c3b4a5e6f",
"to": "+237699000001",
"status": "queued",
"segments": 1,
"cost_credits": 1,
"client_reference": "order-4821",
"created_at": "2026-10-29T14:00:00Z"
}curl https://app.traitzsms.com/api/v1/messages \
-H "Authorization: Bearer tsms_live_xxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-4821-1" \
-d '{"to":"+237699000001","from":"MYSHOP","message":"Your order #4821 is on its way.","client_reference":"order-4821"}'| POST | /messages | Envoyer un SMS |
| POST | /messages/bulk | Envoyer jusqu'à 1 000 numéros |
| GET | /messages | Lister et filtrer vos messages |
| GET | /messages/{id} | Statut, parties, coût et erreurs d'un message |
| GET | /sender-ids | Vos Sender ID et leur statut |
| GET | /balance | Crédits restants |
Réessayez sans risque. La même clé n'envoie jamais deux fois.
Les OTP ont leur propre file, avant les campagnes en masse.
Ajoutez votre identifiant de commande ou d'utilisateur et retrouvez chaque message.
Générez un client dans votre langage à partir de notre fichier OpenAPI 3.1.
Nous appelons votre URL quand un message est soumis, livré ou en échec. Chaque appel est signé avec le secret de votre point d'accès et porte un horodatage, pour rejeter les faux et les rejeux. Les appels en échec sont réessayés pendant 24 heures.
import crypto from 'node:crypto'
// rawBody: the exact bytes we sent, before JSON parsing.
function isFromTraitzSms(rawBody, headers, secret) {
const timestamp = Number(headers['x-traitzsms-timestamp'])
if (Math.abs(Date.now() / 1000 - timestamp) > 300) return false // replay
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex')
const received = headers['x-traitzsms-signature'] || ''
return expected.length === received.length &&
crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(received))
}| HTTP | error | |
|---|---|---|
| 400 | validation_failed | Un champ manque ou est invalide |
| 401 | unauthorized | Clé API absente, invalide ou révoquée |
| 402 | insufficient_credits | Pas assez de crédits pour cette requête |
| 403 | sender_not_allowed | Ce Sender ID n'est pas approuvé pour vous |
| 409 | duplicate_request | Même clé d'idempotence, contenu différent |
| 422 | invalid_recipient | Ce n'est pas un numéro mobile camerounais valide |
| 429 | rate_limited | Limite atteinte, voir l'en-tête Retry-After |
| 503 | service_unavailable | Problème temporaire, vous pouvez réessayer |
Prêt quand vous l'êtes
Créez votre compte, rechargez par mobile money et envoyez en quelques minutes.