APIと開発者向けドキュメント
軽量で予測しやすいJSON APIです。すべてのエンドポイントは、サーバー側の抽象化レイヤーを介してプロキシ処理され、レスポンスの正規化、軽量キャッシュ、およびエラー処理を行います。
エンドポイント
GET /api/my-ip
サーバーから検出された、呼び出し元のパブリックIPアドレスの位置情報およびネットワークデータを返します。
curl https://ipcheck.mubarokah.com/api/my-ip
GET /api/lookup?q=<ip|domain>
任意のIPv4、IPv6、またはドメインを検索します。プロトコル(http/https)やパスを含む入力は拒否されます。
curl "https://ipcheck.mubarokah.com/api/lookup?q=8.8.8.8"
POST /api/bulk
一括検索(1リクエストにつき最大50件)。同時実行数はサーバー側で制限されます。
curl -X POST -H 'content-type: application/json' \
-d '{"queries":["8.8.8.8","1.1.1.1","example.com"]}' \
https://ipcheck.mubarokah.com/api/bulkレスポンスの構造
{
"ok": true,
"query": "8.8.8.8",
"ip": "8.8.8.8",
"ipVersion": "IPv4",
"location": {
"continent": "North America",
"country": "United States",
"countryCode": "US",
"regionName": "Virginia",
"city": "Ashburn",
"zip": "20149",
"lat": 39.0438,
"lon": -77.4874,
"timezone": "America/New_York",
"utcOffsetSeconds": -14400,
"currency": "USD"
},
"network": {
"isp": "Google LLC",
"org": "Google Public DNS",
"as": "AS15169 Google LLC",
"asname": "GOOGLE",
"reverse": "dns.google"
},
"flags": { "mobile": false, "proxy": false, "hosting": true }
}エラーコード
invalid_query— 入力は有効なIPまたはドメインではありません。rate_limited— アップストリームプロバイダーのレート制限に達しました。provider_unreachable— アップストリームサーバーはオフラインです。
回数制限とキャッシュ
検索結果はクエリごとに10分間サーバー側にキャッシュされます。外部プロバイダーの無料枠は回数制限があり、非商用利用を想定しています。本番環境のトラフィックには、以下に記載されている環境変数を介して商用プロバイダーを設定することを強く推奨します。
プロバイダーの抽象化
サーバー上に以下の環境変数を設定します。シークレットキーがブラウザに公開されることはありません。
IP_PROVIDER=ip-api # or ip-api-pro IP_API_KEY=... # required for pro IP_API_BASE=http://ip-api.com
注意事項
- IP位置情報は推定値であり、最も高い精度でも都市または大都市圏レベルです。
- プライベートIPアドレスおよび予約済みIPアドレスの範囲は位置情報を特定できません。
- APIは、キャッシュの目的以外にクエリ内容をログに記録することはありません。
