Buat tautan dengan aturan routing, kelola tag dan domain kustom, serta baca analitik klik lewat REST API dengan spesifikasi OpenAPI 3.1 atau SDK TypeScript bertipe tanpa dependensi.
Buat kunci di Profil โ API
Terakhir diperbarui: November 2026
npm install revolink
Berjalan di Node.js 18+ dan runtime apa pun dengan fetch global. Tanpa dependensi, dengan tipe TypeScript lengkap yang dihasilkan dari spesifikasi API.
Dari nol sampai tautan pendek pertama dalam tiga langkah.
Di Revolink buka Profil โ API lalu buat kunci. Pilih hanya izin yang dibutuhkan kunci tersebut.
Id workspace dikirim bersama setiap permintaan, jadi kunci selalu bekerja di satu workspace.
Inisialisasi klien dengan kunci dan id workspace, lalu panggil links.create.
Simpan kunci di server Anda. Siapa pun yang memilikinya dapat bertindak di workspace Anda sesuai izin kunci.
Dengan SDK Revolink, Anda dapat membuat tautan pendek dengan aturan routing hanya dalam beberapa baris kode.
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/k3x9aPermintaan
await revolink.links.create({
url: 'https://example.com',
});Respons
{
id: "65f1c0a2e4b0a1d2c3b4a5f6",
name: "example.com",
domain: "rvlnk.link",
slug: "k3x9a",
shortLink: "https://rvlnk.link/k3x9a",
url: "https://example.com",
active: true,
clicks: 0,
...
}Empat resource dan satu panggilan me. Setiap metode sesuai dengan satu endpoint REST.
| Resource | Metode | Fungsinya |
|---|---|---|
| revolink.links | createupsertgetlistiterateupdatedeletecreateManyupdateManydeleteMany | Membuat, membaca, memperbarui, dan menghapus tautan, upsert berdasarkan slug, daftar dengan filter dan paginasi, menelusuri semua halaman, dan operasi massal (hingga 100 per panggilan). |
| revolink.tags | listgetcreateupdatedelete | Membuat, mendaftar, mengganti nama, dan menghapus tag. |
| revolink.domains | listgetcreatedelete | Menambah domain kustom, memeriksa status verifikasinya, dan menghapusnya. |
| revolink.analytics | linkworkspace | Analitik klik untuk satu tautan atau seluruh workspace dalam rentang tanggal. |
| revolink.me() | Siapa yang bertindak dengan kunci, workspace, dan izin kunci. |
Arahkan pengunjung berbeda ke tujuan berbeda. Tepat satu aturan menjadi default; aturan lain cocok berdasarkan negara, perangkat, OS, dan kondisi lain.
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'],
},
],
});Setiap kunci membawa scope. Endpoint menjawab 403 bila scope yang dibutuhkan tidak ada, jadi beri setiap integrasi hanya yang dipakainya.
Authorization: Bearer <key>Kirim kunci sebagai token bearer.
X-Api-KeyAtau kirim kunci pada header ini.
X-Workspace-IdWajib. Workspace tempat permintaan bertindak. Pemilik kunci harus menjadi anggotanya.
| Scope | Mengizinkan |
|---|---|
links:read | Mendaftar dan membaca tautan |
links:write | Membuat, upsert, dan memperbarui tautan |
links:delete | Menghapus tautan |
links:bulk | Membuat, memperbarui, dan menghapus secara massal (hingga 100 tautan per permintaan) |
analytics:read | Membaca analitik klik |
tags:read | Mendaftar dan membaca tag |
tags:write | Membuat dan memperbarui tag |
tags:delete | Menghapus tag |
domains:read | Mendaftar dan membaca domain kustom |
domains:write | Menambah domain kustom |
domains:delete | Menghapus domain kustom |
Panggilan API dihitung dalam kuota API bulanan paket pemilik workspace. Saat batas paket menghentikan permintaan, kode kesalahannya adalah license_limit_reached.
Setiap permintaan yang gagal melempar RevolinkError dengan status HTTP, kode yang dapat dibaca mesin, dan pesan yang menjelaskan apa yang perlu diperbaiki.
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
}
}Respons 429 selalu dicoba ulang setelah jeda Retry-After. Kesalahan jaringan dan respons 5xx hanya dicoba ulang untuk GET, PUT, dan DELETE. POST atau PATCH yang mungkin sudah diproses tidak pernah diulang, sehingga tautan tidak dibuat dua kali. Default: batas waktu 30 detik per percobaan dan 2 percobaan ulang; atur maxRetries ke 0 untuk mematikannya.
| Kode | Arti |
|---|---|
invalid_request | Permintaan salah (400). Pesan menjelaskan penyebabnya. |
unauthorized | Tidak ada kunci, atau kunci tidak valid atau kedaluwarsa (401). |
forbidden | Kunci tidak memiliki izin, atau peran Anda tidak bisa melakukannya (403). |
license_limit_reached | Batas paket tercapai: tautan, tag, domain, atau panggilan API (403). |
not_found | Item tersebut tidak ada di workspace ini (404). |
conflict | Sudah ada, misalnya slug atau nama tag yang sudah dipakai (409). |
rate_limited | Lebih dari 300 permintaan per menit untuk kunci (429). |
network_error | Tidak ada jawaban: jaringan gagal atau waktu habis (status 0). |
Tidak. SDK hanyalah pembungkus bertipe yang tipis di atas REST API. Anda bisa memanggil https://api.revolink.link/apiv2 langsung dari bahasa apa pun dengan API key dan header X-Workspace-Id, atau membuat klien dari spesifikasi OpenAPI 3.1.
Node.js 18 atau lebih baru dan runtime apa pun dengan fetch global. Tanpa dependensi, dengan build ESM dan CommonJS serta tipe TypeScript yang dihasilkan dari spesifikasi API.
Permintaan dibatasi 300 per menit per API key. Di atas itu API menjawab 429 dengan header Retry-After, dan SDK menunggu lalu mencoba ulang sendiri. Terpisah dari itu, panggilan API dihitung dalam kuota bulanan paket pemilik workspace.
API v1 dibekukan dan responsnya membawa header Deprecation. Integrasi baru sebaiknya memakai API v2.
Tidak. POST atau PATCH yang mungkin sudah diproses tidak pernah dicoba ulang. Hanya respons 429 dan permintaan idempoten (GET, PUT, DELETE) yang dicoba ulang.
Bisa. Server MCP Revolink memungkinkan Claude, Cursor, dan klien MCP lain mengelola tautan dengan bahasa biasa. SDK adalah pilihan untuk kode dan skrip Anda sendiri.
Bergabunglah dengan tim dan kreator yang mengontrol setiap klik dengan routing cerdas. Luncurkan kampanye lebih pintar, optimalkan lalu lintas secara real-time, dan tumbuh tanpa batas.
Mulai gratisPaket gratis ยท Tanpa kartu kredit ยท Batalkan kapan saja
Sudah punya tautan? Impor sekarang