เอกสาร Partner API
รุ่น v3 — เชื่อมต่อระบบของคุณเข้ากับคลังบริการของเราโดยตรง

Partner API

เชื่อมต่อระบบของคุณเข้ากับทุกสายบริการด้วยคีย์ใบเดียว — ทุกคำขอเป็น POST (form-urlencoded หรือ JSON) คำตอบเป็น JSON เสมอ และแชร์โควตาต่อนาทีร่วมกันทุกสาย

เปิดให้บริการ
POST /socialup/api/v3
การยืนยันตัวตน — ส่งคีย์ทางส่วนหัวของคำขอ (แนะนำ) หรือฟิลด์ key ในเนื้อคำขอ http
1X-Api-Key: adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2
3# หรือ
4Authorization: Bearer adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ห้ามส่งคีย์มาทาง query string — URL ถูกบันทึกใน access log ทุกชั้น คีย์ที่หลุดทางนั้นถือว่าหลุดถาวร ระบบจึงไม่อ่านคีย์จาก query string โดยตั้งใจ
รูปแบบคำตอบ — ตัดสินใจจาก ok และ error.code เท่านั้น (message ไว้ให้คนอ่าน) json
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 ที่เครื่องมือส่วนใหญ่เชื่อมต่อได้ทันที

ตัวอย่างเรียกจริง curl
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รายการบริการและราคา

POST /socialup/api/v3/services

ดึงรายการบริการที่เปิดขายอยู่พร้อมราคาขายจริง ควรดึงมาแคชไว้ฝั่งคุณ ไม่ควรดึงทุกครั้งที่จะสั่งซื้อ

พารามิเตอร์บังคับคำอธิบาย
service ไม่บังคับ ขอเฉพาะบริการเดียวตามรหัสที่ระบุ
category ไม่บังคับ กรองตามชื่อหมวดหมู่ (ต้องตรงทั้งข้อความ)
limit / offset ไม่บังคับ แบ่งหน้า ค่าเริ่มต้นคือคืนทั้งหมด
ตัวอย่างคำตอบ json
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ยอดเงินคงเหลือ

POST /socialup/api/v3/balance

ยอดในกระเป๋าเงินของบัญชีเจ้าของคีย์ อ่านสดจากฐานข้อมูลทุกครั้ง

ตัวอย่างคำตอบ json
1{
2  "ok": true,
3  "data": { "balance": "1250.75", "currency": "THB" },
4  "request_id": "9f2c…"
5}

addสั่งซื้อ

POST /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 ฯลฯ
ตัวอย่างคำตอบ json
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สถานะคำสั่งซื้อ

POST /socialup/api/v3/status

ถามสถานะได้ครั้งละหลายเลข ระบบตอบเฉพาะคำสั่งซื้อที่เป็นของเจ้าของคีย์เท่านั้น เลขที่ไม่ใช่ของคุณจะได้ ORDER_NOT_FOUND เหมือนเลขที่ไม่มีอยู่จริง

พารามิเตอร์บังคับคำอธิบาย
order อย่างใดอย่างหนึ่ง เลขคำสั่งซื้อเดียว
orders อย่างใดอย่างหนึ่ง หลายเลขคั่นด้วยจุลภาค สูงสุด 100 เลขต่อคำขอ
ตัวอย่างคำตอบ json
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ยกเลิกคำสั่งซื้อ

POST /socialup/api/v3/cancel

ส่งคำขอยกเลิกไปยังผู้ให้บริการ ใช้ได้เฉพาะบริการที่ cancel = true และคำสั่งซื้อที่ยังไม่จบ การคืนเงินเข้ากระเป๋าเกิดขึ้นทีหลังโดยระบบติดตามสถานะ ไม่ได้คืนทันทีที่เรียก

พารามิเตอร์บังคับคำอธิบาย
order / orders บังคับ เลขคำสั่งซื้อ สูงสุด 100 เลขต่อคำขอ
ตัวอย่างคำตอบ json
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ขอเติมยอดคืน

POST /socialup/api/v3/refill

ใช้ได้เฉพาะบริการที่ refill = true และคำสั่งซื้อที่สถานะเป็น Completed หรือ Partial แล้วเท่านั้น

พารามิเตอร์บังคับคำอธิบาย
order / orders บังคับ เลขคำสั่งซื้อ สูงสุด 100 เลขต่อคำขอ
ตัวอย่างคำตอบ json
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 นาที) = คืนเงินเต็มอัตโนมัติ

ตัวอย่างเรียกจริง curl
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แพลตฟอร์มที่รองรับ

POST /otp/api/v3/services

รายชื่อบริการที่เช่าเบอร์รับรหัสได้ (facebook, line, shopee, …) เอาค่า service ไปใช้ขั้นถัดไป

พารามิเตอร์บังคับคำอธิบาย
q ไม่บังคับ ค้นหาจากชื่อ
limit / offset ไม่บังคับ แบ่งหน้า (limit สูงสุด 500)
ตัวอย่างคำตอบ json
1{ "ok": true, "data": { "count": 2, "total": 214, "services": [
2    { "service": "fb", "name": "Facebook" },
3    { "service": "ig", "name": "Instagram" } ] }, "request_id": "…" }

