Aller au contenu

Apprendre

Démarrage rapide

Envoyez votre premier SMS en environ cinq minutes. Chaque étape ci-dessous est une vraie requête vers l’API de production.

1

Obtenez une clé API

Créez une clé dans l’espace client, sous Clés API. Copiez la valeur complète à l’instant où elle s’affiche — seule une empreinte est stockée, elle ne peut donc plus être récupérée. Gardez-la dans une variable d’environnement, jamais dans votre gestionnaire de versions.

export SMSEND_API_KEY="sk_live_a1b2c3d4.your_secret_here"
2

Trouvez un expéditeur que vous pouvez utiliser

L’expéditeur est le nom ou le numéro qui apparaît sur le téléphone du destinataire. Il doit être approuvé par SMSend et enregistré auprès d’au moins un opérateur avant de pouvoir porter du trafic.

curl https://api.smsend.net/public/v1/sender-ids \
  -H "Authorization: Bearer $SMSEND_API_KEY"

Filtrez sur is_sendable, pas sur status. Un expéditeur approuvé mais pas encore enregistré auprès d’un opérateur affiche APPROVED et reste incapable d’envoyer — chaque message échouerait après avoir épuisé son budget de tentatives.

3

Soumettez un lot

Une seule requête envoie à un ou plusieurs destinataires. L’en-tête Idempotency-Key est obligatoire : c’est lui qui rend une requête réessayée sûre, pour qu’un délai réseau dépassé ne vous facture pas deux fois.

curl -X POST https://api.smsend.net/public/v1/batches \
  -H "Authorization: Bearer $SMSEND_API_KEY" \
  -H "Idempotency-Key: quickstart-001" \
  -H "Content-Type: application/json" \
  -d '{
    "sender": "PRESTIGE",
    "body": "Hello from SMSend.",
    "message_class": "TRANSACTIONAL",
    "recipients": [{ "msisdn": "+22670000001" }]
  }'
<?php

$response = Http::withToken(getenv('SMSEND_API_KEY'))
    ->withHeaders(['Idempotency-Key' => 'quickstart-001'])
    ->post('https://api.smsend.net/public/v1/batches', [
        'sender' => 'PRESTIGE',
        'body' => 'Hello from SMSend.',
        'message_class' => 'TRANSACTIONAL',
        'recipients' => [['msisdn' => '+22670000001']],
    ]);

echo $response->json('data.batch_id');
const response = await fetch('https://api.smsend.net/public/v1/batches', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SMSEND_API_KEY}`,
    'Idempotency-Key': 'quickstart-001',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    sender: 'PRESTIGE',
    body: 'Hello from SMSend.',
    message_class: 'TRANSACTIONAL',
    recipients: [{ msisdn: '+22670000001' }],
  }),
})

const { data } = await response.json()
console.log(data.batch_id)
import os
import requests

response = requests.post(
    "https://api.smsend.net/public/v1/batches",
    headers={
        "Authorization": f"Bearer {os.environ['SMSEND_API_KEY']}",
        "Idempotency-Key": "quickstart-001",
    },
    json={
        "sender": "PRESTIGE",
        "body": "Hello from SMSend.",
        "message_class": "TRANSACTIONAL",
        "recipients": [{"msisdn": "+22670000001"}],
    },
)

print(response.json()["data"]["batch_id"])

Une soumission réussie renvoie 202 Accepted. Le lot a été accepté et payé ; les messages, eux, n’ont pas encore été livrés.

{
  "data": {
    "batch_id": "01K3F7XQZ8V2N4M6P8R0T5CJWE",
    "status": "QUEUED",
    "accepted": 1,
    "rejected": 0,
    "rejections": [],
    "reserved_amount": 25,
    "currency": "XOF",
    "total_segments": 1
  }
}
4

Vérifiez ce qui s’est passé

Récupérez le lot pour voir où il en est. Les compteurs évoluent à mesure que les messages progressent dans le système.

curl https://api.smsend.net/public/v1/batches/01K3F7XQZ8V2N4M6P8R0T5CJWE \
  -H "Authorization: Bearer $SMSEND_API_KEY"

L’objet counts contient des compteurs monotones — combien de messages ont atteint chaque état à un moment donné, et non combien s’y trouvent en ce moment. Ils ne font que croître.

5

Recevez les rapports de livraison

L’interrogation périodique convient pour une première intégration, mais elle ne passe pas à l’échelle. Enregistrez un point de terminaison webhook pour que SMSend pousse chaque résultat terminal vers votre serveur au moment où il se produit, et gardez le flux des messages comme voie de récupération pour les moments où votre point de terminaison est indisponible.