Documentation développeur

Une API RESTful authentifiée par jeton d’accès, avec du JSON UTF-8 en requête comme en réponse. Chaque point d’accès ci-dessous est accompagné d’un exemple curl exécutable tel quel.


API SMS — envoyer des messages

Déclenchez les envois directement depuis vos propres systèmes. to accepte un numéro unique, ou plusieurs séparés par des virgules (jusqu’à 1000 par appel) ; une fois l’envoi accepté, l’appel renvoie un message_id qui permet de suivre l’état de remise.

En-têtes d’authentification
Paramètre
Obligatoire
Description
Authorization
Oui
Transmettez votre jeton API avec le schéma Bearer, par exemple :Authorization: Bearer {api_token}
Accept
Oui
À définir sur application/json

Envoyer un message

Envoie un SMS texte vers un ou plusieurs numéros. Dans la réponse, segments indique le nombre de messages occupés par cet envoi et cost son coût total.

Point d’accès

POST https://redsmsbox.com/api/v1/sms/send

Paramètre

Paramètre
Obligatoire
Type
Description
to
Oui
string
Numéro du destinataire au format E.164 (indicatif pays compris) ; séparez plusieurs numéros par des virgules
message
Oui
string
Corps du message. Pour la Chine, le format est 【signature】texte, et le contenu marketing doit se terminer par une mention de désabonnement
channel
Non
string
Identifiant de route ; à défaut, la route par défaut du compte s’applique
sender_id
Non
string
Identifiant d’expéditeur personnalisé (Sender ID) pour les messages internationaux
schedule_at
Non
string
Heure d’envoi programmée (ISO 8601 UTC) ; envoi immédiat si le paramètre est omis
callback_url
Non
string
URL du webhook pour l’accusé de ce message, prioritaire sur le réglage du compte

Exemple de requête

curl -X POST https://redsmsbox.com/api/v1/sms/send \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
  "to": "+8613800138000",
  "message": "【RedsmsBox】您的验证码是 123456,5 分钟内有效。"
}'

Réponse

{
  "ok": true,
  "message_id": "msg_3f7a91",
  "status": "queued",
  "to": "+8613800138000",
  "segments": 1,
  "cost": "0.06",
  "currency": "USD"
}
{
    "ok": false,
    "error_code": "invalid_parameter",
    "error": "The body is not valid JSON, or a field failed validation"
}

Les réponses en échec utilisent toujours cette enveloppe. Le champ error est toujours en anglais et ne suit pas la langue de l’interface — il s’adresse aux machines et à l’agrégation de journaux. Faites vos branchements sur error_code ; ne comparez jamais le texte de error. La table complète des codes figure dans la documentation développeur de la console.

Vérifier l’état de remise

Consultez l’état courant d’un message et l’heure de l’accusé de l’opérateur à partir du message_id renvoyé lors de l’envoi.

Point d’accès

GET https://redsmsbox.com/api/v1/sms/{message_id}

Paramètre

Paramètre
Obligatoire
Type
Description
message_id
Oui
string
Identifiant du message renvoyé par le point d’accès d’envoi

Exemple de requête

curl -X GET https://redsmsbox.com/api/v1/sms/msg_3f7a91 \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'

Réponse

{
  "ok": true,
  "message_id": "msg_3f7a91",
  "status": "delivered",
  "to": "+8613800138000",
  "segments": 1,
  "cost": "0.06",
  "currency": "USD",
  "submitted_at": "2026-08-16T09:12:31Z",
  "delivered_at": "2026-08-16T09:12:34Z"
}
{
    "ok": false,
    "error_code": "invalid_parameter",
    "error": "The body is not valid JSON, or a field failed validation"
}

Les réponses en échec utilisent toujours cette enveloppe. Le champ error est toujours en anglais et ne suit pas la langue de l’interface — il s’adresse aux machines et à l’agrégation de journaux. Faites vos branchements sur error_code ; ne comparez jamais le texte de error. La table complète des codes figure dans la documentation développeur de la console.

Lister les messages envoyés

Parcourez page par page l’historique d’envoi de ce compte, filtré par date et par statut.

Point d’accès

GET https://redsmsbox.com/api/v1/sms

Paramètre

Paramètre
Obligatoire
Type
Description
status
Non
string
Filtrer par statut, par exemple queued / delivered / failed
start
Non
string
Date de début (ISO 8601 UTC)
end
Non
string
Date de fin (ISO 8601 UTC)
page
Non
number
Numéro de page, 1 par défaut

Exemple de requête

curl -X GET 'https://redsmsbox.com/api/v1/sms?status=delivered&page=1' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'

Réponse

{
  "ok": true,
  "page": 1,
  "total": 2,
  "items": [
    {
      "message_id": "msg_3f7a91",
      "status": "delivered",
      "to": "+8613800138000",
      "segments": 1,
      "cost": "0.06"
    }
  ]
}
{
    "ok": false,
    "error_code": "invalid_parameter",
    "error": "The body is not valid JSON, or a field failed validation"
}

Les réponses en échec utilisent toujours cette enveloppe. Le champ error est toujours en anglais et ne suit pas la langue de l’interface — il s’adresse aux machines et à l’agrégation de journaux. Faites vos branchements sur error_code ; ne comparez jamais le texte de error. La table complète des codes figure dans la documentation développeur de la console.

Vous ne trouvez pas ce qu’il vous faut ? Écrivez-nous

Décrivez votre usage et l’assistance reviendra vers vous avec le périmètre autorisé, une recommandation de route et le tarif.