Aller au contenu
iRoamly Shop

Documentation API

Référence de l’API iRoamly Shop : authentification, forfaits, achat et livraison, renouvellement et consommation.

Présentation

Présentation générale

Pour garantir la sécurité des informations transmises au serveur, les mécanismes de sécurité suivants sont utilisés :

  1. 1.Toutes les interfaces communiquent via des connexions sécurisées HTTPS secure.
  2. 2.AuthKey attribuée, utilisée pour l’authentification API (longueur maximale : 32 caractères).
  3. 3.AuthSecret attribué, utilisé pour générer le hachage de la requête (longueur maximale : 50 caractères).
  4. 4.Les requêtes sont authentifiées par des hachages SHA-256.
Présentation

Normes de l’interface

Chemin de base :https://api.iroamly.shop/
Protocole de requête :HTTPS
Méthode de requête :GET / POST
Format d’échange des données :application/json

Paramètres d’en-tête de la requête :

AuthKey : clé d’authentification client, de type chaîne (String)

Certification : chaîne (String) contenant le hachage SHA-256 de la concaténation AuthKey+AuthSecret, dans cet ordre.

/common/getPlanItem ne nécessite pas les en-têtes AuthKey ni Certification.

Points de terminaison de l’API

Obtenir la liste des forfaits par région

URL de requête :https://api.iroamly.shop/common/getPlanItem
Méthode de requête :GET

Aucun en-tête AuthKey ou Certification n’est requis.

Paramètres de la requête :

ParamètreDescriptionType
regionAccepte les codes ISO2, les noms de pays (insensibles à la casse) ou les formats normalisés (par ex. united-states).String

Format de la réponse :

Succès : HTTP 200. Les forfaits sont renvoyés dans data.list.

Renvoie toujours HTTP 200. Lorsqu’aucune donnée n’est disponible, data.list est un tableau vide et msg vaut Success.

Description des champs de la réponse :

ChampDescriptionType
planNom du forfait (comprend la région, le type, le volume de données et la durée).String
productCodeID unique du forfait pour l’achat ou les requêtes.String
dataVolume de données (par ex. 10GB, Unlimited, 500MB).String
typeType de forfait (par ex. Total, Daily, Unlimited).String
plan_typeCatégorie du forfait (par ex. default).String
package_typeType de forfait (par ex. Data Only).String
durationDurée de validité en jours (par ex. 10).String
speedDébit réseau (par ex. 4G / 5G).String
operatorOpérateurs pris en charge (par ex. T-Mobile/AT&T).String
regionNom officiel de la région (par ex. United States).String
region_indexIdentifiant normalisé de la région (minuscules avec traits d’union, par ex. united-states).String
creditPrix du forfait en crédits (et non en dollars US).Float
remarkRemarques complémentaires (par ex. règles de limitation du débit).String
created_atHorodatage de création du forfait (format ISO 8601).String
Exemple de requête
"https://api.iroamly.shop/common/getPlanItem?region=US"
Exemple de réponse
{
  "code": 0,
  "data": {
    list:[
     {
       "plan": "United States-eSIM-10GB-10 Days-Total",
       "productCode": "iRoamly-unite-584535",
       "data": "10GB",
       "type": "Total",
       "package_type": "Data Only",
       "duration": "10",
       "speed": "4G / 5G",
       "operator": "T-Mobile/AT&T",
       "region": "United States",
       "region_index": "united-states",
       "credit": 6.43,
       "remark": "After accumulating 10GB, the speed will be reduced to 128 Kbps",
       "created_at": "2025-05-16T04:02:31Z"
     }
    ]
  }
}
Points de terminaison de l’API

Achat direct de QR code

URL de requête :https://api.iroamly.shop/openapi/purchaseqrcode
Méthode de requête :POST

Paramètres de la requête :

ParamètreDescriptionType
emailAdresse e-mail qui recevra les QR codes. Si elle est vide, aucun e-mail ne sera envoyé.String
productListEnsemble de produitsObject[]

Champs de productList :

ChampDescriptionType
planNom du forfait. Indiquez soit plan, soit productCode.String
productCodeID du forfait (productCode issu de « Obtenir la liste des forfaits par région »). Indiquez soit productCode, soit plan.String
quantityQuantitéInt
Forfait de test :iRoamly-Test-10GB

