API สำหรับพาร์ตเนอร์ (B2B)
สินค้า
GET /b2b/v1/products — search esimoa products by country, keyword, duration, data and more.
Request#
GET
/b2b/v1/productscurl "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 ส่วนพารามิเตอร์ที่ไม่รู้จักจะถูกละเว้น
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
country | string | รหัสประเทศ ISO 3166-1 alpha-2 (เช่น JP) รูปแบบอื่นจะได้ผลลัพธ์ 400 |
q | string | คำค้นหา (สูงสุด 60 ตัวอักษร) |
isUnlimited | boolean | true = เฉพาะไม่จำกัด, false = ไม่รวมแบบไม่จำกัด — true | false (รับ 1 | 0 ได้ด้วย) |
minDays · maxDays | integer | ช่วงระยะเวลาใช้งานเป็นวัน 1–365 |
minDataGB | number | ข้อมูลขั้นต่ำเป็น GB, 0–1000 |
hasLocalNumber | boolean | มีหมายเลขโทรศัพท์ท้องถิ่น — true | false (รับ 1 | 0 ได้ด้วย) |
isMultiCountry | boolean | สินค้าหลายประเทศ — true | false (รับ 1 | 0 ได้ด้วย) |
sortBy | string | recommended (ค่าเริ่มต้น) | price | validity | data |
sortOrder | string | asc | desc — หากไม่ระบุจะใช้ค่าเริ่มต้นตาม sortBy |
page | integer | เริ่มที่ 1 ค่าเริ่มต้น 1 |
limit | integer | 1–50 ค่าเริ่มต้น 20 |
Sorting#
| sortBy | sortOrder เริ่มต้น | ความหมาย |
|---|---|---|
| recommended | desc | อันดับแนะนำของ esimoa (รวมยอดขาย) — ลำดับเดียวกับเว็บไซต์ |
| price | asc | ราคาต่ำสุดก่อน |
| validity | asc | ระยะเวลาใช้งานสั้นที่สุดก่อน |
| data | desc | ข้อมูลมากที่สุดก่อน |
การแบ่งหน้า#
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#
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
id | string | 'partner_<packageCode>' — id สินค้าเดียวกับที่ใช้บน esimoa.com |
name | string | ชื่อที่แสดงในรูปแบบ "<area> <data> <N>일" (คำต่อท้ายวันภาษาเกาหลี) สำหรับภาษาอื่น ให้สร้างป้ายกำกับเองจากฟิลด์ที่มีโครงสร้าง |
country | string | ป้ายพื้นที่ให้บริการ (สินค้าหลายประเทศจะแสดงรายชื่อประเทศ) |
countryCode | string? | รหัสประเทศ ISO — ละไว้หากไม่มีข้อมูล |
coverageCountries | string[] | รหัสประเทศที่สินค้าใช้งานได้ |
region | string? | ภูมิภาค — ละไว้หากไม่มีข้อมูล |
isMultiCountry | boolean | สินค้าหลายประเทศ |
dataAmount | string | ป้ายกำกับแคตตาล็อก ('10GB', 'Unlimited', '1GB/Day + Unlimited' …) |
dataAmountGB | number? | ข้อมูลเป็น GB — ไม่ระบุสำหรับสินค้าไม่จำกัดทั้งหมด |
isUnlimited | boolean | แพ็กเกจไม่จำกัด |
validityDays | integer | ระยะเวลาใช้งานเป็นวัน |
priceKRW / currency | integer / 'KRW' | ราคาขายปลีกของ esimoa เป็น KRW — ไม่มีราคาพาร์ตเนอร์ใน v1 |
networkType | string | เครือข่าย (เช่น 5G) — '' หากไม่ทราบ |
localNetworks | string[] | ผู้ให้บริการเครือข่ายท้องถิ่น |
isLocalNetwork | boolean | ใช้เครือข่ายท้องถิ่นแทนการโรมมิ่ง |
fupPolicy | string | null | ข้อความนโยบายการใช้งานอย่างเป็นธรรม (FUP) |
hotspotEnabled | boolean | null | อนุญาตให้แชร์เน็ต — null = ไม่ทราบ |
hasLocalNumber | boolean | มีหมายเลขโทรศัพท์ท้องถิ่น |
voiceMinutes | integer | null | นาทีโทร — -1 = ไม่จำกัด, null = ไม่มีให้ |
smsCount | integer | null | จำนวน SMS — null = ไม่มีข้อมูล |
supportTopUp | boolean | null | เติมข้อมูลได้ — null = ไม่ทราบ |
supportsUsim | boolean | มีจำหน่ายแบบ USIM การ์ดด้วย |
activationType | string | ประเภทการเปิดใช้งาน (เช่น 'instant') |
หมายเหตุ
การตอบกลับจะไม่มีฟิลด์ผู้จัดหาและต้นทุนเด็ดขาด ฟิลด์จะมีแต่เพิ่มขึ้น โดยชื่อและความหมายไม่เปลี่ยน — โปรดแยกวิเคราะห์โดยละเว้นฟิลด์ที่ไม่รู้จัก
