เอกสารประกอบ API
คู่มือเชื่อมต่อแบบ Server-to-server สำหรับดึงบริการ สร้างคำสั่งซื้อ ตรวจสถานะ และตรวจยอดคงเหลือ โดยข้อมูลด้านล่างอ้างอิงจาก Controller และ Model ที่ใช้งานจริงใน Source ชุดนี้
- Endpoint
https://loveliketh.com/api/v1- Method
- POST
- Request
- Form URL encoded หรือ JSON
- Response
- application/json; UTF-8
- Rate limit
- 120 requests / 60 seconds
- Version
- Header:
X-API-Version: 1
Quick start
อย่าฝัง API key ใน JavaScript ฝั่ง Browser, Mobile app หรือ Repository สาธารณะ ระบบไม่ได้เปิด CORS สำหรับการนำ Secret ไปใช้ใน Frontend
curl --request POST 'https://loveliketh.com/api/v1' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'key=YOUR_API_KEY' \
--data-urlencode 'action=services'
<?php
$endpoint = 'https://loveliketh.com/api/v1';
$payload = http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'services',
]);
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
$data = json_decode($response, true, 512, JSON_THROW_ON_ERROR);
const response = await fetch('https://loveliketh.com/api/v1', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
key: process.env.LOVELIKETH_API_KEY,
action: 'services'
})
});
const data = await response.json();
if (!response.ok) {
throw new Error(`${data.code}: ${data.error}`);
}
Authentication และ Request format
ส่ง key และ action ใน Request body ทุกครั้ง ระบบไม่อ่านค่าจาก Cookie และไม่รับ GET เพื่อป้องกัน API key ปรากฏใน URL, Browser history และ Access log
สร้างหรือ Regenerate ได้จากหน้า Profile การ Regenerate จะทำให้ Key เดิมใช้ไม่ได้ทันที และบัญชี/API ต้องอยู่ในสถานะ Active
ทุก Response มี Header X-Request-ID ใช้อ้างอิงเมื่อแจ้งปัญหาโดยไม่ต้องส่ง API key
ตรวจ Header X-RateLimit-Limit, X-RateLimit-Remaining และ X-RateLimit-Reset
คำสั่ง add รองรับ Header Idempotency-Key หรือพารามิเตอร์ idempotency_key
Services list
คืนเฉพาะ Service และ Category ที่ Active พร้อมราคาสำหรับระดับสมาชิกของเจ้าของ API key
ค่า refill และ cancel บอกคุณสมบัติของ Service/Order แต่ Source ชุดนี้ยังไม่มี Client API action สำหรับ Refill หรือ Cancel ที่ใช้งานได้จริง
| Parameter | Required | Value |
|---|---|---|
key | Yes | YOUR_API_KEY |
action | Yes | services |
ตัวอย่าง Response
[
{
"service": "5",
"name": "Instagram Followers",
"category": "Instagram",
"rate": "1.02",
"min": "100",
"max": "10000",
"type": "default",
"desc": "usernames",
"dripfeed": "1",
"refill": "1",
"cancel": "0"
}
]Add order
ตรวจค่า type จาก Services response แล้วส่งพารามิเตอร์ตามชนิดบริการ ระบบตรวจ Category/Service Active, Min/Max, Duplicate link, Balance และบันทึก Order กับการหัก Balance ใน Transaction เดียวกัน
พารามิเตอร์ร่วม
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | required | API key จากหน้า Profile |
action | string | required | ค่าเป็น add |
service | integer | required | Service ID จาก action=services |
link | string | required* | ลิงก์เป้าหมาย; ไม่ใช้กับ subscriptions |
idempotency_key | string | recommended | คีย์ 8-64 ตัว ป้องกันการสร้าง Order ซ้ำเมื่อ Retry |
Default
บริการทั่วไปที่ใช้จำนวน (quantity)
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity | integer | required | จำนวนต่อคำสั่งซื้อ |
runs | integer | optional | จำนวนรอบ Drip-feed; ใช้เฉพาะบริการที่รองรับ |
interval | integer | optional | ช่วงห่างแต่ละรอบเป็นนาที 1-1440 |
Package
แพ็กเกจราคาคงที่ ไม่ต้องส่ง quantity
ไม่มีพารามิเตอร์เฉพาะเพิ่มเติม ใช้เฉพาะพารามิเตอร์ร่วมด้านบน
Custom comments
หนึ่งบรรทัดนับเป็นหนึ่งคอมเมนต์
| Parameter | Type | Required | Description |
|---|---|---|---|
comments | string | required | รายการคอมเมนต์คั่นด้วยบรรทัดใหม่ |
Custom comments package
แพ็กเกจคอมเมนต์ราคาคงที่
| Parameter | Type | Required | Description |
|---|---|---|---|
comments | string | required | รายการคอมเมนต์คั่นด้วยบรรทัดใหม่ |
Mentions with hashtags
Mentions จากรายการผู้ใช้และ Hashtag
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity | integer | required | จำนวนที่ต้องการ |
usernames | string | required | รายการ Username คั่นด้วยบรรทัดใหม่ |
hashtags | string | required | รายการ Hashtag คั่นด้วยบรรทัดใหม่ |
Mentions custom list
จำนวนจะคำนวณจากรายการ Username
| Parameter | Type | Required | Description |
|---|---|---|---|
usernames | string | required | รายการ Username คั่นด้วยบรรทัดใหม่ |
Mentions hashtag
Mentions จาก Hashtag เดียว
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity | integer | required | จำนวนที่ต้องการ |
hashtag | string | required | Hashtag เป้าหมาย |
Mentions user followers
Mentions จากผู้ติดตามของ Username
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity | integer | required | จำนวนที่ต้องการ |
username | string | required | Username เป้าหมาย |
Mentions media likers
Mentions จากผู้กดถูกใจ Media URL
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity | integer | required | จำนวนที่ต้องการ |
media_url | URL | required | URL ของโพสต์หรือ Media |
Comment likes
เพิ่ม Like ให้คอมเมนต์ของ Username
| Parameter | Type | Required | Description |
|---|---|---|---|
quantity | integer | required | จำนวนที่ต้องการ |
username | string | required | Username เจ้าของคอมเมนต์ |
Subscriptions
สร้าง Subscription สำหรับโพสต์ใหม่ในอนาคต
| Parameter | Type | Required | Description |
|---|---|---|---|
username | string | required | Username เป้าหมาย |
posts | integer | required | จำนวนโพสต์ใหม่ที่ต้องการติดตาม |
quantity | integer | required | จำนวนคงที่ต่อหนึ่งโพสต์ |
delay | integer | optional | 0, 5, 10, 15, 30, 60 หรือ 90 นาที |
expiry | date | optional | วันหมดอายุรูปแบบ YYYY-MM-DD |
ตัวอย่างสร้าง Order
curl --request POST 'https://loveliketh.com/api/v1' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: checkout-order-20260804-001' \
--data '{
"key": "YOUR_API_KEY",
"action": "add",
"service": 5,
"link": "https://example.com/post/123",
"quantity": 1000
}'{
"status": "success",
"order": 12345
}Order status
หนึ่ง Order
key | YOUR_API_KEY |
|---|---|
action | status |
order | Order ID |
หลาย Order
key | YOUR_API_KEY |
|---|---|
action | status |
orders | คั่นด้วย comma สูงสุด 100 ID |
ตัวอย่าง Response
{
"order": 12345,
"status": "Processing",
"charge": "0.0360",
"start_count": "0",
"remains": "500",
"currency": "THB"
}Balance
key | YOUR_API_KEY |
|---|---|
action | balance |
{
"status": "success",
"balance": "100.50",
"currency": "THB"
}Errors และ HTTP status
Error response มี error, code และ request_id เสมอ ควรตรวจ HTTP status ก่อนอ่านข้อมูล
{
"error": "Not enough funds on balance",
"code": "insufficient_balance",
"request_id": "9f2a4e8d1c6b7a30"
}| HTTP | Code | Meaning |
|---|---|---|
| 400 | invalid_request | พารามิเตอร์ขาดหรือรูปแบบไม่ถูกต้อง |
| 401 | invalid_api_key | API key ไม่ถูกต้อง ถูกปิด หรือบัญชีไม่ Active |
| 403 | ip_blacklisted / link_blacklisted | IP หรือลิงก์ถูกบล็อกตามนโยบายของระบบ |
| 404 | service_not_found / order_not_found | ไม่พบ Service หรือ Order ของบัญชีนี้ |
| 405 | method_not_allowed | Endpoint รับเฉพาะ POST |
| 409 | duplicate_order / idempotency_conflict | คำขอซ้ำหรือใช้ Idempotency key ต่างพารามิเตอร์ |
| 422 | validation / insufficient_balance | ข้อมูลผ่านรูปแบบพื้นฐานแต่ดำเนินการไม่ได้ |
| 429 | rate_limit_exceeded | เกินจำนวนคำขอในช่วงเวลาที่กำหนด |
| 500 | transaction_failed | ระบบไม่สามารถบันทึก Order ได้ครบ Transaction |
| 501 | refill_not_available | ฟังก์ชัน Refill API ยังไม่มี Module รองรับใน Source นี้ |
Source ชุดนี้ไม่มี refill_model ที่ Controller เดิมอ้างถึง จึงเปลี่ยนให้ refill และ refill_status ตอบ HTTP 501 แทน Fatal error จนกว่าจะมี Module ที่รองรับจริง
Security และแนวทางใช้งานจริง
- เก็บ API key ใน Environment variable หรือ Secret manager
- กำหนด Timeout และ Retry เฉพาะ Error ชั่วคราว โดยใช้ Idempotency key กับ action=add
- อย่า Retry เมื่อได้ 400, 401, 404 หรือ 422 จนกว่าจะแก้ข้อมูล
- เมื่อได้ 429 ให้รอตาม Header
Retry-After - หากเว็บไซต์อยู่หลัง Reverse proxy หรือ CDN ต้องกำหนด
proxy_ipsให้ถูกต้อง เพื่อให้ Rate limit และ Audit log ใช้ IP ต้นทางที่เชื่อถือได้ - Log เฉพาะ Request ID, Action และ Order ID; ห้าม Log API key
- ระบบนี้ไม่มี Sandbox แยก ควรทดสอบด้วย Service และจำนวนต่ำสุดที่ยอมรับได้