Étape suivante : utilisez « Consulter le QR code » (https://api.iroamly.shop/openapi/qrcodeQuery) pour obtenir le QR code

Exemple de paramètres
{
  "email": "2m827n32d@gmail.com",
  "productList": [
    {
      "plan": "United States-eSIM-10GB-10 Days-Total",
      "quantity": 2
    },
    {
      "plan": "Albania-10GB-15 Days-Total",
      "quantity": 1
    }
  ]
}
Exemple de réponse
{
  "code": 1,
  "data": {
    "orderId": "Open-Global-DXDWFBKG578913",
    "redeem_list": [
      {
        "productCode": "",
        "plan": "United States-eSIM-10GB-10 Days-Total",
        "redeemCode": "tjMxpYfvk5dFMQg",
        "status": 0,
        "expire_at": "2026-03-01"
      },
      {
        "productCode": "",
        "plan": "United States-eSIM-10GB-10 Days-Total",
        "redeemCode": "gKPzYhseX1wRmSi",
        "status": 0,
        "expire_at": "2026-03-01"
      },
      {
        "productCode": "",
        "plan": "Albania-10GB-15 Days-Total",
        "redeemCode": "sLSHNkAv2ojbNBG",
        "status": 0,
        "expire_at": "2026-03-01"
      }
    ]
  },
  "msg": "success"
}
Points de terminaison de l’API

Acheter des codes d’échange

URL de requête :https://api.iroamly.shop/openapi/purchaseCode
Méthode de requête :POST

Paramètres de la requête :

ParamètreDescriptionType
emailE-mailString
productListEnsemble de produitsObject[]

Champs de productList :

ChampDescriptionType
planNom du forfait. Indiquez soit plan, soit productCode.String
productCodeID du forfait (productCode issu de « Obtenir la liste des forfaits par région »). Indiquez soit productCode, soit plan.String
quantityQuantitéInt
Forfait de test :iRoamly-Test-10GB
Exemple de paramètres
{
  "email": "2m827n32d@gmail.com",
  "productList": [
    {
      "plan": "United States-eSIM-10GB-10 Days-Total",
      "quantity": 2
    },
    {
      "plan": "Albania-10GB-15 Days-Total",
      "quantity": 1
    }
  ]
}
Exemple de réponse
{
  "code": 1,
  "msg": "success",
  "orderId": "xxx-xxxx-sd9hn8df333" // Order number, can be used to query redeem code
}
Points de terminaison de l’API

Consulter les codes d’échange

URL de requête :https://api.iroamly.shop/openapi/codeQuery
Méthode de requête :POST

Paramètres de la requête :

ParamètreDescriptionType
orderIdNuméro de commandeString
Exemple de paramètres
{
  "orderId": "xxx-xxx-dh239jdu28",
}
Exemple de réponse
{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "productCode": "m8hed7h2fed",
      "redeemCode": "3cd2m3f23f3f3",
      "expire_at": "2024-06-30", // Expiry date
      "plan": "United States-eSIM-10GB-10 Days-Total",
      "status": 0
    },
    {
      "productCode": "v2jf28dj2w",
      "redeemCode": "d923j29ef2323",
      "expire_at": "2024-06-30",
      "plan": "Albania-10GB-15 Days-Total",
      "status": 2
    }
  ]
}
Points de terminaison de l’API

Convertir en QR code

(Remarque : les QR codes sont envoyés à l’adresse e-mail indiquée après la conversion. Le traitement des lots plus importants peut prendre plus de temps.)

URL de requête :https://api.iroamly.shop/openapi/redeemQRcode
Méthode de requête :POST

Paramètres de la requête :

ParamètreDescriptionType
emailE-mailString
codeListEnsemble de codes d’échangeObject[]

Champs de productList :

ChampDescriptionType
redeemCodeCode d’échangeString
Exemple de paramètres
{
  "email": "2m827n32d@gmail.com",
  "codeList": [
    {
      "redeemCode": "m8hed7h2fed",
    },
    {
      "redeemCode": "cn88beg9edj",
    }
  ]
}
Exemple de réponse
{
  "code": 1,
  "msg": "success",
}
Points de terminaison de l’API

Consulter le QR code

URL de requête :https://api.iroamly.shop/openapi/qrcodeQuery
Méthode de requête :POST

Paramètres de la requête :

ParamètreDescriptionType
redeemCodeCode d’échangeString

Description des champs de la réponse :

ChampDescriptionType
redeemCodeCode d’échangeString
qrcodeURL de l’image du QR codeString
statusStatut du code d’échange (voir « Définitions des statuts de code d’échange »)Int
qrcode_contentContenu du QR code (chaîne d’activation LPA, par ex. LPA:1$…)String
iscouldrenewalIndique si l’eSIM peut être renouvelée : 1 - renouvelable 0 - non renouvelableInt
Exemple de paramètres
{
  "redeemCode": "m8hed7h2fed",
}
Exemple de réponse
{
  "code": 1,
  "msg": "success",
  "redeemCode": "m8hed7h2fed",
  "qrcode": "https://dsfjigewafe/qrcode.jpg"
}
Points de terminaison de l’API

Obtenir le statut des forfaits de renouvellement

