API และเซิร์ฟเวอร์ MCP
สร้างและจัดการลิงก์สั้นจากโค้ดของคุณเอง — ผ่าน REST API หรือผ่านเซิร์ฟเวอร์ MCP ในผู้ช่วย AI ของคุณ
cutty มี API สาธารณะและเซิร์ฟเวอร์ MCP ตัวแรกให้คุณสร้างและแก้ไขลิงก์จากโค้ดได้ ส่วนตัวที่สองทำงานได้ตรงจากผู้ช่วย AI ที่พูดโปรโตคอล MCP ได้ ทั้งสองอย่างใช้ API key เดียวกัน
API key
ยืนยันตัวตนทุกการเรียกด้วย header นี้:
Authorization: Bearer ck_your_key
หาคีย์ได้จากไหน: ลงชื่อเข้าใช้ เปิดแดชบอร์ดของคุณ → API keys → Create key คีย์เต็ม (ขึ้นต้นด้วย ck_) จะแสดงเพียงครั้งเดียวตอนสร้างเท่านั้น — รีบเก็บไว้ในที่ปลอดภัยทันที ขีดจำกัดคือ 120 คำขอต่อนาทีต่อคีย์
Base URL
endpoint REST ทั้งหมดอยู่ภายใต้ https://cutty.dev/api/v1 ทั้งคำขอและการตอบกลับเป็น JSON
การสร้างลิงก์
POST /api/v1/links — body แบบ JSON ต้องมีอย่างน้อย url ที่เหลือเป็นออปชัน:
url— ที่อยู่ปลายทาง (จำเป็น)slug— ตอนท้ายที่กำหนดเอง 3–40 อักขระ; ละไว้เพื่อให้สุ่มให้expiresAt— วันหมดอายุในรูปแบบ ISO 8601maxHits— ขีดจำกัดการคลิก (1–1,000,000)password— รหัสผ่านที่ป้องกันลิงก์tags— ป้ายกำกับคั่นด้วยจุลภาคเพื่อจัดระเบียบในแดชบอร์ดfolder— ชื่อโฟลเดอร์ที่จะเก็บลิงก์utmSource,utmMedium,utmCampaign— พารามิเตอร์ UTM ที่ต่อท้ายตอนเปลี่ยนเส้นทาง
การตอบกลับจะให้ slug, shortUrl และ target
curl -X POST https://cutty.dev/api/v1/links \
-H "Authorization: Bearer ck_your_key" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/a/very/long/address","slug":"offer","tags":"campaign,summer"}'
การแสดงรายการและลิงก์เดียว
GET /api/v1/links คืนค่าลิงก์ทั้งหมดของคุณ GET /api/v1/links/{slug} — รายละเอียดของลิงก์เดียว
curl https://cutty.dev/api/v1/links/offer \
-H "Authorization: Bearer ck_your_key"
การอัปเดตและการลบ
PATCH /api/v1/links/{slug} อัปเดตเฉพาะฟิลด์ที่คุณส่งมา DELETE /api/v1/links/{slug} ลบลิงก์
curl -X PATCH https://cutty.dev/api/v1/links/offer \
-H "Authorization: Bearer ck_your_key" \
-H "Content-Type: application/json" \
-d '{"maxHits":500}'
ผ่าน PATCH คุณตั้งค่าได้หลายอย่าง เช่น: targetUrl, expiresAt, maxHits, status, password, tags, folder รวมถึงฟิลด์ขั้นสูงด้านล่าง ฟิลด์ที่ตั้งเป็น null (หรือสตริงว่าง) จะล้างค่าคุณสมบัตินั้น
Targeting, A/B และฟิลด์ขั้นสูง
สิ่งเดียวกับที่คุณได้ในตัวแก้ไขลิงก์ก็ใช้ผ่าน API ได้:
rules— อาร์เรย์ของกฎเปลี่ยนเส้นทางตามประเทศหรืออุปกรณ์ เช่น[{"kind":"country","match":"PL","url":"https://shop.pl"},{"kind":"device","match":"ios","url":"https://apps.apple.com/..."}]abUrls— การหมุน A/B: อาร์เรย์[{"url":"https://a.com","weight":1},{"url":"https://b.com","weight":1}]; ใช้เมื่อไม่มีกฎไหนตรงstartsAt— วันที่ (ISO 8601) ที่ลิงก์เริ่มทำงาน; ก่อนหน้านั้นลิงก์จะคืนค่า 425webhookUrl— ที่อยู่ที่จะได้รับการแจ้งเตือนแบบPOSTทุกครั้งที่มีคลิก (fire-and-forget)serveOgพร้อมogTitle,ogDescription,ogImageUrl— การ์ดพรีวิวที่ปรับแต่งเองสำหรับบอตโซเชียล (คนจริงยังคงถูกเปลี่ยนเส้นทาง)
curl -X PATCH https://cutty.dev/api/v1/links/offer \
-H "Authorization: Bearer ck_your_key" \
-H "Content-Type: application/json" \
-d '{"rules":[{"kind":"country","match":"DE","url":"https://example.de"}]}'
การทำงานแบบกลุ่ม
POST /api/v1/bulk สร้างลิงก์จำนวนมากในคำขอเดียว ส่งอาร์เรย์ links (แต่ละรายการเหมือนการสร้างปกติ) ได้สูงสุด 500 รายการต่อครั้ง การตอบกลับจะคืนผลลัพธ์ต่อหนึ่งรายการ
curl -X POST https://cutty.dev/api/v1/bulk \
-H "Authorization: Bearer ck_your_key" \
-H "Content-Type: application/json" \
-d '{"links":[{"url":"https://a.com"},{"url":"https://b.com","slug":"b"}]}'
สถิติลิงก์
GET /api/v1/links/{slug}/stats คืนค่าสรุปการคลิก: ยอดรวม การแยกตามอุปกรณ์และเบราว์เซอร์ และการกระจายในช่วง 24 ชั่วโมงที่ผ่านมา
curl https://cutty.dev/api/v1/links/offer/stats \
-H "Authorization: Bearer ck_your_key"
เซิร์ฟเวอร์ MCP
ถ้าคุณทำงานกับผู้ช่วย AI คุณเชื่อมต่อ cutty ผ่าน MCP (Model Context Protocol) แล้วสั่งให้มันย่อและจัดระเบียบลิงก์ได้เลยในบทสนทนา เซิร์ฟเวอร์ทำงานที่ https://mcp.cutty.dev/mcp ผ่าน Streamable HTTP และคุณยืนยันตัวตนด้วย API key เดียวกัน — header Authorization: Bearer ck_...
รายการเครื่องมือทั้งหมด ตัวอย่างการเชื่อมต่อพร้อมใช้ และตัวอย่างอื่น ๆ อยู่ในหน้าเฉพาะ: เซิร์ฟเวอร์ MCP ของ cutty
มีอะไรไม่ทำงานหรือเปล่า?
เขียนมาที่ [email protected] — ผมตอบภายในวันเดียวกัน