API ドキュメント
3 つの手順で、サーバーから公開 IPv4・IPv6 アドレスを検索します。 はじめに · API キーを作成
最初の API リクエスト
curl --get 'https://www.geoipy.com/api/IPsInfo' \
--data-urlencode 'ip=8.8.8.8' \
--header 'X-API-Key: YOUR_API_KEY'
HTTPS と X-API-Key を使ってください。URL のキーはログに残る場合があります。ヘッダーと URL のキーが異なると HTTP 400 になります。
ダッシュボードでキーを作成します。全体の表示は一度だけです。非公開のサーバー設定に保存し、ブラウザーコードや公開リポジトリには含めないでください。 交換すると旧キーはすぐ無効になります。失効・期限切れで新規リクエストは停止しますが、受付済みは完了する場合があります。
レスポンスとデータの鮮度
HTTP 200 は JSON を返します。これは短縮例で、フィールドは提供元のデータによって異なります。
{
"ip": "8.8.8.8",
"type": "ipv4",
"country_code": "US"
}
キャッシュの有効期間は既定で 12 時間です。X-Data-Fetched-At は UTC の取得時刻です。更新失敗時に期限切れデータは返しません。取得時刻はデータの年齢を表すものではありません。
X-Request-ID はサポート用の識別子です。位置情報はネットワークのおおよその位置であり、個人の正確な位置ではありません。
使用量と再試行
キャッシュを含む成功リクエストが枠を消費します。処理中は枠を予約し、失敗時に解放します。毎月 1 日 00:00 UTC にリセットされ、プランやキーの変更ではリセットされません。
HTTP 429 や一時的な 503/504 では Retry-After に従い、間隔を延ばして回数を制限して再試行します。入力や認証情報の誤りは先に修正してください。
エラー
エラーは HTTP エラーステータスと application/json で返します。API 識別子とサンプルはドキュメントの形式を維持します。
{
"success": false,
"error": {
"code": 104,
"type": "usage_limit_reached",
"info": "The monthly API allowance has been reached."
}
}
| コード | 種類 | 意味 |
|---|---|---|
| 101 | invalid_access_key | キーの欠落・期限切れ・無効化・不正(HTTP 401)。 |
| 104 | usage_limit_reached | 処理中を含む月間利用枠の上限(HTTP 429)。 |
| 105 | rate_limit_reached | 短期の頻度上限。Retry-After に従ってください(HTTP 429)。 |
| 106 | invalid_ip_address | 公開 IPv4・IPv6 アドレスを指定してください(HTTP 400)。 |
| 202 | upstream_failure | 提供元の障害または不正なデータ(HTTP 502)。 |
| 503 | lookup_unavailable | サービス、利用枠保存先、更新が一時的に利用不可(HTTP 503)。 |
| 504 | upstream_timeout | 提供元へのリクエストがタイムアウト(HTTP 504)。 |
サーバー側の例
JavaScript · サーバー
const url = new URL('https://www.geoipy.com/api/IPsInfo');
url.searchParams.set('ip', '8.8.8.8');
const response = await fetch(url, {
headers: { 'X-API-Key': process.env.GEOIPY_API_KEY }
});
const data = await response.json();
if (!response.ok) throw new Error(data.error.info);
console.log(data);
C#
using (var client = new System.Net.Http.HttpClient())
{
client.DefaultRequestHeaders.Add("X-API-Key",
System.Environment.GetEnvironmentVariable("GEOIPY_API_KEY"));
var response = await client.GetAsync(
"https://www.geoipy.com/api/IPsInfo?ip=8.8.8.8");
var json = await response.Content.ReadAsStringAsync();
// Inspect response.StatusCode and parse json before retrying.
}
Python
import os, requests
response = requests.get(
'https://www.geoipy.com/api/IPsInfo',
params={'ip': '8.8.8.8'},
headers={'X-API-Key': os.environ['GEOIPY_API_KEY']},
timeout=15)
data = response.json()
response.raise_for_status()
PHP
$url = 'https://www.geoipy.com/api/IPsInfo?' . http_build_query(['ip' => '8.8.8.8']);
$ch = curl_init($url);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('GEOIPY_API_KEY')]]);
$json = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($json === false) { throw new RuntimeException('The request failed.'); }
curl_close($ch);
$data = json_decode($json, true);
// Inspect $status and $data['error'] when the status is not 200.
サポートにはリクエスト ID とおおよその UTC 時刻をメールしてください。キーは非公開にしてください。 support-geoipy@rumex.bh