URL de requête :https://api.iroamly.shop/openapi/getRenewPlanStatus
Méthode de requête :POST

Paramètres de la requête :

ParamètreDescriptionType
redeemCodeCode d’échangeString

Description des champs de la réponse :

Le code de premier niveau de la réponse indique si le code d’échange peut être renouvelé : 0 - renouvellement possible, -1 - renouvellement impossible. Les options de renouvellement sont listées dans data.renewList :

ChampDescriptionType
renewtypeType de renouvellement : 0 - Activation à l’expiration du forfait actuel 1 - Activation immédiate (efface les données restantes) 2 - Activation à une date préciseInt
starttimeDébut de la fenêtre d’activation facultative : l’heure d’activation la plus précoce que vous pouvez choisir (type de renouvellement 2).String
endtimeFin de la fenêtre d’activation facultative : l’heure d’activation la plus tardive que vous pouvez choisir (type de renouvellement 2).String
Exemple de paramètres
{
  "redeemCode": "3cd2m3f23f3f3",
}
Exemple de réponse
{
  "code": 0,
  "data": {
    "renewList": [
      {
        "renewtype": 1,
        "starttime": "0001-01-01T00:00:00Z",
        "endtime": "0001-01-01T00:00:00Z"
      },
      {
        "renewtype": 2,
        "starttime": "2025-08-04 06:13:08",
        "endtime": "2025-09-20 14:23:51"
      }
    ],
    "lasttime": "0001-01-01T00:00:00Z"
  },
  "msg": "Success"
}
Points de terminaison de l’API

Renouveler un code

(Remarque : lors du renouvellement, le groupe de renouvellement du forfait sélectionné doit correspondre à celui du forfait d’origine.)

URL de requête :https://api.iroamly.shop/openapi/renewcode
Méthode de requête :POST

Paramètres de la requête :

ParamètreDescriptionType
redeemCodeCode à renouvelerString
planForfait de renouvellementString
renewtypeType de renouvellement : 0 - Activation à l’expiration du forfait actuel 1 - Activation immédiate (efface les données restantes) 2 - Activation à une date préciseInt
renewtimeDate et heure de prise d’effet (obligatoire). Format : YYYY-MM-DDTHH:mm:ssZString
Exemple de paramètres
{
  redeemCode: "DEF456UVW",
  plan: "basic_yearly",
  renewtype: 0,
  renewtime: "2024-12-31T23:59:59Z"
}
Exemple de réponse
{
  code: 1,
  data: {
    orderId: "Open-Global-DXDWFBKG578913",
    plan: "United States-eSIM-10GB-10 Days-Total",
    redeemCode: "tjMxpYfvk5dFMQg",
    status: 0,
    expire_at: "2026-03-01"
  },
  msg: "success"
}
Points de terminaison de l’API

Obtenir les statistiques du forfait

URL de requête :https://api.iroamly.shop/openapi/getnetworkflow
Méthode de requête :GET

Paramètres de la requête :

ParamètreDescriptionType
redeemCodeCode d’échange à consulter.String

Description des champs de la réponse :

ParamètreDescriptionType
status0 - Inactif 1 - Actif 2 - Expiré 9 - InvalideInt
flow_useDonnées utilisées pendant la période de facturation (en Mo)String
flow_totalVolume total de la période de facturation (en Mo, ou illimité)String
start_dataDate de début du forfaitString
end_dataDate de fin du forfaitString
installDeviceAppareil installéString
installCountNombre d’installationsString
installTimeDate d’installationString
Exemple valide
{
  code: 1,
  status: 0,
  flow_use: "300",
  flow_total: "1024",
  start_data: "2025-10-25T15:04:05Z07:00",
  end_data: "2025-11-25T15:04:05Z07:00",
  installDevice: "iPhone 15",
  installCount: "1",
  installTime: "2025-10-25T15:04:05Z06:00"
}
Exemple non valide
{
  code: -1,
  msg: "error message"
}
Définitions

Définitions des codes de statut de réponse

CodeDescription
1Succès
2Échec de l’authentification des paramètres de la requête
3Paramètres non fournis comme requis
4Le code produit n’existe pas
5Crédits insuffisants
6Le code d’échange n’existe pas
7Le code d’échange a déjà été échangé ou n’existe pas
-1Échec de la requête

Le succès correspond à code 1, sauf pour /common/getPlanItem et /openapi/getRenewPlanStatus, qui renvoient code 0 en cas de succès.

Définitions

Définitions des statuts de code d’échange

StatutDescription
0Non échangé
1Échange en cours
2Échangé
3Échec de l’échange
Référence de code

Acheter des codes d’échange (Python)

python
import requests
import json
import hashlib

# URL for the request
url = "https://api.iroamly.shop/openapi/purchaseCode"

