API v2 + TypeScript SDK

Revolink API และ SDK
จัดการลิงก์จากโค้ดของคุณ

สร้างลิงก์พร้อมกฎการกำหนดเส้นทาง จัดการแท็กและโดเมนของคุณเอง และอ่านสถิติการคลิกผ่าน REST API ที่มีสเปก OpenAPI 3.1 หรือ TypeScript SDK ที่มีชนิดข้อมูลและไม่มี dependency

สร้างคีย์ได้ที่ โปรไฟล์ → API

อัปเดตล่าสุด: พฤศจิกายน 2026

เทอร์มินัล
npm install revolink

ติดตั้งในบรรทัดเดียว

ใช้ได้กับ Node.js 18+ และทุกรันไทม์ที่มี fetch แบบ global ไม่มี dependency และมีชนิดข้อมูล TypeScript ครบถ้วนที่สร้างจากสเปกของ API

เริ่มต้นอย่างรวดเร็ว

จากศูนย์ถึงลิงก์สั้นลิงก์แรกใน 3 ขั้นตอน

1

สร้าง API key

ใน Revolink เปิด โปรไฟล์ → API แล้วสร้างคีย์ เลือกเฉพาะสิทธิ์ที่คีย์ต้องใช้

2

คัดลอก workspace id

workspace id จะถูกส่งไปกับทุกคำขอ คีย์จึงทำงานใน workspace เดียวเสมอ

3

สร้างลิงก์

สร้างไคลเอนต์ด้วยคีย์และ workspace id แล้วเรียก links.create

เก็บคีย์ไว้บนเซิร์ฟเวอร์ของคุณ ใครมีคีย์ก็สามารถทำงานใน workspace ของคุณได้ตามสิทธิ์ของคีย์

ผสานรวมกับโปรเจกต์ของคุณได้อย่างราบรื่น

ด้วย Revolink SDK คุณสร้างลิงก์สั้นพร้อมกฎการกำหนดเส้นทางได้ในไม่กี่บรรทัด

index.ts
import {Revolink} from 'revolink';

const revolink = new Revolink({
  apiKey: process.env.REVOLINK_API_KEY!,
  workspaceId: process.env.REVOLINK_WORKSPACE_ID!,
});

const {shortLink} = await revolink.links.create({
  url: 'https://example.com',
});
console.log(shortLink); // https://rvlnk.link/k3x9a

สำรวจ API endpoint

คำขอ

TypeScript
await revolink.links.create({
  url: 'https://example.com',
});

การตอบกลับ

JSON
{
  id: "65f1c0a2e4b0a1d2c3b4a5f6",
  name: "example.com",
  domain: "rvlnk.link",
  slug: "k3x9a",
  shortLink: "https://rvlnk.link/k3x9a",
  url: "https://example.com",
  active: true,
  clicks: 0,
  ...
}

สิ่งที่ SDK รองรับ

สี่รีซอร์สและการเรียก me แต่ละเมธอดสอดคล้องกับ REST endpoint หนึ่งรายการ

รีซอร์สเมธอดทำอะไรได้
revolink.links
createupsertgetlistiterateupdatedeletecreateManyupdateManydeleteMany
สร้าง อ่าน อัปเดต และลบลิงก์ upsert ตาม slug แสดงรายการพร้อมตัวกรองและการแบ่งหน้า วนอ่านทุกหน้า และทำงานเป็นชุด (สูงสุด 100 รายการต่อการเรียก)
revolink.tags
listgetcreateupdatedelete
สร้าง แสดงรายการ เปลี่ยนชื่อ และลบแท็ก
revolink.domains
listgetcreatedelete
เพิ่มโดเมนของคุณเอง ตรวจสอบสถานะการยืนยัน และลบโดเมน
revolink.analytics
linkworkspace
สถิติการคลิกของลิงก์เดียวหรือทั้ง workspace ในช่วงวันที่ที่กำหนด
revolink.me()
คีย์นี้ทำงานในนามใคร workspace ใด และคีย์มีสิทธิ์อะไรบ้าง

