Docs
Espace développeursTableau de bordesimoa.com
    • Introduction
    • Démarrage rapide
    • Authentification
    • Overview
    • Lister les eSIM
    • Obtenir une eSIM
    • Pays
    • OpenAPI
    • Suivi et commissions
    • Limites de requêtes et erreurs
    • Overview
    • Claude
    • ChatGPT
    • Gemini
    • Autres clients MCP
    • Overview
    • Authentification
    • Produits
    • Détail du produit
    • Pays
    • Errors & rate limits
  1. Docs
  2. API partenaire (B2B)
  3. Produits

API partenaire (B2B)

Produits

GET /b2b/v1/products — search esimoa products by country, keyword, duration, data and more.

On this page
  • Request
  • Query parameters
  • Sorting
  • Pagination
  • Réponse
  • The PartnerProduct object

Request#

GET/b2b/v1/products
curl "https://api.esimoa.com/b2b/v1/products?country=JP&isUnlimited=true&minDays=5&sortBy=price&limit=20" \
  -H "X-API-Key: $ESIMOA_PARTNER_KEY"
const params = new URLSearchParams({
  country: 'JP',
  isUnlimited: 'true',
  minDays: '5',
  sortBy: 'price',
  limit: '20',
  page: '1',
});
const res = await fetch(`https://api.esimoa.com/b2b/v1/products?${params}`, {
  headers: { 'X-API-Key': process.env.ESIMOA_PARTNER_KEY },
});
const body = await res.json();
if (!res.ok) throw new Error(`${body.code}: ${body.message}`);

const { data: products, total, page, limit } = body;
import os
import requests

res = requests.get(
    "https://api.esimoa.com/b2b/v1/products",
    params={"country": "JP", "isUnlimited": "true", "minDays": 5, "sortBy": "price", "limit": 20, "page": 1},
    headers={"X-API-Key": os.environ["ESIMOA_PARTNER_KEY"]},
    timeout=10,
)
body = res.json()
if not res.ok:
    raise RuntimeError(f"{body['code']}: {body['message']}")

products = body["data"]

Query parameters#

Tous les paramètres sont facultatifs. Les valeurs hors limites renvoient 400 ; les paramètres inconnus sont ignorés.

ParamètreTypeDescription
countrystringCode pays ISO 3166-1 alpha-2 (ex. : JP). Les autres formats renvoient 400
qstringMot-clé (60 caractères max.)
isUnlimitedbooleantrue = illimités uniquement, false = exclure les illimités — true | false (1 | 0 également acceptés)
minDays · maxDaysintegerPlage de validité en jours, 1–365
minDataGBnumberDonnées minimales en GB, 0–1000
hasLocalNumberbooleanInclut un numéro de téléphone local — true | false (1 | 0 également acceptés)
isMultiCountrybooleanProduit multi-pays — true | false (1 | 0 également acceptés)
sortBystringrecommended (par défaut) | price | validity | data
sortOrderstringasc | desc — valeur par défaut selon sortBy si omis
pageintegerCommence à 1, 1 par défaut
limitinteger1–50, 20 par défaut

Sorting#

sortBysortOrder par défautSignification
recommendeddescClassement recommandé esimoa (ventes incluses) — même ordre que le site web
priceascPrix croissant
validityascValidité la plus courte d’abord
datadescPlus de données d’abord

Pagination#

page commence à 1. La réponse renvoie page et limit ainsi que total : la dernière page est donc ceil(total / limit).

Réponse#

200 OKjson
{
  "success": true,
  "data": [
    {
      "id": "partner_9VKPYQ3JRYVK5797",
      "name": "Japan Unlimited 5일",
      "country": "Japan",
      "countryCode": "JP",
      "coverageCountries": ["JP"],
      "isMultiCountry": false,
      "dataAmount": "Unlimited",
      "isUnlimited": true,
      "validityDays": 5,
      "priceKRW": 12000,
      "currency": "KRW",
      "networkType": "5G",
      "localNetworks": ["SoftBank"],
      "isLocalNetwork": true,
      "fupPolicy": null,
      "hotspotEnabled": true,
      "hasLocalNumber": false,
      "voiceMinutes": null,
      "smsCount": null,
      "supportTopUp": false,
      "supportsUsim": false,
      "activationType": "instant"
    }
  ],
  "total": 128,
  "page": 1,
  "limit": 20
}

The PartnerProduct object#

ChampTypeDescription
idstring'partner_<packageCode>' — le même id produit que sur esimoa.com
namestringNom affiché au format "<area> <data> <N>일" (suffixe coréen des jours). Pour les autres langues, construisez votre propre libellé à partir des champs structurés
countrystringLibellé de la zone de couverture (les produits multi-pays listent leurs pays)
countryCodestring?Code pays ISO — omis s’il n’est pas disponible
coverageCountriesstring[]Codes des pays où le produit fonctionne
regionstring?Région — omise si indisponible
isMultiCountrybooleanProduit multi-pays
dataAmountstringLibellé du catalogue ('10GB', 'Unlimited', '1GB/Day + Unlimited' …)
dataAmountGBnumber?Données en GB — omis pour les produits entièrement illimités
isUnlimitedbooleanForfait illimité
validityDaysintegerValidité en jours
priceKRW / currencyinteger / 'KRW'Prix de vente esimoa en KRW — pas de prix partenaire dans la v1
networkTypestringRéseau (ex. : 5G) — '' si inconnu
localNetworksstring[]Opérateurs locaux
isLocalNetworkbooleanUtilise un réseau local plutôt que l’itinérance
fupPolicystring | nullTexte de la politique d’utilisation raisonnable (FUP)
hotspotEnabledboolean | nullPartage de connexion autorisé — null = inconnu
hasLocalNumberbooleanInclut un numéro de téléphone local
voiceMinutesinteger | nullMinutes de voix — -1 = illimité, null = non fourni
smsCountinteger | nullNombre de SMS — null = non fourni
supportTopUpboolean | nullRechargeable — null = inconnu
supportsUsimbooleanÉgalement vendue en USIM physique
activationTypestringType d’activation (ex. : 'instant')

Remarque

Les champs fournisseur et coût ne figurent jamais dans la réponse. Des champs peuvent seulement être ajoutés, sans changement de nom ni de signification : ignorez les champs inconnus lors de l’analyse.

Dernière mise à jour: 1 octobre 2026

PreviousAuthentificationSuivantDétail du produit

On this page

  • Request
  • Query parameters
  • Sorting
  • Pagination
  • Réponse
  • The PartnerProduct object

APIs and MCP for bringing esimoa eSIMs to your product

Resources

  • Docs
  • API reference
  • API partenaire (B2B)
  • MCP server
  • OpenAPI spec

esimoa

  • Accueil
  • eSIM forfaits
  • Espace développeurs
  • Tableau de bord
  • Portail partenaire

Company

  • À propos
  • Partenariat
  • Conditions d’utilisation
  • Politique de confidentialité
  • Politique de livraison et de remboursement

Assistance

  • support@esimoa.com
  • Chat d’assistance

NBase Korea Co., Ltd.

902, Bldg A, 767 Sinsu-ro, Suji-gu, Yongin-si, Gyeonggi-do (Dongcheon-dong, Bundang Suji U-TOWER)

Siège américain : NBASE CORP. · Corporate Park, Irvine, CA 92606, USA

© 2026 esimoa. Tous droits réservés.