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://adsproth.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://adsproth.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://adsproth.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": "…" }
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://adsproth.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 ถ้าต้นทางไม่มีของ ระบบคืนเงินอัตโนมัติ
| พารามิเตอร์ | บังคับ | คำอธิบาย |
|---|---|---|
product |
บังคับ | รหัสสินค้า |
qty |
ไม่บังคับ | จำนวน (ค่าเริ่มต้น 1 — ต้องอยู่ในช่วง min–max) |
1{ "ok": true, "data": {
2 "order": 5011, "count": 2, "charge": "70.00", "currency": "THB",
3 "accounts": [ "[email protected]:pass1:token…", "[email protected]:pass2:token…" ],
4 "balance": "930.00" }, "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": "…" }
รหัสข้อผิดพลาด
รายการนี้สร้างจากค่าคงที่ในโค้ดโดยตรง จึงตรงกับพฤติกรรมจริงเสมอ —
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 ของฉัน