API v2 + TypeScript SDK

Revolink API と SDK
コードからリンクを管理

ルーティングルール付きリンクの作成、タグや独自ドメインの管理、クリック分析の取得を、OpenAPI 3.1 仕様の REST API、または依存ゼロで型付けされた TypeScript SDK から行えます。

プロフィール → API でキーを作成

最終更新:2026年11月

ターミナル
npm install revolink

1行でインストール

Node.js 18 以上、およびグローバル fetch を持つあらゆるランタイムで動作します。依存ゼロで、API 仕様から生成された完全な TypeScript 型を備えています。

クイックスタート

3ステップで最初の短縮リンクまで。

1

API キーを作成

Revolink で プロフィール → API を開き、キーを作成します。必要な権限だけを選んでください。

2

ワークスペース ID をコピー

ワークスペース ID はすべてのリクエストと一緒に送信されるため、キーは常に1つのワークスペースで動作します。

3

リンクを作成

キーとワークスペース ID でクライアントを初期化し、links.create を呼び出します。

キーはサーバー上で保管してください。キーを持つ人は、その権限の範囲でワークスペースを操作できます。

プロジェクトにスムーズに統合

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 エンドポイントを見る

リクエスト

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 の対応範囲

4つのリソースと me 呼び出し。各メソッドは1つの REST エンドポイントに対応します。

リソースメソッドできること
revolink.links
createupsertgetlistiterateupdatedeletecreateManyupdateManydeleteMany
リンクの作成・取得・更新・削除、slug による upsert、フィルターとページネーション付き一覧、全ページの走査、一括操作(1回あたり最大100件)。
revolink.tags
listgetcreateupdatedelete
タグの作成、一覧、名前変更、削除。
revolink.domains
listgetcreatedelete
独自ドメインの追加、検証ステータスの確認、削除。
revolink.analytics
linkworkspace
1つのリンクまたはワークスペース全体の、期間指定クリック分析。
revolink.me()
キーが誰として動作するか、ワークスペース、キーの権限。

コードでスマートルーティング

訪問者ごとに異なる宛先へ振り分けます。デフォルトルールはちょうど1つで、ほかは国、デバイス、OS などの条件で一致します。

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 キーと権限

各キーにはスコープがあります。必要なスコープがないと、エンドポイントは 403 を返します。各連携には使うものだけを付与してください。

認証ヘッダー

Authorization: Bearer <key>

キーを bearer トークンとして送信します。

X-Api-Key

または、このヘッダーでキーを送信します。

X-Workspace-Id

必須。リクエストが動作するワークスペース。キーの所有者はそのメンバーである必要があります。

スコープ

スコープ許可する操作
links:readリンクの一覧と取得
links:writeリンクの作成、upsert、更新
links:deleteリンクの削除
links:bulk一括作成・更新・削除(1リクエストあたり最大100リンク)
analytics:readクリック分析の取得
tags:readタグの一覧と取得
tags:writeタグの作成と更新
tags:deleteタグの削除
domains:read独自ドメインの一覧と取得
domains:write独自ドメインの追加
domains:delete独自ドメインの削除

API 呼び出しは、ワークスペース所有者のプランの月間 API クォータに加算されます。プランの上限でリクエストが止まった場合、エラーコードは license_limit_reached です。

エラーと再試行

失敗したリクエストはすべて、HTTP ステータス、機械可読なコード、修正点を示すメッセージを持つ RevolinkError を投げます。

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 は繰り返されないため、リンクが二重に作成されることはありません。デフォルトは1回あたり30秒のタイムアウトと2回の再試行で、maxRetries を 0 にすると再試行を無効にできます。

コード意味
invalid_requestリクエストが不正です(400)。メッセージに内容が示されます。
unauthorizedキーがない、または無効・期限切れのキーです(401)。
forbiddenキーに権限がない、またはあなたのロールでは実行できません(403)。
license_limit_reachedプランの上限に達しました。リンク、タグ、ドメイン、または API 呼び出し(403)。
not_foundこのワークスペースにそのアイテムはありません(404)。
conflictすでに存在します。例:使用済みの slug やタグ名(409)。
rate_limitedキーあたり毎分300リクエストを超えました(429)。
network_error応答なし:ネットワーク障害またはタイムアウト(ステータスは 0)。

よくある質問

SDK を必ず使う必要がありますか?

いいえ。SDK は REST API の薄い型付きラッパーです。API キーと X-Workspace-Id ヘッダーがあれば、どの言語からでも https://api.revolink.link/apiv2 を直接呼び出せます。OpenAPI 3.1 仕様からクライアントを生成することもできます。

SDK はどのランタイムに対応していますか?

Node.js 18 以上と、グローバル fetch を持つすべてのランタイムです。依存はなく、API 仕様から生成された TypeScript 型付きの ESM と CommonJS ビルドを提供します。

レート制限は?

リクエストは API キーあたり毎分300件までです。超えると API は Retry-After ヘッダー付きで 429 を返し、SDK は自動で待機して再試行します。これとは別に、API 呼び出しはワークスペース所有者のプランの月間クォータに加算されます。

API v1 はどうなりますか?

API v1 は凍結されており、レスポンスには Deprecation ヘッダーが付きます。新しい連携には API v2 をお使いください。

再試行で SDK がリンクを重複作成することはありますか?

ありません。処理された可能性のある POST や PATCH は再試行されません。再試行されるのは 429 の応答と、冪等なリクエスト(GET、PUT、DELETE)だけです。

AI エージェントから Revolink を使えますか?

はい。Revolink MCP サーバーを使えば、Claude や Cursor などの MCP クライアントから自然な言葉でリンクを管理できます。自分のコードやスクリプトには SDK が向いています。

Revolinkを始める準備はできましたか?

インテリジェントルーティングですべてのクリックをコントロールするチームやクリエイターに参加しましょう。よりスマートなキャンペーンを開始し、リアルタイムでトラフィックを最適化し、無制限に成長しましょう。

無料で始める

無料プラン · クレジットカード不要 · いつでもキャンセル可能

すでにリンクをお持ちですか?インポートする