本文へスキップ
LinkProfit

開発者向けAPI

ダッシュボードでできることをすべてカバーするREST API

BearerキーひとつのHTTPで、リンクの作成、分析の取得、ドメインの接続、クライアントワークスペースの管理ができます。APIは製品が使っているのと同じ検証スキーマから生成され、OpenAPIとして公開され、バージョン1で凍結されています。互換性を壊す変更は、必ず新しいバージョンとして届きます。

Redirects served from the location closest to the click

呼び出す側が2種類いるので、キーのスコープも2つ

ワークスペースキーは1つのワークスペースの中で動きます。リンク、分析、そのワークスペースで使えるドメイン、そして自分自身の利用量です。パートナーキーは事業全体にまたがって動きます。クライアントとそのサブスクリプション、あなたが販売するプラン、すべてのドメイン、手数料の内訳を含む決済、入金、そして集計された分析の概要です。2つの接頭辞は見た目で明確に違うので、間違ったサービスに貼り付けたキーは、驚くような動作をせずにその場で失敗します。

キーはダッシュボードで作成し、一度だけ表示され、ハッシュとしてのみ保存されます。各キーは自分のスコープ一覧を持つので、分析を読むだけの連携には、何も作成も削除もできないキーを発行できます。キーには有効期限を設定でき、即座に失効させられます。各キーが最後に使われた日時も表示されるので、誰も設定した覚えのない連携を見つけられます。

  • POST /links, GET /links, GET /links/{id}, PATCH /links/{id}, DELETE /links/{id}
  • POST /links/bulk — 1回の呼び出しで最大100件のリンク
  • GET /links/{id}/qr — プリセットとサイズを指定してPNGまたはSVGを取得
  • GET /analytics/summary, /timeseries, /breakdown, /links/top, /export.csv
  • GETとPOST /domains — ドメインを接続し、必要なDNSレコードを読み取る
  • GET /workspace — プランの上限と現在の利用量
  • GET /partner/clients, /partner/plans, /partner/payments, /partner/payouts

午前3時に効いてくる予測可能性

すべてのエラーは同じ形——コード、人間が読めるメッセージ、ドキュメントのURL——なので、クライアントライブラリはコードで分岐でき、人はメッセージを読めます。一覧はページ番号ではなくカーソルでページ送りされるため、その裏でリンクが作られ続けていても結果が安定します。

レート制限は既定で、ワークスペースキーが毎分600リクエスト、パートナーキーはその倍です。上限、残り回数、リセット時刻は、すべてのレスポンスにヘッダーとして返ります。超えた場合は接続を切るのではなくRetry-Afterヘッダー付きの429を返すので、行儀のよいクライアントは正しく待機します。分析のエクスポートはストリーミングなので、10万行のレポートを送信側でも受信側でもメモリに抱える必要はありません。

本来ならポーリングすることになるイベントのためのWebhook

エンドポイントを登録すれば、リンクの作成・更新・削除、ホスト名が「SSL待ち」から「有効」へ、あるいはエラー状態へ移るドメインのライフサイクルイベント、そしてパートナーキーではクライアントのサブスクリプションと決済のイベントを受け取れます。ドメインのステータスのエンドポイントを1分ごとにポーリングするようなコードは、まさに誰も書くべきでない類のものです。

すべての配信には、タイムスタンプ付きのHMAC-SHA256署名ヘッダーが付くので、受信側はペイロードが当社から来たものであり、再送の使い回しではないことを検証できます。失敗した配信は、1分、5分、30分、2時間、12時間と間隔を広げながら5回再試行され、その後エンドポイントは失敗扱いになってメールが送られます。ダッシュボードからテストイベントを送れるので、本番の何かが依存する前に連携を検証できます。

実際に動くコードから生成されるドキュメント

OpenAPI仕様は、APIが検証に使っているのと同じスキーマから生成されるため、手書きのリファレンスのように実装から乖離することがありません。クライアントジェネレーターに渡せるファイルとして公開されるほか、このサイト上で閲覧できるリファレンスとして描画され、クイックスタート、ページネーション、エラー、Webhook、レート制限の手書きガイドも併せて用意しています。

バージョン1は凍結されています。新しいフィールドが追加されることはあっても、既存の挙動は変わりません。呼び出し側を壊すような変更は、別のパスに置かれるバージョン2まで待ちます。使うためではなく、その上に何かを作るために短縮サービスを選んでいるなら、この約束は個々のエンドポイントより価値があります。

コード自身に語らせる

リンクを作成する——curl
curl -X POST https://api.linkprofit.com/v1/links \
  -H 'Authorization: Bearer lp_live_XXXXXXXX' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com/spring-collection",
    "domain_id": "dom_8kq2vn41",
    "slug": "spring",
    "title": "Spring collection",
    "utm": {
      "utm_source": "newsletter",
      "utm_medium": "email",
      "utm_campaign": "spring-2026"
    }
  }'
リンクを作成する——JavaScriptのfetch
const response = await fetch("https://api.linkprofit.com/v1/links", {
  method: "POST",
  headers: {
    Authorization: "Bearer lp_live_XXXXXXXX",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    url: "https://example.com/spring-collection",
    domain_id: "dom_8kq2vn41",
    slug: "spring",
  }),
});

if (!response.ok) {
  const { error } = await response.json();
  throw new Error(error.code + ": " + error.message);
}

const link = await response.json();
console.log(link, response.headers.get("X-RateLimit-Remaining"));
リンクを作成する——Pythonのrequests
import requests

response = requests.post(
    "https://api.linkprofit.com/v1/links",
    headers={"Authorization": "Bearer lp_live_XXXXXXXX"},
    json={
        "url": "https://example.com/spring-collection",
        "domain_id": "dom_8kq2vn41",
        "slug": "spring",
    },
    timeout=10,
)

if response.status_code == 429:
    raise SystemExit("rate limited, retry after " + response.headers["Retry-After"])

response.raise_for_status()
print(response.json())

よくある質問

どのプランでAPIを使えますか?

パートナーの場合、APIアクセスはGrowthプランから利用でき、それより上のプランにはすべて含まれます。あなたのクライアントについては、あなたが決めます。APIアクセスは、作成する各プランのスイッチの1つなので、自社サービスの上位階層にすることも、どのプランにも含めることもできます。

APIを自分のホスト名で動かせますか?

バージョン1ではできません。APIはapi.linkprofit.comから配信され、パートナーは自社サービスのAPIとしてクライアントに案内します。クライアントがブラウザーで目にするもの——ダッシュボード、リンク、メール、購入手続き——はすべてあなたのドメイン上にあります。APIのホスト名は、その唯一の正直な例外です。

テスト用のサンドボックスはありますか?

専用のワークスペースと、それに絞ったキーをお使いください。そこで作ったリンクは実際のドメインで解決され、実際の分析を生みます。リダイレクト、ターゲティング、Webhookがドキュメントどおりに動くことを確かめるときは、模擬環境よりこちらのほうが役に立ちます。

あなたのブランドのリンク短縮サービスを立ち上げる

ドメインを接続し、価格を公開し、最初の顧客を招待する——多くのパートナーは一晩で公開まで進みます。

トライアルにカードは不要です。