countriesราคา + เบอร์ว่างต่อประเทศ

POST /otp/api/v3/countries

ราคาอ่านสดจากผู้ให้บริการ (คิดเป็นราคาขายแล้ว) — ตัวเลขเดียวกับที่จะถูกตัดตอน buy

พารามิเตอร์บังคับคำอธิบาย
service บังคับ รหัสบริการจาก action=services
ตัวอย่างคำตอบ json
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เช่าเบอร์ (ตัดเงิน)

POST /otp/api/v3/buy

ตัดเงินและเช่าเบอร์ทันที เบอร์มีอายุ 20 นาที — เอาเบอร์ไปสมัครแล้ววนถาม status จนได้รหัส ถ้าไม่มีเบอร์ว่างจะได้ PROVIDER_UNAVAILABLE โดยไม่ถูกตัดเงิน

พารามิเตอร์บังคับคำอธิบาย
service บังคับ รหัสบริการ
country บังคับ รหัสประเทศจาก action=countries
ตัวอย่างคำตอบ json
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

POST /otp/api/v3/status

วนถามทุก ~5 วินาทีจนสถานะเป็น completed (ได้ sms_code) หรือ canceled/expired — หมดเวลาแล้วระบบคืนเงินเต็มให้เองอัตโนมัติ ไม่ต้องทำอะไรเพิ่ม

พารามิเตอร์บังคับคำอธิบาย
order บังคับ เลขคำสั่งเช่าจาก buy
ตัวอย่างคำตอบ json
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ยกเลิก + คืนเงินเต็ม

POST /otp/api/v3/cancel

ยกเลิกได้หลังเวลา cancel_available_at (ราว 2 นาทีหลังเช่า) และเฉพาะที่ยังไม่ได้รับรหัส สำเร็จ = คืนเงินเต็มเข้ากระเป๋าทันที

พารามิเตอร์บังคับคำอธิบาย
order บังคับ เลขคำสั่งเช่า
ตัวอย่างคำตอบ json
1{ "ok": true, "data": { "order": "OTP2026…", "refunded": true, "balance": "1000.00" }, "request_id": "…" }

ordersประวัติการเช่า

POST /otp/api/v3/orders

รายการล่าสุดของบัญชีเจ้าของคีย์ (รหัส SMS แสดงเฉพาะรายการที่สำเร็จ)

พารามิเตอร์บังคับคำอธิบาย
limit ไม่บังคับ จำนวนรายการ สูงสุด 200 (ค่าเริ่มต้น 50)
ตัวอย่างคำตอบ json
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

ตัวอย่างเรียกจริง curl
1curl -X POST https://adsproth.com/accounts/api/v3/buy -H "X-Api-Key: adp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
2  -d "product=17" -d "qty=2"

categoriesหมวดสินค้า

POST /accounts/api/v3/categories

หมวดที่เปิดขาย เอาค่า category ไปกรองใน products ได้

ตัวอย่างคำตอบ json
1{ "ok": true, "data": { "count": 1, "categories": [ { "category": 3, "name": "Facebook" } ] }, "request_id": "…" }

productsสินค้า + ราคา + สต็อก

POST /accounts/api/v3/products

สต็อกเปลี่ยนตลอดเวลา ควรเช็คก่อนสั่งเสมอ

พารามิเตอร์บังคับคำอธิบาย
q ไม่บังคับ ค้นหาจากชื่อ/รหัสสินค้า
category ไม่บังคับ กรองตามหมวด
page ไม่บังคับ หน้าที่ต้องการ
ตัวอย่างคำตอบ json
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ซื้อบัญชี (ตัดเงิน)

POST /accounts/api/v3/buy

จ่ายแล้วได้ credential กลับทันทีในคำตอบ — เก็บทันที และเปิดดูซ้ำได้จาก action=order ถ้าต้นทางไม่มีของ ระบบคืนเงินอัตโนมัติ

พารามิเตอร์บังคับคำอธิบาย
product บังคับ รหัสสินค้า
qty ไม่บังคับ จำนวน (ค่าเริ่มต้น 1 — ต้องอยู่ในช่วง min–max)
ตัวอย่างคำตอบ json
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ประวัติออเดอร์

POST /accounts/api/v3/orders

รายการออเดอร์ของบัญชีเจ้าของคีย์ (ตัว credential ดูจาก action=order เป็นราย ๆ)

พารามิเตอร์บังคับคำอธิบาย
q ไม่บังคับ ค้นหาจากชื่อสินค้า/เลขออเดอร์
page ไม่บังคับ หน้าที่ต้องการ
ตัวอย่างคำตอบ json
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 ของออเดอร์เดิม

POST /accounts/api/v3/order

เปิดดูบัญชีที่ซื้อไปแล้วซ้ำได้ตลอด — เห็นเฉพาะออเดอร์ของเจ้าของคีย์เท่านั้น

พารามิเตอร์บังคับคำอธิบาย
order บังคับ เลขออเดอร์
ตัวอย่างคำตอบ json
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 ให้คำนวณยอดเติมได้ทันที

codeHTTPความหมาย
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 ของฉัน