API v2 + SDK TypeScript

API dan SDK Revolink
Kelola tautan dari kode Anda

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

terminal
npm install revolink

Pasang dalam satu baris

Berjalan di Node.js 18+ dan runtime apa pun dengan fetch global. Tanpa dependensi, dengan tipe TypeScript lengkap yang dihasilkan dari spesifikasi API.

Mulai cepat

Dari nol sampai tautan pendek pertama dalam tiga langkah.

1

Buat API key

Di Revolink buka Profil โ†’ API lalu buat kunci. Pilih hanya izin yang dibutuhkan kunci tersebut.

2

Salin id workspace

Id workspace dikirim bersama setiap permintaan, jadi kunci selalu bekerja di satu workspace.

3

Buat tautan

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.

Integrasikan proyek Anda dengan mulus

Dengan SDK Revolink, Anda dapat membuat tautan pendek dengan aturan routing hanya dalam beberapa baris kode.

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

Jelajahi endpoint API

Permintaan

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

Respons

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

Cakupan SDK

Empat resource dan satu panggilan me. Setiap metode sesuai dengan satu endpoint REST.

ResourceMetodeFungsinya
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.

Routing cerdas dari kode

Arahkan pengunjung berbeda ke tujuan berbeda. Tepat satu aturan menjadi default; aturan lain cocok berdasarkan negara, perangkat, OS, dan kondisi lain.

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 dan izin

Setiap kunci membawa scope. Endpoint menjawab 403 bila scope yang dibutuhkan tidak ada, jadi beri setiap integrasi hanya yang dipakainya.

Header autentikasi

Authorization: Bearer <key>

Kirim kunci sebagai token bearer.

X-Api-Key

Atau kirim kunci pada header ini.

X-Workspace-Id

Wajib. Workspace tempat permintaan bertindak. Pemilik kunci harus menjadi anggotanya.

Scope

ScopeMengizinkan
links:readMendaftar dan membaca tautan
links:writeMembuat, upsert, dan memperbarui tautan
links:deleteMenghapus tautan
links:bulkMembuat, memperbarui, dan menghapus secara massal (hingga 100 tautan per permintaan)
analytics:readMembaca analitik klik
tags:readMendaftar dan membaca tag
tags:writeMembuat dan memperbarui tag
tags:deleteMenghapus tag
domains:readMendaftar dan membaca domain kustom
domains:writeMenambah domain kustom
domains:deleteMenghapus domain kustom

Panggilan API dihitung dalam kuota API bulanan paket pemilik workspace. Saat batas paket menghentikan permintaan, kode kesalahannya adalah license_limit_reached.

Kesalahan dan percobaan ulang

Setiap permintaan yang gagal melempar RevolinkError dengan status HTTP, kode yang dapat dibaca mesin, dan pesan yang menjelaskan apa yang perlu diperbaiki.

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
  }
}

Percobaan ulang yang tidak pernah menggandakan tautan

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.

KodeArti
invalid_requestPermintaan salah (400). Pesan menjelaskan penyebabnya.
unauthorizedTidak ada kunci, atau kunci tidak valid atau kedaluwarsa (401).
forbiddenKunci tidak memiliki izin, atau peran Anda tidak bisa melakukannya (403).
license_limit_reachedBatas paket tercapai: tautan, tag, domain, atau panggilan API (403).
not_foundItem tersebut tidak ada di workspace ini (404).
conflictSudah ada, misalnya slug atau nama tag yang sudah dipakai (409).
rate_limitedLebih dari 300 permintaan per menit untuk kunci (429).
network_errorTidak ada jawaban: jaringan gagal atau waktu habis (status 0).

Pertanyaan umum

Apakah saya harus memakai SDK?

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.

Runtime apa yang didukung SDK?

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.

Berapa batas permintaannya?

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.

Bagaimana nasib API v1?

API v1 dibekukan dan responsnya membawa header Deprecation. Integrasi baru sebaiknya memakai API v2.

Bisakah SDK membuat tautan ganda saat percobaan ulang?

Tidak. POST atau PATCH yang mungkin sudah diproses tidak pernah dicoba ulang. Hanya respons 429 dan permintaan idempoten (GET, PUT, DELETE) yang dicoba ulang.

Bisakah saya memakai Revolink dari agen AI?

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.

Siap untuk memulai dengan Revolink?

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 gratis

Paket gratis ยท Tanpa kartu kredit ยท Batalkan kapan saja

Sudah punya tautan? Impor sekarang