Aller au contenu

Calculer montant ↔ nombre de SMS

POST /calculate est le calculateur de tarification bidirectionnel : passez un montant, recevez le nombre de SMS qu’il achète ; passez un nombre de SMS, recevez le montant nécessaire pour les envoyer. Il reflète le widget intégré au tableau de bord pour que les appelants externes n’aient pas à ré-implémenter l’agrégation du prix moyen côté client.

La conversion utilise le prix moyen sur l’ensemble des tuples (pays × réseau téléphonique × tarification) configurés sur votre marchand, dans la devise de votre portefeuille. Si le marchand n’a aucune tarification configurée, l’endpoint renvoie 400.

Passez mode: "amount_to_sms" avec un amount positif. La réponse inclut la partie entière (floor) de amount / average_price — jamais plus de SMS que ce que le montant achète réellement.

Fenêtre de terminal
curl $BASE_URL/api/v1/lisoloo/sms-api/calculate \
-X POST \
-H "app-key: $LISOLOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "amount_to_sms",
"amount": 10
}'

Passez mode: "sms_to_amount" avec un sms_count positif. La réponse inclut sms_count × average_price arrondi à deux décimales.

Fenêtre de terminal
curl $BASE_URL/api/v1/lisoloo/sms-api/calculate \
-X POST \
-H "app-key: $LISOLOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "sms_to_amount",
"sms_count": 2000
}'
{
"status_code": 200,
"data": {
"mode": "amount_to_sms",
"amount": 10.00,
"sms_count": 500,
"average_price": 0.0200,
"currency": "USD",
"currency_symbol": "$"
}
}
ChampDescription
modeRenvoyé depuis la requête.
amountMontant du portefeuille. Valeur d’entrée quand mode='amount_to_sms' ; calculé (arrondi à 2 décimales) quand mode='sms_to_amount'.
sms_countNombre de SMS. Calculé (floor, jamais au-dessus de ce que le montant achète) quand mode='amount_to_sms' ; valeur d’entrée quand mode='sms_to_amount'.
average_pricePrix par SMS utilisé pour la conversion, dans currency, arrondi à 4 décimales.
currencyCode ISO 4217 à trois lettres — votre devise de portefeuille.
currency_symbolSymbole d’affichage pour currency (par exemple $, , FC).
ChampTypeRequisDescription
modeenumOuiamount_to_sms ou sms_to_amount.
amountfloatQuand mode='amount_to_sms'0 ≤ amount ≤ 10 000 000.
sms_countintQuand mode='sms_to_amount'0 ≤ sms_count ≤ 10 000 000.

0 est accepté en entrée — la réponse contiendra simplement 0 pour le champ calculé également, conformément à la façon dont le widget du tableau de bord efface son résultat.

La passerelle tire toutes les lignes de tarification configurées sur votre marchand — chaque ligne couvre un tuple (pays, réseau téléphonique) — et les moyenne arithmétiquement dans la devise du portefeuille. Il n’y a pas de pondération par volume de trafic ; chaque destination configurée contribue à parts égales.

Cela fait du calculateur un outil de planification, pas une garantie par message : un vrai POST /send débite le prix exact du réseau de chaque destination, qui peut différer de la moyenne reportée ici.

HTTPCauseCorrectif
400"'amount' is required when mode='amount_to_sms'"mode='amount_to_sms' mais pas de amount.Ajoutez amount.
400"'sms_count' is required when mode='sms_to_amount'"mode='sms_to_amount' mais pas de sms_count.Ajoutez sms_count.
400Invalid modemode hors enum.Utilisez amount_to_sms ou sms_to_amount (minuscules).
400 — pas de tarificationLe marchand n’a aucune ligne (pays × réseau × tarification) configurée.Configurez les tarifications dans le tableau de bord ou contactez le support.