การกำหนดเส้นทางอัจฉริยะจากโค้ด

ส่งผู้เข้าชมต่างกันไปยังปลายทางต่างกัน มีกฎเริ่มต้นเพียงหนึ่งกฎเท่านั้น ส่วนกฎอื่นตรงตามประเทศ อุปกรณ์ ระบบปฏิบัติการ และเงื่อนไขอื่น

routing.ts
await revolink.links.create({
  name: 'App download',
  rules: [
    {isDefault: true, targetUrl: 'https://example.com/download'},
    {
      isDefault: false,
      targetUrl: 'https://apps.apple.com/app/id1',
      device: ['mobile'],
      os: ['iOS'],
    },
  ],
});

API key และสิทธิ์

ทุกคีย์มี scope endpoint จะตอบ 403 เมื่อขาด scope ที่ต้องใช้ ดังนั้นให้แต่ละการเชื่อมต่อเฉพาะสิ่งที่ใช้จริง

เฮดเดอร์สำหรับยืนยันตัวตน

Authorization: Bearer <key>

ส่งคีย์เป็น bearer token

X-Api-Key

หรือส่งคีย์ในเฮดเดอร์นี้แทน

X-Workspace-Id

จำเป็น workspace ที่คำขอทำงานอยู่ เจ้าของคีย์ต้องเป็นสมาชิกของ workspace นั้น

Scope

Scopeอนุญาตให้
links:readแสดงรายการและอ่านลิงก์
links:writeสร้าง upsert และอัปเดตลิงก์
links:deleteลบลิงก์
links:bulkสร้าง อัปเดต และลบเป็นชุด (สูงสุด 100 ลิงก์ต่อคำขอ)
analytics:readอ่านสถิติการคลิก
tags:readแสดงรายการและอ่านแท็ก
tags:writeสร้างและอัปเดตแท็ก
tags:deleteลบแท็ก
domains:readแสดงรายการและอ่านโดเมนของคุณเอง
domains:writeเพิ่มโดเมนของคุณเอง
domains:deleteลบโดเมนของคุณเอง

การเรียก API นับรวมในโควต้า API รายเดือนของแพ็กเกจของเจ้าของ workspace เมื่อขีดจำกัดของแพ็กเกจหยุดคำขอ รหัสข้อผิดพลาดคือ license_limit_reached

ข้อผิดพลาดและการลองใหม่

ทุกคำขอที่ล้มเหลวจะโยน RevolinkError พร้อมสถานะ HTTP รหัสที่เครื่องอ่านได้ และข้อความที่บอกว่าต้องแก้อะไร

errors.ts
import {RevolinkError} from 'revolink';

try {
  await revolink.links.create({url: 'https://example.com', slug: 'taken'});
} catch (error) {
  if (error instanceof RevolinkError) {
    error.status;              // 409
    error.code;                // 'conflict'
    error.licenseLimitReached; // true when the plan's limit stopped the request
    error.requiredPermission;  // e.g. 'tags:write' when the key lacks a scope
    error.retryAfter;          // seconds, on 429
  }
}

การลองใหม่ที่ไม่สร้างลิงก์ซ้ำ

429 จะถูกลองใหม่เสมอหลังหน่วงตาม Retry-After ข้อผิดพลาดของเครือข่ายและ 5xx จะถูกลองใหม่เฉพาะ GET, PUT และ DELETE ส่วน POST หรือ PATCH ที่อาจถูกประมวลผลไปแล้วจะไม่ถูกส่งซ้ำ ลิงก์จึงไม่ถูกสร้างสองครั้ง ค่าเริ่มต้น: หมดเวลา 30 วินาทีต่อครั้งและลองใหม่ 2 ครั้ง ตั้ง maxRetries เป็น 0 เพื่อปิดการลองใหม่

