本文へスキップ
LinkProfit

クライアントライブラリ

Node、Python、PHP向けの公式LinkProfitクライアント。再試行、冪等性、ページネーションについて共通の仕様を持ち、各言語のクイックスタートも用意しています。

2026年8月14日更新

REST APIは素のHTTPとJSONなので、fetchを1回呼ぶだけでも十分に使えます。クライアント ライブラリがあるのは、誰も二度は書きたくない部分のためです。レート制限に当たったリクエスト を正しく再試行すること、再試行された作成を安全にすること、そして一覧の最後までカーソルを たどることです。

3つのライブラリに、1つの共通仕様です。

| 言語 | パッケージ | ソース | | --- | --- | --- | | Node.js / TypeScript | @linkprofit/sdk | packages/sdk-node | | Python | linkprofit | sdk/python | | PHP | linkprofit/linkprofit-php | sdk/php |

インストール

パッケージはまだnpm、PyPI、Packagistには公開されていません。 公開はレジストリの アカウント待ちです。コード自体は完成していて、今日でもリポジトリをチェックアウトすれば インストールできます。アカウントが用意でき次第、下のコマンドは1行の npm install @linkprofit/sdk(と各言語の同等物)に変わります。

Nodeは、ローカルのチェックアウトから。

npm install /path/to/linkprofit/packages/sdk-node

Pythonも、ローカルのチェックアウトから。

pip install /path/to/linkprofit/sdk/python

PHPは、composer.jsonに書いたComposerのpathリポジトリ経由で。

{
  "repositories": [
    { "type": "path", "path": "/path/to/linkprofit/sdk/php" }
  ],
  "require": {
    "linkprofit/linkprofit-php": "*"
  }
}

3つに共通する振る舞い

ライブラリは意図的に退屈で、意図的によく似せてあります。振る舞いを一度覚えれば、どの言語 でもそのまま通用します。

認証。 ワークスペースキー(lp_live_…)を渡すと、クライアントがすべてのリクエストに Authorizationヘッダーを付けます。ベースURLはオプションなので、テストではまったく同じ コードをローカルの環境に対して動かせます。スコープとローテーションについては 認証方式をご覧ください。

サーバーを尊重する再試行。 429や一時的な5xxはバックオフを入れて再試行し、 Retry-Afterは推測せずそのまま尊重します——ウィンドウがいつ空くかは、サーバーがすでに 知っているからです。試行回数には上限があり、リクエスト自体に理由があって失敗したもの (validation_failedconflictnot_found)は決して再試行しません。誤ったリクエスト を繰り返しても、レート制限の枠を無駄にするだけだからです。

冪等な更新系の呼び出し。 更新系の呼び出しにはすべてIdempotency-Keyが付くので、 ネットワークのタイムアウト後に再試行しても、2本目のリンクを作るのではなく保存済みの レスポンスが返ります。再試行が別のプロセスや後の実行から来るかもしれない場合は、注文idや ジョブidなど、ご自分のキーを渡すこともできます。キーは24時間保存され、同じキーで本文が 異なる場合は409が返ります。

イテレーターとしてのカーソルページネーション。 一覧のエンドポイントは カーソルでページ送りされ、クライアントはそれをイテレーターとして 提供します。あなたはリンクをループで回すだけで、現在のページを使い切るとクライアントが 次のページを取得し、カーソルがnullになれば止まります。ページ番号の計算も、1件を黙って 取りこぼす境界のずれの心配もありません。

例外としてのエラー。 失敗すると、その言語で自然なエラー型が送出され、APIのcode、 人向けのメッセージ、検証エラーであればフィールドごとのdetailsを持っています。メッセージ の文面ではなくコードで分岐してください——ドキュメント化された仕様は コードのほうです。

Nodeクライアントのリクエストとレスポンスの型は、リファレンスが 描画しているのと同じOpenAPIドキュメント——/openapi.jsonで公開されて います——から生成されるので、動いているAPIから型がずれることはありません。PythonとPHPの クライアントは、同じドキュメントを、それぞれの言語の書き方で人手で追随させています。

クイックスタート

各パッケージには、その全機能を載せたREADMEが同梱されています。下のスニペットは、3つに 共通する形——キーでクライアントを作り、リソースのグループを呼び、型の付いたオブジェクトを 受け取る——を示すものです。

Node

import { LinkProfit } from "@linkprofit/sdk";

const client = new LinkProfit({ apiKey: process.env.LINKPROFIT_API_KEY });

const created = await client.createLink({
  url: "https://example.com/summer-sale",
  title: "Summer sale",
});

console.log(created.data.short_url);

Python

import os

from linkprofit import LinkProfit

client = LinkProfit(os.environ["LINKPROFIT_API_KEY"])

created = client.create_link(
    {"url": "https://example.com/summer-sale", "title": "Summer sale"}
)

print(created["data"]["short_url"])

PHP

<?php

require __DIR__ . '/vendor/autoload.php';

use LinkProfit\LinkProfit;

$client = new LinkProfit(getenv('LINKPROFIT_API_KEY'));

$created = $client->createLink([
    'url' => 'https://example.com/summer-sale',
    'title' => 'Summer sale',
]);

echo $created['data']['short_url'];

どれを選ぶべきか

  • Node / TypeScript — 型がOpenAPIドキュメントから直接来るため、機能が最も充実して います。JavaScriptのバックエンド、サーバーレス関数、ビルドスクリプトには自然な選択です。
  • Python — レポートとデータの仕事に向いています。分析をノートブックへ、定期実行の ジョブへ、ダッシュボードへの供給へと引き込めます。
  • PHP — CMSの世界のために。コンテンツの公開に合わせてリンクを短縮するWordPressの プラグインや、Laravelのサービスなどです。
  • どれも使わない — お使いの言語がこの中になければ、APIはごく普通のHTTPです。 クイックスタートcurlが主役ですし、クライアントがやっている こと(再試行、冪等性、カーソル)はすべてドキュメント化された振る舞いなので、50行ほどで 実装できます。

どれを選んでも、エンドポイント、フィールド、エラーコードの完全な一覧は APIリファレンスです——ライブラリはその上に乗った便利な道具で あって、別のAPIではありません。

あわせて読みたい

  • レート制限 — 再試行のロジックが収まるべき枠です。
  • Webhook — ポーリングの代わりに、イベントを押し出してもらえます。
  • MCPサーバー — 同じ操作を、AIアシスタントから。