Introduction
Bienvenue dans la documentation officielle de notre API SMS, un outil puissant et flexible conçu pour transformer la manière dont vous communiquez avec vos utilisateurs. Que vous gériez des notifications transactionnelles, des rappels automatisés, ou des campagnes marketing à grande échelle, notre API REST offre une solution robuste et fiable pour intégrer la messagerie SMS directement dans vos applications.
Dans un monde de plus en plus connecté, où les utilisateurs sont constamment en mouvement, les SMS restent un canal de communication essentiel. Le taux d'ouverture des SMS atteint 98 %, et 90 % des messages sont lus dans les trois premières minutes suivant leur réception. Cette rapidité et cette efficacité font des SMS un moyen incontournable de transmettre des informations importantes, des alertes et des offres marketing. Grâce à notre API SMS, vous pouvez tirer parti de cette opportunité pour optimiser votre relation client et vos processus internes.
L'intégration de notre API est pensée pour être rapide, intuitive, et accessible à tous les développeurs, quels que soient leurs langages de prédilection. Nous offrons des bibliothèques et des exemples de code dans une multitude de langages, incluant PHP, Python, JavaScript, Java, et bien d'autres encore. Que vous soyez en phase de prototypage d'une nouvelle fonctionnalité ou que vous gériez une application en production, notre API s'intègre en quelques minutes avec des requêtes HTTP simples.
L'API repose sur le standards GET pour interagir avec nos services. Les réponses sont fournies en format JSON, un format largement utilisé et facilement manipulable dans tous les langages de programmation. Nous avons également mis en place une documentation détaillée, claire, et complète pour vous guider à chaque étape de l'intégration.
Cette API s'adapte à des cas d'utilisation divers, allant des notifications transactionnelles aux alertes de sécurité, en passant par les campagnes marketing de grande envergure. Nous vous invitons à explorer les sections suivantes pour découvrir en détail toutes les fonctionnalités offertes par notre API.
Authentification
L'accès aux services de notre API SMS est sécurisé par une authentification via la méthode **Basic Auth**, garantissant que seuls les utilisateurs autorisés puissent interagir avec les différents points de terminaison API. Cette authentification repose sur la combinaison d’un *Token* et d’une *Clé API* pour s’assurer que chaque requête provient d'une source fiable et vérifiée.
En utilisant une connexion sécurisée (HTTPS), les informations d'authentification sont chiffrée, offrant une protection maximale contre les accès non autorisés et les tentatives d'interception.
Étapes de l'authentification
L'authentification fonctionne en plusieurs étapes :
- 1. Récupération de la clé API : Connectez-vous à votre compte sur le tableau de bord de notre plateforme et accédez à la section "Clé API". Vous obtiendrez un identifiant unique et une clé API spécifique à votre compte.
- 2. Génération du token : Le token d'authentification est généré en encodant en Base64 l'identifiant utilisateur et la clé API séparés par un double point `:`, formant ainsi un jeton d'authentification Basic.
- 3. Inclusion dans la requête : Ajoutez le jeton généré dans l'en-tête `Authorization` de chaque requête, comme suit : `Authorization: Basic {token}`.
- 4. Requête sécurisée : Toutes les requêtes API doivent être envoyées via une connexion HTTPS pour garantir que vos données sont transmises en toute sécurité.
Voici un exemple d'en-tête d'authentification pour une requête GET :
GET /api/send_sms.php HTTP/1.1
Host: sms.ligdicash.io
Authorization: Basic VU9UUkVfQVBJX0tFWTpWT1RSRV9UT0tFTg==
Content-Type: application/json
Envoi de SMS
L'envoi de SMS via notre API est une fonctionnalité clé qui permet aux utilisateurs de communiquer avec leurs clients de manière rapide et efficace. Grâce à une intégration simple utilisant des requêtes HTTP.
Structure de la requête GET
La requête PHP pour envoyer un SMS se présente sous la forme suivante :
curl -X GET "https://sms.ligdicash.io/api/send_sms.php" \
-H "Content-Type: application/json" \
-d '{
"api_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"to": "226xxxxxx",
"message": "Hello Ligdicash"
}'
La reponse reuissi de l'envoi du SMS se présente sous la forme suivante :
Array
(
[success] => 100
[timestamp] => 2025-01-12T00:55:44+00:00
[request_id] => SMS_1736643344_678313100f7a56.05321104
[data] => Array
(
[message_id] => MSG_1736643344_6783131093bd1
[recipient] => 226xxxxxx
[sender] => SenderName
[remaining_balance] => 85
[sent_at] => 2025-01-12T00:55:44+00:00
[status] => delivered
[message] => Hello Ligdicash
[message_info] => Array
(
[length] => 25
[encoding] => UTF-8
[parts] => 1
)
)
)
Gestion des erreurs d'authentification
Si la clé API ou Token est révoqués, expirés ou compromis, vous devez en générer une nouvelle à partir de votre compte pour pouvoir continuer à utiliser les services de l'API.
L'API utilise des codes d'erreur standardisés pour faciliter le débogage et la gestion des erreurs. Voici la liste complète des codes d'erreur :
Liste des codes d'erreur
| Code | Constante | Message | Description |
|-------|----------------------|-----------------------------|-----------------------------------------------------------------------------|
| 1001 | `AUTH_RATE_LIMIT` | Rate limit exceeded | La limite de requêtes erronées autorisées a été dépassée. |
| 1002 | `AUTH_INVALID` | Invalid credentials | La clé API ou le token est invalide ou manquant. |
| 1003 | `INVALID_PARAMS` | Invalid parameters | Les paramètres de la requête sont manquants ou invalides. |
| 1004 | `INSUFFICIENT_BALANCE` | Insufficient SMS balance | Le solde SMS est insuffisant pour effectuer l'envoi. |
| 1005 | `SMS_SEND_FAILED` | SMS sending failed | L'envoi du SMS a échoué pour une raison technique. |
| 1006 | `INVALID_PHONE` | Invalid phone number format | Le numéro de téléphone fourni est dans un format invalide. |
| 5000 | `SYSTEM_ERROR` | Internal system error | Une erreur interne du système s'est produite. |
---
Détails des erreurs
1001 - `AUTH_RATE_LIMIT` (Rate limit exceeded)
- Cause : L'utilisateur a dépassé le nombre maximal de requêtes autorisées dans un laps de temps donné.
- Solution : Attendez avant de faire de nouvelles requêtes. Vous pouvez consulter l'en-tête `Retry-After` pour savoir combien de temps attendre.
- Exemple de réponse :
json
{
"success": false,
"error": {
"code": 1001,
"message": "Rate limit exceeded",
"detail": "Too many requests. Please try again later."
}
}
{
"success": false,
"error": {
"code": 1002,
"message": "Invalid credentials",
"detail": "The provided API key or token is invalid."
}
}
{
"success": false,
"error": {
"code": 5000,
"message": "Internal system error",
"detail": "An unexpected error occurred. Please try again later."
}
}
{
"success": false,
"error": {
"code": 1003,
"message": "Invalid parameters",
"detail": "Missing required parameter: to"
}
}
{
"success": false,
"error": {
"code": 1004,
"message": "Insufficient SMS balance",
"detail": "You do not have enough SMS credits to send this message."
}
}
En cas d'erreur, il est conseillé de vérifier votre token d'authentification et de consulter la documentation ou contacter notre support technique pour résoudre tout problème lié à l'authentification.
Intégration de l'API
Language d'integration de l'API
Code
curl -X GET "https://sms.ligdicash.io/api/send_sms.php" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "api_key=VOTRE_API_KEY" \
-d "token=VOTRE_TOKEN" \
-d "to=22612345679" \
-d "text=Hello"
// Paramètres d'authentification
$credentials = [
'api_key' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'token' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
];
// Configuration du SMS
$sms = [
'to' => '226xxxxxxxxx',
'text' => 'Test message' // Votre message
];
function sendSMS($credentials, $sms) {
// Construction de l'URL avec les paramètres
$url = 'https://sms.ligdicash.io/api/send_sms.php?' . http_build_query([
'api_key' => $credentials['api_key'],
'token' => $credentials['token'],
'to' => $sms['to'],
'text' => $sms['text']
]);
try {
// Configuration de cURL
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Accept: application/json'
]
]);
// Exécution de la requête
$response = curl_exec($ch);
$err = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Fermeture de la connexion cURL
curl_close($ch);
// Gestion des erreurs
if ($err) {
throw new Exception("Erreur cURL : " . $err);
}
// Décodage de la réponse JSON
$result = json_decode($response, true);
return [
'http_code' => $httpCode,
'response' => $result
];
} catch (Exception $e) {
return [
'status' => 'error',
'message' => $e->getMessage()
];
}
}
// Test d'envoi
$result = sendSMS($credentials, $sms);
print_r($result);
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.StringJoiner;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;
public class SMSApi {
private static final String BASE_URL = "https://sms.ligdicash.io/api/send_sms.php";
public static class SMSResponse {
public final String status;
public final int httpCode;
public final String response;
public SMSResponse(String status, int httpCode, String response) {
this.status = status;
this.httpCode = httpCode;
this.response = response;
}
@Override
public String toString() {
return String.format("SMSResponse{status='%s', httpCode=%d, response='%s'}",
status, httpCode, response);
}
}
private static void disableSSLVerification() {
try {
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null; }
public void checkClientTrusted(X509Certificate[] certs, String authType) { }
public void checkServerTrusted(X509Certificate[] certs, String authType) { }
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SMSResponse sendSMS(Map credentials, Map sms) {
try {
// Construction des paramètres
StringJoiner params = new StringJoiner("&");
params.add("api_key=" + URLEncoder.encode(credentials.get("api_key"), StandardCharsets.UTF_8.toString()));
params.add("token=" + URLEncoder.encode(credentials.get("token"), StandardCharsets.UTF_8.toString()));
params.add("to=" + URLEncoder.encode(sms.get("to"), StandardCharsets.UTF_8.toString()));
params.add("text=" + URLEncoder.encode(sms.get("text"), StandardCharsets.UTF_8.toString()));
// Construction de l'URL complète
String urlString = BASE_URL + "?" + params.toString();
URL url = new URL(urlString);
// Désactive la vérification SSL pour le test
disableSSLVerification();
// Configuration de la connexion
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
// Lecture de la réponse
int responseCode = conn.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return new SMSResponse("success", responseCode, response.toString());
} catch (Exception e) {
return new SMSResponse("error", 500, e.getMessage());
}
}
public static void main(String[] args) {
// Paramètres d'authentification
Map credentials = new HashMap<>();
credentials.put("api_key", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
credentials.put("token", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
// Configuration du SMS
Map sms = new HashMap<>();
sms.put("to", "226xxxxxxxxxxx");
sms.put("text", "Test message");
// Test d'envoi
SMSResponse result = sendSMS(credentials, sms);
System.out.println(result);
}
}
import requests
from urllib.parse import urlencode
def send_sms(credentials, sms):
# Construction des paramètres
params = {
'api_key': credentials['api_key'],
'token': credentials['token'],
'to': sms['to'],
'text': sms['text']
}
# URL de base
base_url = 'https://sms.ligdicash.io/api/send_sms.php'
# Construction de l'URL complète avec les paramètres
url = f"{base_url}?{urlencode(params)}"
try:
# Configuration des headers
headers = {
'Accept': 'application/json'
}
# Envoi de la requête GET
response = requests.get(
url,
headers=headers,
timeout=30,
verify=False # Désactive la vérification SSL pour le test
)
# Vérification du statut de la réponse
response.raise_for_status()
# Retourne la réponse en format JSON
return {
'status': 'success',
'http_code': response.status_code,
'response': response.json()
}
except requests.exceptions.RequestException as e:
return {
'status': 'error',
'message': str(e)
}
# Test de la fonction
if __name__ == "__main__":
# Paramètres d'authentification
credentials = {
'api_key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'token': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
# Configuration du SMS
sms = {
'to': '226xxxxxxxxx',
'text': 'Test message'
}
# Envoi du SMS
result = send_sms(credentials, sms)
print(result)
const axios = require('axios');
const querystring = require('querystring');
async function sendSMS(credentials, sms) {
// Construction des paramètres
const params = {
api_key: credentials.api_key,
token: credentials.token,
to: sms.to,
text: sms.text
};
// URL de base
const baseUrl = 'https://sms.ligdicash.io/api/send_sms.php';
// Construction de l'URL complète
const url = `${baseUrl}?${querystring.stringify(params)}`;
try {
// Configuration de la requête
const config = {
headers: {
'Accept': 'application/json'
},
timeout: 30000,
httpsAgent: new require('https').Agent({
rejectUnauthorized: false // Désactive la vérification SSL pour le test
})
};
// Envoi de la requête GET
const response = await axios.get(url, config);
return {
status: 'success',
http_code: response.status,
response: response.data
};
} catch (error) {
return {
status: 'error',
message: error.message,
details: error.response?.data
};
}
}
// Test de la fonction
const credentials = {
api_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
};
const sms = {
to: '226xxxxxxxxx',
text: 'Test message'
};
// Utilisation avec async/await
(async () => {
try {
const result = await sendSMS(credentials, sms);
console.log(result);
} catch (error) {
console.error('Error:', error);
}
})();