รหัสความหมาย
invalid_requestคำขอไม่ถูกต้อง (400) ข้อความจะบอกสาเหตุ
unauthorizedไม่มีคีย์ หรือคีย์ไม่ถูกต้องหรือหมดอายุ (401)
forbiddenคีย์ขาดสิทธิ์ หรือบทบาทของคุณทำสิ่งนี้ไม่ได้ (403)
license_limit_reachedถึงขีดจำกัดของแพ็กเกจแล้ว: ลิงก์ แท็ก โดเมน หรือการเรียก API (403)
not_foundไม่มีรายการนี้ใน workspace นี้ (404)
conflictมีอยู่แล้ว เช่น slug หรือชื่อแท็กที่ถูกใช้ไปแล้ว (409)
rate_limitedคีย์ส่งคำขอเกิน 300 ครั้งต่อนาที (429)
network_errorไม่มีการตอบกลับ: เครือข่ายล้มเหลวหรือหมดเวลา (สถานะเป็น 0)

คำถามที่พบบ่อย

ต้องใช้ SDK หรือไม่

ไม่จำเป็น SDK เป็นเพียงตัวห่อบาง ๆ ที่มีชนิดข้อมูลครอบ REST API คุณเรียก https://api.revolink.link/apiv2 ได้โดยตรงจากภาษาใดก็ได้ด้วย API key และเฮดเดอร์ X-Workspace-Id หรือสร้างไคลเอนต์จากสเปก OpenAPI 3.1

SDK รองรับรันไทม์ใดบ้าง

Node.js 18 ขึ้นไปและทุกรันไทม์ที่มี fetch แบบ global ไม่มี dependency และมีบิลด์ ESM กับ CommonJS พร้อมชนิดข้อมูล TypeScript ที่สร้างจากสเปกของ API

ขีดจำกัดอัตราคำขอเป็นเท่าไร

จำกัดที่ 300 คำขอต่อนาทีต่อ API key เกินจากนั้น API จะตอบ 429 พร้อมเฮดเดอร์ Retry-After และ SDK จะรอแล้วลองใหม่เอง นอกจากนี้การเรียก API ยังนับรวมในโควต้ารายเดือนของแพ็กเกจของเจ้าของ workspace

API v1 จะเป็นอย่างไร

API v1 ถูกระงับการพัฒนาและการตอบกลับมีเฮดเดอร์ Deprecation การเชื่อมต่อใหม่ควรใช้ API v2

SDK อาจสร้างลิงก์ซ้ำตอนลองใหม่ไหม

ไม่ POST หรือ PATCH ที่อาจถูกประมวลผลไปแล้วจะไม่ถูกลองใหม่ มีเพียงการตอบ 429 และคำขอแบบ idempotent (GET, PUT, DELETE) เท่านั้นที่ถูกลองใหม่

ใช้ Revolink จาก AI agent ได้ไหม

ได้ เซิร์ฟเวอร์ Revolink MCP ให้ Claude, Cursor และไคลเอนต์ MCP อื่นจัดการลิงก์ด้วยภาษาธรรมชาติ ส่วน SDK เหมาะกับโค้ดและสคริปต์ของคุณเอง

พร้อมเริ่มต้นกับ Revolink แล้วหรือยัง?

เข้าร่วมกับทีมและครีเอเตอร์ที่ควบคุมทุกคลิกด้วยการเราต์ติ้งอัจฉริยะ เปิดตัวแคมเปญที่ฉลาดขึ้น ปรับปรุงทราฟฟิกแบบเรียลไทม์ และเติบโตอย่างไม่มีขีดจำกัด

เริ่มต้นฟรี

แผนฟรี · ไม่ต้องบัตรเครดิต · ยกเลิกเมื่อใดก็ได้

มีลิงก์อยู่แล้วหรือไม่? นำเข้าเลย