APIドキュメント
文字数カウント、文字列正規化、重複行削除、テキスト差分、CSV/JSON変換、JSON整形、日付差計算、 URL/Base64変換、UUID生成をJSON APIとして利用できます。初期段階では匿名利用を維持し、 APIキーと有料プランは将来拡張用の設計だけを用意しています。
利用制限
リクエスト本文の既定上限は256 KiBです。レート制限はCloudflare Workersのバインディングから 設定できる設計です。入力本文や個人情報はアプリケーションログへ出力しません。
任意APIキー
将来の利用量管理に備えて x-api-key ヘッダーとAuthorization: Bearer ... の読み取り設計を用意しています。現時点の公開ツールAPIは匿名利用可能で、 APIキー発行画面、請求連携、有料エンタイトルメントは実装していません。
将来プラン
config/api-plans.yml に匿名利用、開発者向け候補、業務利用候補の非販売プラン草案を置いています。 数値の価格や契約条件は公開済み料金として扱わず、正式提供前に運営者の承認、規約、プライバシーポリシー、サポート範囲の確認が必要です。
クリックイベント
POST /api/v1/events/click は、広告・公式リンクの集計改善に備えたプライバシー配慮のイベント受け口です。 送信できるのは programId、placementId、pagePath、linkType、occurredAt のみです。Cookie、IP保存、ユーザーエージェント、リファラー全文、 遷移先URL全文、ユーザー入力本文は扱いません。保存先が未設定の場合は受理後に破棄します。
エラー形式
{
"error": {
"code": "BAD_REQUEST",
"message": "Request body failed validation.",
"details": []
},
"requestId": "..."
}curl
curl -X POST https://api.example.com/api/v1/text/count -H "content-type: application/json" -d '{"text":"あ A
B"}'JavaScript
const res = await fetch("https://api.example.com/api/v1/data/json-format", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ json: "{"name":"山田"}", indent: 2 })
});
const body = await res.json();Python
import requests
body = requests.post(
"https://api.example.com/api/v1/date/difference",
json={"startDate": "2024-02-28", "endDate": "2024-03-01"},
timeout=5,
).json()C#
using System.Net.Http.Json;
using var client = new HttpClient();
var response = await client.PostAsJsonAsync(
"https://api.example.com/api/v1/text/normalize",
new { text = " ABC", unicodeForm = "NFKC" }
);
var body = await response.Content.ReadAsStringAsync();OpenAPI
機械可読な仕様はAPI Workerの GET /openapi.json で提供します。ローカル開発時は APIサーバー側の同パスを確認してください。
廃止予定の通知
破壊的変更はAPIバージョンを分け、変更履歴、APIドキュメント、OpenAPIのdescriptionで告知します。 Phase 3時点で廃止予定のエンドポイントはありません。