Aller au contenu

Développeurs

Une API SMS qui ne vous ralentit pas.

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.

Envoyez votre premier SMS

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

Réponse · 201

{
  "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"}'

Points d'accès

POST/messages
POST/messages/bulk
GET/messages
GET/messages/{id}
GET/sender-ids
GET/balance

Prête pour la production

Clés d'idempotence

Réessayez sans risque. La même clé n'envoie jamais deux fois.

Priorité aux codes

Les OTP ont leur propre file, avant les campagnes en masse.

Références client

Ajoutez votre identifiant de commande ou d'utilisateur et retrouvez chaque message.

Fichier OpenAPI

Générez un client dans votre langage à partir de notre fichier OpenAPI 3.1.

Des webhooks fiables

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.

  • message.submitted
  • message.delivered
  • message.failed
  • campaign.completed

Vérifier la signature d'un webhook

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))
}

Des erreurs exploitables

HTTPerror
400validation_failedUn champ manque ou est invalide
401unauthorizedClé API absente, invalide ou révoquée
402insufficient_creditsPas assez de crédits pour cette requête
403sender_not_allowedCe Sender ID n'est pas approuvé pour vous
409duplicate_requestMême clé d'idempotence, contenu différent
422invalid_recipientCe n'est pas un numéro mobile camerounais valide
429rate_limitedLimite atteinte, voir l'en-tête Retry-After
503service_unavailableProblème temporaire, vous pouvez réessayer
Lire la documentation complète

Prêt quand vous l'êtes

Votre premier message peut partir aujourd'hui.

Créez votre compte, rechargez par mobile money et envoyez en quelques minutes.

  • MTN, Orange, Nexttel, Camtel
  • Paiement MoMo ou Orange Money
  • Rapports de livraison en direct