クライアントライブラリ
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_failed、conflict、not_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ではありません。