Docs
مركز المطوّرينلوحة التحكمesimoa.com
    • مقدمة
    • بدء سريع
    • المصادقة
    • Overview
    • عرض قائمة شرائح eSIM
    • احصل على eSIM
    • البلدان
    • OpenAPI
    • التتبع والعمولة
    • حدود المعدل والأخطاء
    • Overview
    • Claude
    • ChatGPT
    • Gemini
    • عملاء MCP آخرون
    • Overview
    • المصادقة
    • المنتجات
    • تفاصيل المنتج
    • البلدان
    • Errors & rate limits
  1. Docs
  2. واجهة API للشركاء (B2B)
  3. المنتجات

واجهة API للشركاء (B2B)

المنتجات

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

On this page
  • Request
  • Query parameters
  • Sorting
  • ترقيم الصفحات
  • الاستجابة
  • 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#

جميع المعلمات اختيارية. تُرجع القيم خارج النطاق 400، ويتم تجاهل المعلمات غير المعروفة.

المعاملالنوعالوصف
countrystringرمز البلد وفق ISO 3166-1 alpha-2 (مثل JP). تُرجع الصيغ الأخرى 400
qstringالكلمة المفتاحية (حتى 60 حرفًا)
isUnlimitedbooleantrue = غير المحدودة فقط، false = استبعاد غير المحدودة — true | false (يُقبل أيضًا 1 | 0)
minDays · maxDaysintegerنطاق الصلاحية بالأيام، 1–365
minDataGBnumberالحد الأدنى للبيانات بالـ GB، 0–1000
hasLocalNumberbooleanيتضمن رقم هاتف محليًا — true | false (يُقبل أيضًا 1 | 0)
isMultiCountrybooleanمنتج متعدد البلدان — true | false (يُقبل أيضًا 1 | 0)
sortBystringrecommended (افتراضي) | price | validity | data
sortOrderstringasc | desc — عند الحذف تُستخدم القيمة الافتراضية لكل sortBy
pageintegerيبدأ من 1، والافتراضي 1
limitinteger1–50، الافتراضي 20

Sorting#

sortBysortOrder الافتراضيالمعنى
recommendeddescالترتيب الموصى به من esimoa (يشمل المبيعات) — بنفس ترتيب الموقع
priceascالأقل سعرًا أولًا
validityascالأقصر صلاحية أولًا
datadescالأكثر بيانات أولًا

ترقيم الصفحات#

يبدأ page من 1. تعيد الاستجابة page وlimit مع total، لذا فالصفحة الأخيرة هي ceil(total / limit).

الاستجابة#

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#

الحقلالنوعالوصف
idstring'partner_<packageCode>' — معرّف المنتج نفسه المستخدم في esimoa.com
namestringالاسم المعروض بالصيغة "<area> <data> <N>일" (لاحقة الأيام الكورية). للغات الأخرى، أنشئ تسميتك الخاصة من الحقول المنظمة
countrystringتسمية منطقة التغطية (تُدرج المنتجات متعددة البلدان بلدانها)
countryCodestring?رمز البلد ISO — يُحذف عند عدم توفره
coverageCountriesstring[]رموز البلدان التي يعمل فيها المنتج
regionstring?المنطقة — تُحذف إذا لم تكن متاحة
isMultiCountrybooleanمنتج متعدد البلدان
dataAmountstringتسمية الكتالوج ('10GB', 'Unlimited', '1GB/Day + Unlimited' …)
dataAmountGBnumber?البيانات بالـ GB — تُحذف للمنتجات غير المحدودة بالكامل
isUnlimitedbooleanباقة غير محدودة
validityDaysintegerالصلاحية بالأيام
priceKRW / currencyinteger / 'KRW'سعر التجزئة من esimoa بـ KRW — لا يوجد سعر للشركاء في v1
networkTypestringالشبكة (مثل 5G) — '' عند عدم المعرفة
localNetworksstring[]المشغّلون المحليون
isLocalNetworkbooleanيستخدم شبكة محلية بدلًا من التجوال
fupPolicystring | nullنص سياسة الاستخدام العادل (FUP)
hotspotEnabledboolean | nullمشاركة الإنترنت مسموحة — null = غير معروف
hasLocalNumberbooleanيتضمن رقم هاتف محليًا
voiceMinutesinteger | nullدقائق المكالمات — -1 = غير محدود، null = غير متوفر
smsCountinteger | nullعدد الرسائل — null = غير متوفر
supportTopUpboolean | nullقابل للشحن — null = غير معروف
supportsUsimbooleanمتوفرة أيضًا كشريحة USIM فعلية
activationTypestringنوع التفعيل (مثل 'instant')

ملاحظة

لا تتضمن الاستجابة أبدًا حقول المورّد والتكلفة. تُضاف الحقول فقط ولا تتغير أسماؤها أو معانيها، لذا حلّل الاستجابة بحيث تتجاهل الحقول غير المعروفة.

آخر تحديث: ١ أكتوبر ٢٠٢٦

Previousالمصادقةالتاليتفاصيل المنتج

On this page

  • Request
  • Query parameters
  • Sorting
  • ترقيم الصفحات
  • الاستجابة
  • The PartnerProduct object

APIs and MCP for bringing esimoa eSIMs to your product

Resources

  • Docs
  • API reference
  • واجهة API للشركاء (B2B)
  • MCP server
  • OpenAPI spec

esimoa

  • الرئيسية
  • eSIM باقات
  • مركز المطوّرين
  • لوحة التحكم
  • بوابة الشركاء

Company

  • من نحن
  • الشراكات
  • شروط الخدمة
  • سياسة الخصوصية
  • سياسة التسليم والاسترداد

الدعم

  • support@esimoa.com
  • محادثة الدعم

NBase Korea Co., Ltd.

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

المقر الأمريكي: NBASE CORP. · Corporate Park, Irvine, CA 92606, USA

© 2026 esimoa. جميع الحقوق محفوظة.