SMS
v1.0.0Envoyez des SMS en France et à l'international via une API REST simple. Sender personnalisable, suivi de délivrance, envoi unitaire ou en masse.
https://sms-api.s33d.fr
Tarifs SMS
Le service SMS fonctionne par crédits prépayés. Chaque SMS consomme des crédits selon le nombre de segments.
Un SMS standard = 1 segment (160 caractères GSM-7 ou 70 caractères Unicode). Les messages longs sont automatiquement découpés en plusieurs segments.
Authentification
Utilisez votre clé API SMS dans le header X-Api-Key :
Vous pouvez aussi utiliser un Bearer token JWT obtenu via /api/v1/auth/login.
POST /api/v1/sms/send
Envoie un SMS à un destinataire.
Paramètres (JSON body)
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| to | string | oui | Numéro au format E.164 (ex: +33612345678) |
| body | string | oui | Contenu du message (max 1600 caractères) |
| from | string | non | Sender personnalisé (si activé sur votre compte) |
Exemple
Réponse (200 OK)
{
"message_id": "a1b2c3d4-...",
"provider_id": "12345678",
"to": "+33612345678",
"from": "S33D.FR",
"status": "sent",
"segments": 1,
"cost": 10,
"credits_remaining": 490
}
POST /api/v1/sms/send-bulk
Envoie jusqu'à 500 SMS en un seul appel.
Paramètres (JSON body)
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| messages | array | oui | Tableau d'objets {to, body, from?} (max 500) |
Exemple
GET /api/v1/account/me
Récupère les informations de votre compte : crédits restants, sender, statistiques d'envoi.
Réponse
{
"id": "uuid",
"email": "vous@example.com",
"company_name": "Mon Entreprise",
"sender": "S33DFR",
"sender_status": "enable",
"price_per_sms": 10,
"credits": 490,
"stats": {
"total_messages": 12,
"delivered": 11,
"failed": 1,
"total_spent_cents": 120,
"delivery_rate": 91.67
}
}
GET /api/v1/account/usage
Historique d'utilisation journalier.
Query params
| Paramètre | Défaut | Description |
|---|---|---|
| days | 30 | Nombre de jours d'historique (1-90) |
POST /api/v1/auth/register
Crée un nouveau compte client.
| Paramètre | Type | Description |
|---|---|---|
| string | Adresse email valide | |
| password | string | Mot de passe (8-128 caractères) |
| company_name | string | Nom de l'entreprise |
POST /api/v1/auth/login
Obtient un token JWT pour l'authentification Bearer.
POST /api/v1/account/sender
Demande un sender personnalisé (nom qui apparaît à la place du numéro). Soumis à validation par l'opérateur (24-48h).
| Paramètre | Type | Description |
|---|---|---|
| sender | string | 3-11 caractères alphanumériques (pas uniquement des chiffres) |
Codes d'erreur
| Code HTTP | Signification |
|---|---|
| 401 | Clé API manquante ou invalide |
| 402 | Crédits insuffisants |
| 403 | Compte désactivé |
| 422 | Paramètres invalides (numéro mal formaté, message vide...) |
| 429 | Trop de requêtes (rate limit : 100/min) |
| 502 | Erreur opérateur (l'envoi a échoué côté fournisseur) |
Calcul des segments
| Encodage | 1 segment | Multi-segments |
|---|---|---|
| GSM-7 (latin) | ≤ 160 caractères | 153 caractères / segment |
| Unicode (emojis, arabe, chinois...) | ≤ 70 caractères | 67 caractères / segment |
Chaque segment est facturé indépendamment. Un SMS de 200 caractères en GSM-7 = 2 segments = 2 × prix unitaire.
Exemples d'intégration
Node.js
const res = await fetch('https://sms-api.s33d.fr/api/v1/sms/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': process.env.S33D_SMS_KEY,
},
body: JSON.stringify({
to: '+33612345678',
body: 'Votre code : 123456',
}),
});
const data = await res.json();
console.log(data.message_id);
Python
import requests
r = requests.post(
'https://sms-api.s33d.fr/api/v1/sms/send',
headers={'X-Api-Key': 's33d_votre_clé'},
json={'to': '+33612345678', 'body': 'Hello depuis Python'}
)
print(r.json()['message_id'])
PHP
$ch = curl_init('https://sms-api.s33d.fr/api/v1/sms/send');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-Api-Key: s33d_votre_clé',
],
CURLOPT_POSTFIELDS => json_encode([
'to' => '+33612345678',
'body' => 'SMS depuis PHP',
]),
]);
$result = json_decode(curl_exec($ch), true);
echo $result['message_id'];