ISPプロキシAPI
ISP Proxiesプランのパネルページでできることはすべて、このAPI経由でも利用できます。IPを配置できるロケーションの検索、ユーザー名付きの全プロキシの一覧表示、未配置のIPの配置、IPの別の都市やISPへの移動などです。
すべてのエンドポイントは、api_token クエリパラメータで認証します。トークンはパネルのアカウント → APIトークンで生成してください。
?api_token=YOUR_API_TOKENすべてのパスは https://shifter.io/api/v1/isp/{membership} から始まります。{membership} パスパラメータには、プランIDのどちらの形式も指定できます。プランのパネルURL末尾の短いコード(例: Rxqk)、またはプランページに表示されるプラン番号(例: 68057)です。どちらも同じプランに解決されます。
このAPIがアクセスできるのは、トークンの所有者が保有するISP Proxiesプランのみです。それ以外のプランに対しては 404 が返されます。
ロケーション変更のルール
Section titled “ロケーション変更のルール”- 各IPは請求期間ごとに5回までロケーションを変更できます。この回数はプランの更新時にリセットされ、未使用の変更回数は次の期間に繰り越されません。これはトライアルにも適用されます。
- 移動したIPには新しいユーザー名と新しい
proxy_idが割り当てられます。古いユーザー名は即座に使用できなくなるため、ただちにクライアントを新しいユーザー名に切り替えてください。 - プランのパスワードは変わりません。パスワードはプランごとに1つで、そのプラン上のすべてのユーザー名で共有されます。
- ユーザー名は大文字・小文字を区別します。すべてのプロキシは
isp.shifter.io:443経由で、HTTP(S)またはSOCKS5で接続します。 - 各IPは選択した都市とISPを維持します。その背後のアドレスは、家庭用回線がISPから新しいアドレスを割り当てられるのと同様に、時々更新されることがあります。
ロケーションの一覧取得
Section titled “ロケーションの一覧取得”IPを配置できる都市とISPのペアを、それぞれで現在利用可能なIP数とともに返します。利用可能数がゼロのロケーションは、特に要求しない限り除外されます。
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
membership | path | 必須 | プランID(短いコードまたはプラン番号) |
api_token | query | 必須 | アカウントのAPIトークン |
country | query | 任意 | ISO 3166-1 alpha-2の国コード、例: US |
q | query | 任意 | 検索テキスト: 都市名(現地名も可)、地域名、ISP名、または 7922 や AS7922 のようなASN |
page | query | 任意 | ページ番号。1 から開始 |
per_page | query | 任意 | 1ページあたりの件数。デフォルト 100、最大 500 |
include_sold_out | query | 任意 | 1 を指定すると、利用可能なIPがないロケーションも含めます |
例:
curl "https://shifter.io/api/v1/isp/YOUR_PLAN_ID/locations?country=US&q=Dallas&api_token=YOUR_API_TOKEN"レスポンス:
{ "ok": true, "page": 1, "per_page": 100, "total": 2, "has_more": false, "locations": [ { "location_id": 1842, "country": "US", "region": "Texas", "city": "Dallas", "asn": 7922, "isp": "COMCAST-7922", "available": 7 } ]}location_id は不変なので、保存して後で再利用できます。available は現在そのロケーションに配置できるIPの数です。次のページをリクエストするタイミングを知るには has_more を使用してください。
プロキシの一覧取得
Section titled “プロキシの一覧取得”プランの接続情報と、配置済みの各IPのユーザー名、ロケーション、残りのロケーション変更回数を返します。
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
membership | path | 必須 | プランID(短いコードまたはプラン番号) |
api_token | query | 必須 | アカウントのAPIトークン |
例:
curl "https://shifter.io/api/v1/isp/YOUR_PLAN_ID/proxies?api_token=YOUR_API_TOKEN"レスポンス:
{ "ok": true, "host": "isp.shifter.io", "port": 443, "password": "YOUR_PLAN_PASSWORD", "ips_total": 10, "ips_placed": 3, "ips_unplaced": 7, "changes_per_ip": 5, "period_ends_at": "2026-10-20T08:00:00+00:00", "proxies": [ { "proxy_id": 5531, "username": "us-texas-dallas-as7922-Ksj25", "location_id": 1842, "country": "US", "region": "Texas", "city": "Dallas", "asn": 7922, "isp": "COMCAST-7922", "changes_left": 5 } ]}| フィールド | 説明 |
|---|---|
host / port | プラン上のすべてのプロキシが接続する先 |
password | プランのパスワード。すべてのユーザー名で共有されます |
ips_total | プランに含まれるIP数 |
ips_placed / ips_unplaced | 既にロケーションに配置されたIP数と、まだ配置可能なIP数 |
changes_per_ip | 請求期間ごとに各IPが持つロケーション変更回数 |
period_ends_at | 現在の請求期間が終了し、変更回数がリセットされる日時 |
proxies[].username | 接続に使用するユーザー名。大文字・小文字を区別します |
proxies[].isp | ASNに対応するISP名。名前が不明な場合は null になることがあります |
proxies[].changes_left | このIPが現在の期間内に残しているロケーション変更回数 |
接続するには、各フィールドを組み合わせてプロキシURLを作成します。
http://us-texas-dallas-as7922-Ksj25:YOUR_PLAN_PASSWORD@isp.shifter.io:443socks5://us-texas-dallas-as7922-Ksj25:YOUR_PLAN_PASSWORD@isp.shifter.io:4431つのIPを移動
Section titled “1つのIPを移動”1つのIPを別のロケーションに移動します。これにより、そのIPのロケーション変更回数を1回消費します。
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
membership | path | 必須 | プランID(短いコードまたはプラン番号) |
proxy_id | path | 必須 | 移動するIPの proxy_id |
api_token | query | 必須 | アカウントのAPIトークン |
location_id | body | 必須 | IPの移動先ロケーション |
例:
curl -X POST "https://shifter.io/api/v1/isp/YOUR_PLAN_ID/proxies/5531/location?api_token=YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"location_id":1901}'レスポンス:
{ "ok": true, "message": "Location changed. Use the new username from now on.", "old_proxy_id": 5531, "proxy": { "proxy_id": 5534, "username": "us-texas-austin-as7018-Pq7rT", "location_id": 1901, "country": "US", "region": "Texas", "city": "Austin", "asn": 7018, "isp": "ATT-INTERNET4", "changes_left": 4 }}このIPには新しい proxy_id と新しい username が割り当てられます。古いユーザー名(および old_proxy_id)は、レスポンスが届いた時点で使用できなくなります。
複数のIPを移動
Section titled “複数のIPを移動”1回のリクエストで複数のIPを、それぞれ指定したロケーションに移動します。
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
membership | path | 必須 | プランID(短いコードまたはプラン番号) |
api_token | query | 必須 | アカウントのAPIトークン |
moves | body | 必須 | {"proxy_id", "location_id"} のペアの配列。1リクエストあたり最大1,000件 |
dry_run | body | 任意 | true にすると、何も変更せずリクエストを検証します。デフォルトは false |
- このリクエストはオールオアナッシングです。いずれかの移動が実行できない場合、IPは一切移動されず、エラーが返されます。
- すでに対象のロケーションにあるIPを指定したエントリはスキップされ、変更回数は消費されません。その
proxy_idはskippedに列挙されます。 dry_run: trueの場合、何も書き込まれません。レスポンスには実行された場合の結果が示されますが、moved内のproxy_idとusernameはnullになります。新しい値は実際に移動が行われた場合にのみ存在するためです。
例:
curl -X POST "https://shifter.io/api/v1/isp/YOUR_PLAN_ID/proxies/location?api_token=YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"moves":[{"proxy_id":5531,"location_id":1901},{"proxy_id":5532,"location_id":1842}],"dry_run":false}'レスポンス:
{ "ok": true, "dry_run": false, "message": "1 IP moved. Use the new username from now on. 1 IP was already there and stays as it is.", "moved": [ { "old_proxy_id": 5531, "proxy_id": 5535, "username": "us-texas-austin-as7018-Zt3wQ", "location_id": 1901, "country": "US", "region": "Texas", "city": "Austin", "asn": 7018, "isp": "ATT-INTERNET4", "changes_left": 4 } ], "skipped": [5532]}未配置のIPを配置
Section titled “未配置のIPを配置”まだロケーションに配置されていないIP(プロキシ一覧の ips_unplaced)を配置します。IPの配置はロケーション変更回数を消費しません。
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
membership | path | 必須 | プランID(短いコードまたはプラン番号) |
api_token | query | 必須 | アカウントのAPIトークン |
placements | body | 必須 | {"location_id", "count"} のペアの配列: 各ロケーションに配置するIP数 |
例:
curl -X POST "https://shifter.io/api/v1/isp/YOUR_PLAN_ID/proxies/place?api_token=YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"placements":[{"location_id":1901,"count":2}]}'レスポンス:
{ "ok": true, "message": "2 IPs are ready.", "placed": 2, "ips_unplaced": 5, "proxies": [ { "proxy_id": 5540, "username": "us-texas-austin-as7018-Hh8aa", "location_id": 1901, "country": "US", "region": "Texas", "city": "Austin", "asn": 7018, "isp": "ATT-INTERNET4", "changes_left": 5 } ]}エンドツーエンドの例
Section titled “エンドツーエンドの例”Austinのロケーションを検索し、2つのIPをそこに移動し、今後使用するユーザー名を読み取ります。JSONの読み取りにはjqを使用します。
TOKEN="YOUR_API_TOKEN"PLAN="YOUR_PLAN_ID"BASE="https://shifter.io/api/v1/isp/$PLAN"
# 1. Find a location with IPs availableLOCATION=$(curl -s "$BASE/locations?country=US&q=Austin&api_token=$TOKEN" \ | jq '.locations[0].location_id')
# 2. Move two IPs therecurl -s -X POST "$BASE/proxies/location?api_token=$TOKEN" \ -H "Content-Type: application/json" \ -d "{\"moves\":[{\"proxy_id\":5531,\"location_id\":$LOCATION},{\"proxy_id\":5532,\"location_id\":$LOCATION}]}" \ | jq -r '.moved[].username'
# 3. Read every current username and build proxy URLscurl -s "$BASE/proxies?api_token=$TOKEN" \ | jq -r '.password as $p | .proxies[] | "http://\(.username):\($p)@isp.shifter.io:443"'ステップ2または3で得た新しいユーザー名に、すぐクライアントを更新してください。古いユーザー名は、移動が完了した時点で使用できなくなります。
リクエストが失敗した場合、"ok": false とともに機械可読な error コードと、読みやすい message が返されます。
{ "ok": false, "error": "plan_inactive", "message": "This plan is not active, so locations cannot be assigned."}| ステータス | error | 意味 |
|---|---|---|
404 | not_found | プランまたはIPがアカウント内に存在しません。proxy_ids が含まれる場合があります |
422 | validation | パラメータが欠落しているか不正です |
422 | no_changes_left | 1つ以上のIPが、今期のロケーション変更回数をすべて使い切っています。proxy_ids を含みます |
409 | out_of_stock | ロケーションに十分なIPの空きがありません。location_id と available を含みます |
409 | plan_inactive | プランがアクティブでないため、そのIPを配置または移動できません |
| リクエスト | 上限 |
|---|---|
読み取り(GET) | アカウントごとに1分間に60回 |
書き込み(POST) | アカウントごとに1分間に20回 |
上限を超えると、APIは 429 を返します。待機してからバックオフで再試行してください。多数のIPを移動する場合は、IPごとに1リクエストを送るのではなく、1回の複数のIPを移動リクエストにまとめて送信してください。
- ISP Proxies概要
- IPの管理、パネルでの同等の操作
- Usage & Quota API