# Provided AuthKey and AuthSecret, remember to replace them with real values
auth_key = "YOUR_AUTH_KEY_HERE"
auth_secret = "YOUR_AUTH_SECRET_HERE" 


# Calculating Certification
combined = auth_key + auth_secret
certification = hashlib.sha256(combined.encode()).hexdigest()

# Header parameters for the request
headers = {
    "Content-Type": "application/json",
    "AuthKey": auth_key,
    "Certification": certification
}

# Example data for the request body
data = {
    "email": "2m827n32d@gmail.com",
    "productList": [
        {
            "productCode": "m8hed7h2fed2398dsnh",
            "quantity": 2
        },
        {
            "productCode": "cn88beg9edjdfj2sj0a",
            "quantity": 1
        }
    ]
}

# Sending POST request
response = requests.post(url, headers=headers, data=json.dumps(data))

# Printing the response content
print(response.text)

# Example of response
{
    "code":1,
    "msg":"success",
    "orderId":"xxx-xxxx-sd9hn8df333"
}
Référence de code

Consulter les codes d’échange (Python)

python
import requests
import json
import hashlib

# URL for the request
url = "https://api.iroamly.shop/openapi/codeQuery"

# Provided AuthKey and AuthSecret, remember to replace them with real values
auth_key = "YOUR_AUTH_KEY_HERE"
auth_secret = "YOUR_AUTH_SECRET_HERE" 


# Calculating Certification
combined = auth_key + auth_secret
certification = hashlib.sha256(combined.encode()).hexdigest()

# Header parameters for the request
headers = {
    "Content-Type": "application/json",
    "AuthKey": auth_key,
    "Certification": certification
}

# Example data for the request body
data = {
    "orderId":"xxx-xxx-dh239jdu28"
}

# Sending POST request
response = requests.post(url, headers=headers, data=json.dumps(data))

# Printing the response content
print(response.text)

# Example of response
{
 "code":1,
 "data":
    [
     {"productCode":"m8hed7h2fed2398dsnh","redeemCode":"nDb4TDCn6vMhbQv","status":0,"expire_at":"2024-07-04"},
     {"productCode":"m8hed7h2fed2398dsnh","redeemCode":"oA7AWAmo76BwoGj","status":0,"expire_at":"2024-07-04"},
     {"productCode":"cn88beg9edjdfj2sj0a","redeemCode":"XRdDeSxBVNbvCpU","status":0,"expire_at":"2024-07-04"}
    ],
 "msg":"success"
}
Référence de code

Convertir en QR code (Python)

python
import requests
import json
import hashlib

# URL for the request
url = "https://api.iroamly.shop/openapi/redeemQRcode"

# Provided AuthKey and AuthSecret, remember to replace them with real values
auth_key = "YOUR_AUTH_KEY_HERE"
auth_secret = "YOUR_AUTH_SECRET_HERE" 


# Calculating Certification
combined = auth_key + auth_secret
certification = hashlib.sha256(combined.encode()).hexdigest()

# Header parameters for the request
headers = {
    "Content-Type": "application/json",
    "AuthKey": auth_key,
    "Certification": certification
}

# Example data for the request body
data = {
    "email": "2m827n32d@gmail.com",
    "codeList": [
        {
            "redeemCode": "nDb4TDCn6vMhbQv",
        },
        {
            "redeemCode": "XRdDeSxBVNbvCpU",
        }
    ]
}

# Sending POST request
response = requests.post(url, headers=headers, data=json.dumps(data))

# Printing the response content
print(response.text)

# Example of response
{"code":1,"msg":"success"}
Référence de code

Consulter le QR code (Python)

python
import requests
import json
import hashlib

# URL for the request
url = "https://api.iroamly.shop/openapi/qrcodeQuery"

# Provided AuthKey and AuthSecret, remember to replace them with real values
auth_key = "YOUR_AUTH_KEY_HERE"
auth_secret = "YOUR_AUTH_SECRET_HERE" 


# Calculating Certification
combined = auth_key + auth_secret
certification = hashlib.sha256(combined.encode()).hexdigest()

# Header parameters for the request
headers = {
    "Content-Type": "application/json",
    "AuthKey": auth_key,
    "Certification": certification
}

# Example data for the request body
data = {
    "redeemCode":"XRdDeSxBVNbvCpU"
}

# Sending POST request
response = requests.post(url, headers=headers, data=json.dumps(data))

# Printing the response content
print(response.text)

# Example of response
{
 "code":1,
 "qrcode":"https:/code.tokyoesim.com/20231220/1703048857317.65625d0a779f4598d55d77bda43ecd80.png",
 "msg":"success",
 "redeemCode":"XRdDeSxBVNbvCpU"
}