Partner API
เชื่อมต่อระบบของคุณเข้ากับทุกสายบริการด้วยคีย์ใบเดียว — ทุกคำขอเป็น POST (form-urlencoded หรือ JSON) คำตอบเป็น JSON เสมอ และแชร์โควตาต่อนาทีร่วมกันทุกสาย
/socialup/api/v3
1X-Api-Key: adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2
3# หรือ
4Authorization: Bearer adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1// สำเร็จ
2{ "ok": true, "data": { … }, "request_id": "9f2c1a…" }
3
4// ไม่สำเร็จ
5{ "ok": false, "error": { "code": "INVALID_KEY", "message": "API key ไม่ถูกต้อง" }, "request_id": "9f2c1a…" }
เรียกแบบ REST ได้ด้วยการต่อชื่อ action ท้าย URL แทนฟิลด์ action และ action=balance (เช็คยอดเงิน) ใช้ได้กับ endpoint ของทุกสายบริการ
🔑 สร้าง API key — ใบเดียวใช้ได้ทุกสายบริการ
สมาชิกทุกคนสร้างคีย์ได้ฟรี (สูงสุด 5 ใบต่อบัญชี ยกเลิกได้ทีละใบ) — เข้าสู่ระบบก่อนแล้วกลับมาสร้างที่หน้านี้ได้เลย
โควตาการเรียก
ทุกคำตอบแนบส่วนหัว X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset — ใช้หน่วงเองได้โดยไม่ต้องรอโดนปฏิเสธ
| ขอบเขต | โควตา | เมื่อเกิน |
|---|---|---|
| ทุก action รวมกัน (ต่อ 1 คีย์) | 120 ครั้ง / นาที | ตอบ 429 พร้อม RATE_LIMITED และส่วนหัว Retry-After |
| action ที่ตัดเงิน (สั่งซื้อ/ต่ออายุ ทุกสายรวมกัน) | 20 ครั้ง / นาที | |
| ดึงแคตตาล็อกทั้งก้อน (ต่อ 1 คีย์) | 12 ครั้ง / นาที | |
| ยืนยันตัวตนไม่ผ่าน (ต่อ 1 หมายเลขไอพี) | 30 ครั้ง / นาที |
โควตาการสั่งซื้อต่ำกว่าตัวอื่นโดยตั้งใจ — ถ้าระบบฝั่งคุณวนลูปผิดพลาด ความเสียหายถูกจำกัดที่ 20 รายการต่อนาที · แคตตาล็อกควรดึงเก็บแคชไว้ (ข้อมูลเปลี่ยนวันละไม่กี่ครั้ง) เช็คราคาบริการเดียวส่ง service=… มาด้วย จะไม่ติดโควตานี้
เพิ่มยอดโซเชียล
บริการเพิ่มผู้ติดตาม ไลก์ วิว คอมเมนต์ ทุกแพลตฟอร์ม — action ชุดมาตรฐาน SMM ที่เครื่องมือส่วนใหญ่เชื่อมต่อได้ทันที
1curl -X POST https://adsplusth.com/socialup/api/v3 \
2 -H "X-Api-Key: adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
3 -d "action=add" -d "service=12345" \
4 -d "link=https://www.instagram.com/p/abc123" \
5 -d "quantity=1000"
servicesรายการบริการและราคา
/socialup/api/v3/services
ดึงรายการบริการที่เปิดขายอยู่พร้อมราคาขายจริง ควรดึงมาแคชไว้ฝั่งคุณ ไม่ควรดึงทุกครั้งที่จะสั่งซื้อ
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
service |
ไม่บังคับ | ขอเฉพาะบริการเดียวตามรหัสที่ระบุ |
category |
ไม่บังคับ | กรองตามชื่อหมวดหมู่ (ต้องตรงทั้งข้อความ) |
limit / offset |
ไม่บังคับ | แบ่งหน้า ค่าเริ่มต้นคือคืนทั้งหมด |
1{
2 "ok": true,
3 "data": {
4 "count": 6468,
5 "services": [
6 {
7 "service": 12345,
8 "name": "Instagram Followers [ส่งเร็ว]",
9 "category": "Instagram",
10 "type": "default",
11 "rate": "70.00", // ราคาขายต่อ 1,000 หน่วย หน่วยเป็นบาท
12 "currency": "THB",
13 "min": 10,
14 "max": 500000,
15 "dripfeed": true,
16 "refill": true,
17 "cancel": false,
18 "pricing": "quantity", // วิธีคิดเงิน: quantity | lines | package | per_post
19 "fields": ["link", "quantity"] // ฟิลด์ที่ต้องส่งตอน add
20 }
21 ]
22 },
23 "request_id": "9f2c…"
24}
balanceยอดเงินคงเหลือ
/socialup/api/v3/balance
ยอดในกระเป๋าเงินของบัญชีเจ้าของคีย์ อ่านสดจากฐานข้อมูลทุกครั้ง
1{
2 "ok": true,
3 "data": { "balance": "1250.75", "currency": "THB" },
4 "request_id": "9f2c…"
5}
addสั่งซื้อ
/socialup/api/v3/add
สร้างคำสั่งซื้อใหม่ ตัดเงินจากกระเป๋าทันทีที่สำเร็จ ฟิลด์ที่ต้องส่งขึ้นกับชนิดบริการ — ดูได้จากช่อง fields ที่ services ส่งกลับมา
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
service |
บังคับ | รหัสบริการ |
link |
ตามชนิดบริการ | ลิงก์โพสต์/โปรไฟล์ ต้องขึ้นต้นด้วย http:// หรือ https:// |
quantity |
ตามชนิดบริการ | จำนวนที่ต้องการ (ต้องอยู่ในช่วง min–max ของบริการ) |
comments |
ตามชนิดบริการ | คอมเมนต์บรรทัดละ 1 ข้อความ — จำนวนบรรทัดคือจำนวนที่คิดเงิน |
runs / interval |
ไม่บังคับ | โหมดทยอยส่ง ใช้ได้เฉพาะบริการที่ dripfeed = true (ยอดที่ตัด = quantity × runs) |
username, min, max, posts … |
ตามชนิดบริการ | ฟิลด์เฉพาะของชนิด subscriptions / poll / seo ฯลฯ |
1{
2 "ok": true,
3 "data": {
4 "order": 987654,
5 "service": 12345,
6 "quantity": 1000,
7 "charge": "70.00",
8 "currency": "THB",
9 "balance": "1180.75"
10 },
11 "request_id": "9f2c…"
12}
statusสถานะคำสั่งซื้อ
/socialup/api/v3/status
ถามสถานะได้ครั้งละหลายเลข ระบบตอบเฉพาะคำสั่งซื้อที่เป็นของเจ้าของคีย์เท่านั้น เลขที่ไม่ใช่ของคุณจะได้ ORDER_NOT_FOUND เหมือนเลขที่ไม่มีอยู่จริง
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
order |
อย่างใดอย่างหนึ่ง | เลขคำสั่งซื้อเดียว |
orders |
อย่างใดอย่างหนึ่ง | หลายเลขคั่นด้วยจุลภาค สูงสุด 100 เลขต่อคำขอ |
1{
2 "ok": true,
3 "data": {
4 "orders": [
5 {
6 "order": 987654,
7 "service": 12345,
8 "status": "In progress", // Pending|Processing|In progress|Completed|Partial|Canceled|Refunded
9 "status_th": "กำลังดำเนินการ",
10 "charge": "70.00",
11 "currency": "THB",
12 "quantity": 1000,
13 "start_count": "5230",
14 "remains": "420",
15 "refunded": "0.00",
16 "created_at": "2026-07-22 10:15:03"
17 },
18 { "order": 111, "error": "ORDER_NOT_FOUND" }
19 ]
20 },
21 "request_id": "9f2c…"
22}
cancelยกเลิกคำสั่งซื้อ
/socialup/api/v3/cancel
ส่งคำขอยกเลิกไปยังผู้ให้บริการ ใช้ได้เฉพาะบริการที่ cancel = true และคำสั่งซื้อที่ยังไม่จบ การคืนเงินเข้ากระเป๋าเกิดขึ้นทีหลังโดยระบบติดตามสถานะ ไม่ได้คืนทันทีที่เรียก
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
order / orders |
บังคับ | เลขคำสั่งซื้อ สูงสุด 100 เลขต่อคำขอ |
1{
2 "ok": true,
3 "data": {
4 "orders": [
5 { "order": 987654, "accepted": true },
6 { "order": 987655, "error": "NOT_SUPPORTED", "message": "บริการนี้ไม่รองรับการยกเลิก" }
7 ],
8 "dry_run": false
9 },
10 "request_id": "9f2c…"
11}
refillขอเติมยอดคืน
/socialup/api/v3/refill
ใช้ได้เฉพาะบริการที่ refill = true และคำสั่งซื้อที่สถานะเป็น Completed หรือ Partial แล้วเท่านั้น
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
order / orders |
บังคับ | เลขคำสั่งซื้อ สูงสุด 100 เลขต่อคำขอ |
1{
2 "ok": true,
3 "data": {
4 "orders": [ { "order": 987654, "accepted": true, "refill": 55231 } ],
5 "dry_run": false
6 },
7 "request_id": "9f2c…"
8}
เช่าเบอร์รับ SMS (OTP)
เช่าเบอร์ชั่วคราวเพื่อรับรหัส SMS — ลำดับใช้งาน: services เลือกแพลตฟอร์ม → countries ดูราคา/เบอร์ว่าง → buy เช่า → วนถาม status จนได้ sms_code · ยกเลิกได้หลังเวลาที่กำหนด และหมดเวลา (20 นาที) = คืนเงินเต็มอัตโนมัติ
1# 1) เช่าเบอร์
2curl -X POST https://adsplusth.com/otp/api/v3/buy -H "X-Api-Key: adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
3 -d "service=fb" -d "country=52"
4
5# 2) วนถามจนได้รหัส (ทุก ~5 วินาที)
6curl -X POST https://adsplusth.com/otp/api/v3/status -H "X-Api-Key: adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -d "order=OTP2026…"
servicesแพลตฟอร์มที่รองรับ
/otp/api/v3/services
รายชื่อบริการที่เช่าเบอร์รับรหัสได้ (facebook, line, shopee, …) เอาค่า service ไปใช้ขั้นถัดไป
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
q |
ไม่บังคับ | ค้นหาจากชื่อ |
limit / offset |
ไม่บังคับ | แบ่งหน้า (limit สูงสุด 500) |
1{ "ok": true, "data": { "count": 2, "total": 214, "services": [
2 { "service": "fb", "name": "Facebook" },
3 { "service": "ig", "name": "Instagram" } ] }, "request_id": "…" }
countriesราคา + เบอร์ว่างต่อประเทศ
/otp/api/v3/countries
ราคาอ่านสดจากผู้ให้บริการ (คิดเป็นราคาขายแล้ว) — ตัวเลขเดียวกับที่จะถูกตัดตอน buy
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
service |
บังคับ | รหัสบริการจาก action=services |
1{ "ok": true, "data": { "service": "fb", "count": 1, "countries": [
2 { "country": 52, "name": "Thailand", "iso": "th",
3 "price": "24.00", "currency": "THB", "qty": 1543 } ] }, "request_id": "…" }
tiersชั้นราคาของบริการ+ประเทศ
/otp/api/v3/tiers
ราคาสดหลายชั้นของบริการในประเทศหนึ่ง — ชั้นแพงขึ้นมักได้เบอร์เร็วกว่า เอาค่า tier ไปส่งใน buy (ไม่ส่ง = ชั้นถูกสุด)
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
service |
บังคับ | รหัสบริการจาก action=services |
country |
บังคับ | รหัสประเทศ (จาก countries) |
1{ "ok": true, "data": { "service": "fb", "country": 52, "count": 2, "tiers": [
2 { "tier": "0.1000", "price": "8.00", "currency": "THB", "qty": 412 },
3 { "tier": "0.2500", "price": "18.00", "currency": "THB", "qty": 1130 } ] }, "request_id": "…" }
buyเช่าเบอร์ (ตัดเงิน)
/otp/api/v3/buy
ตัดเงินและเช่าเบอร์ทันที เบอร์มีอายุ 20 นาที — เอาเบอร์ไปสมัครแล้ววนถาม status จนได้รหัส ถ้าไม่มีเบอร์ว่างจะได้ PROVIDER_UNAVAILABLE โดยไม่ถูกตัดเงิน
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
service |
บังคับ | รหัสบริการ |
country |
บังคับ | รหัสประเทศจาก action=countries |
1{ "ok": true, "data": {
2 "order": "OTP20260730123456ABC123",
3 "phone": "66812345678",
4 "charge": "24.00", "currency": "THB",
5 "expired_at": "2026-07-30 12:54:56",
6 "cancel_available_at": "2026-07-30 12:36:56",
7 "balance": "976.00" }, "request_id": "…" }
statusสถานะ + รหัส SMS
/otp/api/v3/status
วนถามทุก ~5 วินาทีจนสถานะเป็น completed (ได้ sms_code) หรือ canceled/expired — หมดเวลาแล้วระบบคืนเงินเต็มให้เองอัตโนมัติ ไม่ต้องทำอะไรเพิ่ม
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
order |
บังคับ | เลขคำสั่งเช่าจาก buy |
1{ "ok": true, "data": {
2 "order": "OTP20260730123456ABC123",
3 "status": "completed", // waiting | completed | canceled | expired
4 "sms_code": "382914", // null จนกว่าจะได้รหัส
5 "phone": "66812345678",
6 "expired_at": "2026-07-30 12:54:56",
7 "cancel_available_at": "2026-07-30 12:36:56",
8 "can_cancel": false,
9 "refunded": false }, "request_id": "…" }
cancelยกเลิก + คืนเงินเต็ม
/otp/api/v3/cancel
ยกเลิกได้หลังเวลา cancel_available_at (ราว 2 นาทีหลังเช่า) และเฉพาะที่ยังไม่ได้รับรหัส สำเร็จ = คืนเงินเต็มเข้ากระเป๋าทันที
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
order |
บังคับ | เลขคำสั่งเช่า |
1{ "ok": true, "data": { "order": "OTP2026…", "refunded": true, "balance": "1000.00" }, "request_id": "…" }
ordersประวัติการเช่า
/otp/api/v3/orders
รายการล่าสุดของบัญชีเจ้าของคีย์ (รหัส SMS แสดงเฉพาะรายการที่สำเร็จ)
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
limit |
ไม่บังคับ | จำนวนรายการ สูงสุด 200 (ค่าเริ่มต้น 50) |
1{ "ok": true, "data": { "count": 1, "orders": [
2 { "order": "OTP2026…", "service": "fb", "name": "Facebook", "country": "Thailand",
3 "phone": "66812345678", "status": "completed", "sms_code": "382914",
4 "charge": "24.00", "currency": "THB", "refunded": false,
5 "created_at": "2026-07-30 12:34:56" } ] }, "request_id": "…" }
ขายบัญชีโซเชียล
ซื้อบัญชีโซเชียลสำเร็จรูป — จ่ายแล้วได้ credential กลับทันทีในคำตอบของ buy และเปิดดูซ้ำได้ตลอดจาก order
1curl -X POST https://adsplusth.com/accounts/api/v3/buy -H "X-Api-Key: adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
2 -d "product=17" -d "qty=2"
categoriesหมวดสินค้า
/accounts/api/v3/categories
หมวดที่เปิดขาย เอาค่า category ไปกรองใน products ได้
1{ "ok": true, "data": { "count": 1, "categories": [ { "category": 3, "name": "Facebook" } ] }, "request_id": "…" }
productsสินค้า + ราคา + สต็อก
/accounts/api/v3/products
สต็อกเปลี่ยนตลอดเวลา ควรเช็คก่อนสั่งเสมอ
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
q |
ไม่บังคับ | ค้นหาจากชื่อ/รหัสสินค้า |
category |
ไม่บังคับ | กรองตามหมวด |
page |
ไม่บังคับ | หน้าที่ต้องการ |
1{ "ok": true, "data": { "count": 1, "total": 42, "page": 1, "pages": 2, "products": [
2 { "product": 17, "name": "Facebook อายุ 1 ปี+", "category": "Facebook",
3 "price": "35.00", "currency": "THB", "stock": 120, "min": 1, "max": 50 } ] }, "request_id": "…" }
buyซื้อบัญชี (ตัดเงิน)
/accounts/api/v3/buy
จ่ายแล้วได้ credential กลับในคำตอบ — เก็บทันที และเปิดดูซ้ำได้จาก action=order | ดู status เสมอ: success = ได้ของแล้ว (count อาจน้อยกว่า quantity ถ้าต้นทางส่งไม่ครบ ส่วนที่ขาดคืนเงินแล้วตาม refunded) | pending = ตัดเงินแล้ว รอต้นทางส่งมอบ ห้ามสั่งซ้ำ ให้เรียก action=order จนเป็น success หรือ refund (คืนเงินเต็ม) | ถ้าต้นทางปฏิเสธ ระบบไม่ตัดเงิน
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
product |
บังคับ | รหัสสินค้า |
qty |
ไม่บังคับ | จำนวน (ค่าเริ่มต้น 1 — ต้องอยู่ในช่วง min–max) |
1{ "ok": true, "data": {
2 "order": 5011, "status": "success", "quantity": 2, "count": 2,
3 "charge": "70.00", "refunded": "0.00", "currency": "THB",
4 "accounts": [ "[email protected]:pass1:token…", "[email protected]:pass2:token…" ],
5 "balance": "930.00", "message": "" }, "request_id": "…" }
ordersประวัติออเดอร์
/accounts/api/v3/orders
รายการออเดอร์ของบัญชีเจ้าของคีย์ (ตัว credential ดูจาก action=order เป็นราย ๆ)
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
q |
ไม่บังคับ | ค้นหาจากชื่อสินค้า/เลขออเดอร์ |
page |
ไม่บังคับ | หน้าที่ต้องการ |
1{ "ok": true, "data": { "count": 1, "total": 8, "page": 1, "pages": 1, "orders": [
2 { "order": 5011, "product": 17, "name": "Facebook อายุ 1 ปี+", "quantity": 2,
3 "charge": "70.00", "currency": "THB", "status": "completed",
4 "accounts": 2, "created_at": "2026-07-30 12:00:00" } ] }, "request_id": "…" }
orderดู credential ของออเดอร์เดิม
/accounts/api/v3/order
เปิดดูบัญชีที่ซื้อไปแล้วซ้ำได้ตลอด — เห็นเฉพาะออเดอร์ของเจ้าของคีย์เท่านั้น
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
order |
บังคับ | เลขออเดอร์ |
1{ "ok": true, "data": {
2 "order": 5011, "name": "Facebook อายุ 1 ปี+", "quantity": 2,
3 "charge": "70.00", "currency": "THB", "status": "completed",
4 "accounts": [ "[email protected]:pass1:token…" ],
5 "created_at": "2026-07-30 12:00:00" }, "request_id": "…" }
พร็อกซี
ซื้อ/ต่ออายุ static proxy — ไล่แคตตาล็อกตามลำดับ types → countries → shops → packages แล้ว buy จะได้ออเดอร์สถานะ pending ระบบจัด IP ให้ภายในไม่กี่นาที ตามผลและอ่าน credential ได้จาก action=order
1curl -X POST https://adsplusth.com/proxy/api/v3/buy -H "X-Api-Key: adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
2 -d "package=120" -d "qty=1"
typesประเภทพร็อกซี
/proxy/api/v3/types
เอาค่า type ไปใช้กับ countries / shops / packages
1{ "ok": true, "data": { "count": 2, "types": [
2 { "type": 1, "name": "Static ISP Residential", "name_th": "ISP บ้านแบบคงที่" },
3 { "type": 2, "name": "Static IPv4", "name_th": "IPv4 แบบคงที่" } ] }, "request_id": "…" }
countriesประเทศ + เกรด IP
/proxy/api/v3/countries
ประเทศที่มีขายของประเภทนั้น พร้อมฟิลด์ qualities (เกรด IP) ไว้ใช้กับ shops / packages
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
type |
บังคับ | รหัสประเภทจาก action=types |
1{ "ok": true, "data": { "type": 1, "count": 1, "countries": [
2 { "country": "US", "name": "United States", "name_th": "สหรัฐอเมริกา",
3 "qualities": ["ordinary", "premium"] } ] }, "request_id": "…" }
shopsผู้ให้บริการ
/proxy/api/v3/shops
ผู้ให้บริการที่มีของใน ประเภท+ประเทศ+เกรด นั้น — เอาค่า shop ไปกรอง packages ได้
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
type |
บังคับ | รหัสประเภทจาก action=types |
country |
บังคับ | รหัสประเทศจาก action=countries |
quality |
ไม่บังคับ | เกรด IP จากฟิลด์ qualities ของ action=countries เช่น ordinary, premium |
1{ "ok": true, "data": { "count": 1, "shops": [ { "shop": 7, "name": "Provider A" } ] }, "request_id": "…" }
packagesแพ็กเกจ + ราคา
/proxy/api/v3/packages
price คือยอดที่ถูกตัดจริงต่อ 1 IP ต่อ 1 รอบระยะเวลา — renew_price เป็นราคาต่ออายุโดยประมาณ ยอดจริงคิดสดตอน renew
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
type |
บังคับ | รหัสประเภทจาก action=types |
country |
บังคับ | รหัสประเทศจาก action=countries |
quality |
ไม่บังคับ | กรองตามเกรด IP (ไม่ระบุ = ทุกเกรด) |
shop |
ไม่บังคับ | กรองตามผู้ให้บริการ (รหัสจาก action=shops — ไม่ระบุ = ทุกราย) |
1{ "ok": true, "data": { "count": 1, "packages": [
2 { "package": 120, "name": "ISP 30 วัน", "shop": "Provider A", "country": "US",
3 "quality": "ordinary", "duration_days": 30, "price": "175.00",
4 "renew_price": "160.00", "currency": "THB" } ] }, "request_id": "…" }
catalogแคตตาล็อกทั้งหมดในคำขอเดียว
/proxy/api/v3/catalog
ประเภท/ประเทศ/ผู้ให้บริการ/แพ็กเกจที่เปิดขายทั้งหมด พร้อมราคาของคุณ — เหมาะกับการซิงก์ทั้งร้าน (ไม่ต้องไล่ types → countries → shops → packages) · ใช้โควตากลุ่มดึงแคตตาล็อก
1{ "ok": true, "data": { "currency": "THB",
2 "types": [ { "type": 1, "name": "Static ISP Residential", "name_th": "ISP บ้านแบบคงที่",
3 "subtitle_th": "…", "subtitle_en": "…", "platforms": "…", "family": "static", "has_udp": true, "sort": 1 } ],
4 "countries": [ { "type": 1, "country": "US", "name": "United States", "name_th": "สหรัฐอเมริกา", "sort": 0 } ],
5 "shops": [ { "shop": 7, "type": 1, "country": "US", "name": "Provider A" } ],
6 "packages": [ { "package": 120, "type": 1, "shop": 7, "country": "US", "quality": "ordinary",
7 "name": "ISP 30 days", "name_th": "ISP 30 วัน", "duration_minutes": 43200,
8 "price": 175, "renew_price": 160, "auto_renew": true, "sort": 0 } ] }, "request_id": "…" }
buyซื้อแพ็กเกจ (ตัดเงิน)
/proxy/api/v3/buy
ตัดเงินแล้วเปิดออเดอร์สถานะ pending — ระบบจัด IP ให้ภายในราว 1-5 นาที วนถาม action=order จน status เป็น active แล้วอ่าน credential จากฟิลด์ ips ถ้าจัดของไม่สำเร็จ ระบบคืนเงินอัตโนมัติ
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
package |
บังคับ | รหัสแพ็กเกจจาก action=packages |
qty |
ไม่บังคับ | จำนวน IP (ค่าเริ่มต้น 1, สูงสุด 20) |
client_order_id |
ไม่บังคับ | รหัสอ้างอิงของคุณ (A-Z a-z 0-9 . _ : - ไม่เกิน 128 ตัว) — ส่งซ้ำรหัสเดิม = ได้ผลเดิม (replayed: true) ไม่ทำรายการ/ไม่ตัดเงินซ้ำ · รหัสเดิมกับรายการอื่น = DUPLICATE_ORDER |
1{ "ok": true, "data": { "order_id": 31, "status": "pending",
2 "total": "175.00", "currency": "THB", "balance": "825.00" }, "request_id": "…" }
renewต่ออายุราย IP (ตัดเงิน)
/proxy/api/v3/renew
ต่ออายุ IP เดิมของบัญชีเจ้าของคีย์ — ยอดคิดสดฝั่งเซิร์ฟเวอร์ตอนสั่ง วันหมดอายุใหม่อยู่ในคำตอบ
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
ip_id |
บังคับ | รหัส IP จาก action=mine |
client_order_id |
ไม่บังคับ | รหัสอ้างอิงของคุณ (A-Z a-z 0-9 . _ : - ไม่เกิน 128 ตัว) — ส่งซ้ำรหัสเดิม = ได้ผลเดิม (replayed: true) ไม่ทำรายการ/ไม่ตัดเงินซ้ำ · รหัสเดิมกับรายการอื่น = DUPLICATE_ORDER |
1{ "ok": true, "data": { "order_id": 32, "ip_id": 9, "expire_at": "2026-10-04 09:00:00",
2 "total": "160.00", "currency": "THB", "balance": "665.00" }, "request_id": "…" }
autorenewเปิด/ปิดต่ออายุอัตโนมัติ
/proxy/api/v3/autorenew
เปิด/ปิดการต่ออายุอัตโนมัติของ IP หนึ่ง (ระบบตัดเงินกระเป๋าแล้วต่อให้ก่อนหมดอายุ) — ไม่แตะเงินตอนตั้งค่า
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
ip_id |
บังคับ | รหัส IP จาก action=mine |
on |
บังคับ | 1 = เปิด, 0 = ปิด |
1{ "ok": true, "data": { "ip_id": 9, "auto_renew": true }, "request_id": "…" }
labelตั้งชื่อกำกับ IP
/proxy/api/v3/label
ตั้งหรือล้างชื่อกำกับของ IP (ไว้จำว่าใช้กับงานไหน) — เว้นว่าง = ล้าง
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
ip_id |
บังคับ | รหัส IP จาก action=mine |
label |
ไม่บังคับ | ชื่อกำกับ ไม่เกิน 120 ตัวอักษร |
1{ "ok": true, "data": { "ip_id": 9, "label": "ร้าน A — แอดโฆษณา" }, "request_id": "…" }
ordersประวัติออเดอร์
/proxy/api/v3/orders
ออเดอร์ซื้อ/ต่ออายุของบัญชีเจ้าของคีย์ (credential ดูจาก action=order หรือ action=mine)
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
page |
ไม่บังคับ | หน้าที่ต้องการ |
limit |
ไม่บังคับ | จำนวนรายการต่อหน้า สูงสุด 200 (ค่าเริ่มต้น 50) |
1{ "ok": true, "data": { "count": 1, "total": 1, "page": 1, "pages": 1, "orders": [
2 { "order_id": 31, "type": "new", "package": 120, "name": "ISP 30 วัน", "shop": "Provider A",
3 "country": "US", "quality": "ordinary", "quantity": 1, "duration_days": 30,
4 "total": "175.00", "currency": "THB", "status": "active", "refunded": false,
5 "created_at": "2026-08-05 09:00:00" } ] }, "request_id": "…" }
orderออเดอร์เดียว + credential
/proxy/api/v3/order
เปิดดู IP และ user/pass ของออเดอร์ตัวเองซ้ำได้ตลอด — ออเดอร์ต่ออายุไม่มีแถว ips ใหม่ (IP เดิมดูจาก action=mine)
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
order |
บังคับ | เลขออเดอร์ |
1{ "ok": true, "data": { "order_id": 31, "type": "new", "package": 120,
2 "name": "ISP 30 วัน", "shop": "Provider A", "country": "US", "quality": "ordinary",
3 "quantity": 1, "duration_days": 30, "total": "175.00", "currency": "THB",
4 "status": "active", "refunded": false, "fulfilled_at": "2026-08-05 09:02:11",
5 "created_at": "2026-08-05 09:00:00", "ips": [
6 { "ip_id": 9, "ip": "203.0.113.10", "port": 20001, "http_port": 30001,
7 "username": "u9x…", "password": "p9x…", "country": "US", "quality": "ordinary",
8 "label": "", "expire_at": "2026-09-04 09:00:00", "auto_renew": false,
9 "status": "active" } ] }, "request_id": "…" }
mineIP ของฉัน
/proxy/api/v3/mine
IP ทั้งหมดที่ถืออยู่พร้อม credential และวันหมดอายุ — เอาค่า ip_id ไปต่ออายุด้วย action=renew
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
page |
ไม่บังคับ | หน้าที่ต้องการ |
limit |
ไม่บังคับ | จำนวนรายการต่อหน้า สูงสุด 200 (ค่าเริ่มต้น 50) |
1{ "ok": true, "data": { "count": 1, "total": 1, "page": 1, "pages": 1, "ips": [
2 { "ip_id": 9, "ip": "203.0.113.10", "port": 20001, "http_port": 30001,
3 "username": "u9x…", "password": "p9x…", "country": "US", "quality": "ordinary",
4 "label": "งานร้าน A", "expire_at": "2026-09-04 09:00:00", "auto_renew": false,
5 "status": "active", "order_id": 31 } ] }, "request_id": "…" }
รหัสข้อผิดพลาด
รายการนี้สร้างจากค่าคงที่ในโค้ดโดยตรง จึงตรงกับพฤติกรรมจริงเสมอ — VALIDATION_ERROR แนบ error.fields รายฟิลด์ · INSUFFICIENT_FUNDS แนบ charge / balance / short ให้คำนวณยอดเติมได้ทันที
| code | HTTP | ความหมาย |
|---|---|---|
METHOD_NOT_ALLOWED |
405 | ต้องเรียกด้วยวิธี POST เท่านั้น |
INVALID_BODY |
400 | อ่านเนื้อคำขอไม่ได้ (ต้องเป็น form-urlencoded หรือ JSON) |
MISSING_KEY |
401 | ไม่ได้ส่ง API key มา |
INVALID_KEY |
401 | API key ไม่ถูกต้อง |
KEY_REVOKED |
401 | API key ถูกยกเลิกแล้ว |
KEY_EXPIRED |
401 | API key หมดอายุแล้ว |
ACCOUNT_BLOCKED |
403 | บัญชีถูกระงับการใช้งาน |
API_DISABLED |
503 | ระบบ API ปิดให้บริการชั่วคราว |
UNKNOWN_ACTION |
404 | ไม่รู้จัก action นี้ |
RATE_LIMITED |
429 | เรียกถี่เกินกำหนด กรุณารอแล้วลองใหม่ |
VALIDATION_ERROR |
422 | ข้อมูลที่ส่งมาไม่ถูกต้อง |
SERVICE_NOT_FOUND |
404 | ไม่พบบริการนี้ หรือบริการถูกปิดไปแล้ว |
INSUFFICIENT_FUNDS |
402 | ยอดเงินในกระเป๋าไม่พอ |
DUPLICATE_ORDER |
409 | รายการนี้เพิ่งถูกสั่งไปแล้ว ระบบไม่ได้สั่งซ้ำให้ |
ORDER_NOT_FOUND |
404 | ไม่พบคำสั่งซื้อนี้ในบัญชีของคุณ |
TOO_MANY_IDS |
400 | ส่งเลขคำสั่งซื้อมามากเกินกำหนดต่อหนึ่งคำขอ |
NOT_SUPPORTED |
400 | บริการนี้ไม่รองรับคำสั่งดังกล่าว |
ORDER_DISABLED |
503 | ระบบสั่งซื้อปิดอยู่ชั่วคราว |
FEATURE_DISABLED |
503 | ระบบยกเลิก/ขอเติมยอดยังไม่เปิดใช้งาน |
PROVIDER_ERROR |
502 | ผู้ให้บริการปฏิเสธคำขอ |
PROVIDER_UNAVAILABLE |
503 | ติดต่อผู้ให้บริการไม่ได้ชั่วคราว |
INTERNAL |
500 | ระบบขัดข้อง กรุณาลองใหม่หรือแจ้งแอดมิน |
กติกาที่ต้องรู้ก่อนเชื่อมต่อ
- กันสั่งซ้ำอัตโนมัติ — รายการเหมือนกันทุกอย่างภายใน 60 วินาที ได้
DUPLICATE_ORDERไม่ถูกตัดเงินซ้ำ - สั่งไม่สำเร็จ = คืนเงินอัตโนมัติ — ตัดเงินแล้วผู้ให้บริการปฏิเสธ ระบบคืนเข้ากระเป๋าพร้อมบันทึกประวัติ
- คีย์มีได้สูงสุด 5 ใบต่อบัญชี — ใช้คีย์คนละใบต่อระบบที่เชื่อมต่อ เวลาหลุดปิดเฉพาะใบนั้นได้
- ระบบเก็บแค่ลายนิ้วมือของคีย์ — ทำหายกู้คืนไม่ได้ ต้องยกเลิกแล้วสร้างใหม่
- ทุกคำขอถูกบันทึก ทั้งสำเร็จและถูกปฏิเสธ — ดูย้อนหลังที่หน้า API key ของฉัน