API des proxies ISP
Tout ce que vous pouvez faire sur une page de plan ISP Proxies dans le panel est également disponible via cette API : rechercher les emplacements où vous pouvez placer des IPs, lister chaque proxy avec son nom d’utilisateur, placer les IPs que vous n’avez pas encore placées, et déplacer des IPs vers une autre ville ou un autre ISP.
Authentification
Section intitulée « Authentification »Tous les endpoints s’authentifient avec un paramètre de requête api_token. Générez un token dans le panel sous Account → API Tokens.
?api_token=YOUR_API_TOKENChaque chemin commence par https://shifter.io/api/v1/isp/{membership}. Le paramètre de chemin {membership} accepte l’une ou l’autre forme de l’identifiant du plan : le code court à la fin de l’URL du plan dans le panel (par exemple Rxqk) ou le numéro de plan affiché sur la page du plan (par exemple 68057). Les deux renvoient au même plan.
L’API n’accède qu’aux plans ISP Proxies appartenant au propriétaire du token. Tout autre plan répond 404.
Règles pour les changements d’emplacement
Section intitulée « Règles pour les changements d’emplacement »- Chaque IP peut changer d’emplacement 5 fois par période de facturation. Le compteur se réinitialise au renouvellement du plan, et les changements inutilisés ne sont pas reportés à la période suivante. Cela s’applique aussi aux essais.
- Une IP déplacée obtient un nouveau nom d’utilisateur et un nouveau
proxy_id. L’ancien nom d’utilisateur cesse de fonctionner immédiatement, donc basculez vos clients vers le nouveau sans délai. - Le mot de passe du plan reste le même. Il y a un seul mot de passe par plan, partagé par tous les noms d’utilisateur qu’il contient.
- Les noms d’utilisateur sont sensibles à la casse. Chaque proxy se connecte via
isp.shifter.io:443, en HTTP(S) ou SOCKS5. - Chaque IP conserve la ville et l’ISP que vous avez choisis. L’adresse derrière elle peut être renouvelée de temps à autre, de la même manière qu’une connexion domestique reçoit une nouvelle adresse de son ISP.
Lister les emplacements
Section intitulée « Lister les emplacements »Renvoie les paires ville/ISP sur lesquelles vous pouvez placer des IPs, avec le nombre d’IPs disponibles sur chacune en ce moment. Les emplacements sans disponibilité sont exclus sauf si vous les demandez explicitement.
| Paramètre | In | Requis | Description |
|---|---|---|---|
membership | path | oui | L’ID du plan (code court ou numéro de plan) |
api_token | query | oui | Votre token API de compte |
country | query | no | Code pays ISO 3166-1 alpha-2, par exemple US |
q | query | no | Texte de recherche : une ville (les noms locaux fonctionnent aussi), une région, un nom d’ISP, ou un ASN tel que 7922 ou AS7922 |
page | query | no | Numéro de page, à partir de 1 |
per_page | query | no | Résultats par page, par défaut 100, maximum 500 |
include_sold_out | query | no | Mettre à 1 pour inclure les emplacements sans IP disponible |
Exemple :
curl "https://shifter.io/api/v1/isp/YOUR_PLAN_ID/locations?country=US&q=Dallas&api_token=YOUR_API_TOKEN"Réponse :
{ "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 est stable, vous pouvez donc le stocker et le réutiliser plus tard. available est le nombre d’IPs que vous pouvez placer sur cet emplacement en ce moment. Utilisez has_more pour savoir quand demander la page suivante.
Lister les proxies
Section intitulée « Lister les proxies »Renvoie les détails de connexion du plan et de chaque IP placée, avec son nom d’utilisateur, son emplacement et le nombre de changements d’emplacement restants.
| Paramètre | In | Requis | Description |
|---|---|---|---|
membership | path | oui | L’ID du plan (code court ou numéro de plan) |
api_token | query | oui | Votre token API de compte |
Exemple :
curl "https://shifter.io/api/v1/isp/YOUR_PLAN_ID/proxies?api_token=YOUR_API_TOKEN"Réponse :
{ "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 } ]}| Champ | Description |
|---|---|
host / port | Où se connecte chaque proxy du plan |
password | Le mot de passe du plan, partagé par tous les noms d’utilisateur |
ips_total | IPs incluses dans le plan |
ips_placed / ips_unplaced | IPs déjà sur un emplacement, et IPs que vous pouvez encore placer |
changes_per_ip | Changements d’emplacement que chaque IP obtient par période de facturation |
period_ends_at | Quand la période de facturation en cours se termine et que les changements se réinitialisent |
proxies[].username | Le nom d’utilisateur avec lequel se connecter. Sensible à la casse |
proxies[].isp | Le nom de l’ISP pour l’ASN. Peut être null quand aucun nom n’est connu |
proxies[].changes_left | Changements d’emplacement restants pour cette IP dans la période en cours |
Pour vous connecter, combinez les champs dans une URL de proxy :
http://us-texas-dallas-as7922-Ksj25:YOUR_PLAN_PASSWORD@isp.shifter.io:443socks5://us-texas-dallas-as7922-Ksj25:YOUR_PLAN_PASSWORD@isp.shifter.io:443Déplacer une IP
Section intitulée « Déplacer une IP »Déplace une IP vers un autre emplacement. Cela utilise l’un des changements d’emplacement de cette IP.
| Paramètre | In | Requis | Description |
|---|---|---|---|
membership | path | oui | L’ID du plan (code court ou numéro de plan) |
proxy_id | path | oui | Le proxy_id de l’IP à déplacer |
api_token | query | oui | Votre token API de compte |
location_id | body | oui | L’emplacement vers lequel déplacer l’IP |
Exemple :
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}'Réponse :
{ "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 }}L’IP a maintenant un nouveau proxy_id et un nouveau username. L’ancien nom d’utilisateur (et old_proxy_id) cesse de fonctionner dès que la réponse arrive.
Déplacer plusieurs IPs
Section intitulée « Déplacer plusieurs IPs »Déplace plusieurs IPs en une seule requête, chacune vers l’emplacement que vous indiquez pour elle.
| Paramètre | In | Requis | Description |
|---|---|---|---|
membership | path | oui | L’ID du plan (code court ou numéro de plan) |
api_token | query | oui | Votre token API de compte |
moves | body | oui | Tableau de paires {"proxy_id", "location_id"}, 1 000 au maximum par requête |
dry_run | body | no | true pour vérifier la requête sans rien changer. Par défaut false |
- La requête est tout ou rien : si un déplacement ne peut pas être effectué, aucune IP ne se déplace et vous recevez une erreur.
- Une entrée dont l’IP est déjà sur l’emplacement cible est ignorée et n’utilise pas de changement. Son
proxy_idest listé dansskipped. - Avec
dry_run: true, rien n’est écrit. La réponse montre ce qui se passerait, avecproxy_idetusernamedéfinis ànulldansmoved, puisque les nouveaux n’existent que lorsque le déplacement est réel.
Exemple :
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}'Réponse :
{ "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]}Placer les IPs non placées
Section intitulée « Placer les IPs non placées »Place les IPs qui ne sont pas encore sur un emplacement (ips_unplaced dans la liste des proxies). Placer une IP n’utilise pas de changement d’emplacement.
| Paramètre | In | Requis | Description |
|---|---|---|---|
membership | path | oui | L’ID du plan (code court ou numéro de plan) |
api_token | query | oui | Votre token API de compte |
placements | body | oui | Tableau de paires {"location_id", "count"} : combien d’IPs placer sur chaque emplacement |
Exemple :
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}]}'Réponse :
{ "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 } ]}Exemple de bout en bout
Section intitulée « Exemple de bout en bout »Trouvez un emplacement à Austin, déplacez-y deux IPs, et récupérez les noms d’utilisateur à utiliser dorénavant. Ceci utilise jq pour lire le JSON.
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"'Mettez à jour vos clients avec les nouveaux noms d’utilisateur de l’étape 2 ou 3 immédiatement : les anciens cessent de fonctionner dès que le déplacement est terminé.
Une requête échouée renvoie "ok": false avec un code error exploitable par une machine et un message lisible :
{ "ok": false, "error": "plan_inactive", "message": "This plan is not active, so locations cannot be assigned."}| Statut | error | Signification |
|---|---|---|
404 | not_found | Le plan ou l’IP n’existe pas sur votre compte. Peut inclure proxy_ids |
422 | validation | Un paramètre est manquant ou invalide |
422 | no_changes_left | Une ou plusieurs IPs ont utilisé tous leurs changements d’emplacement pour cette période. Inclut proxy_ids |
409 | out_of_stock | Un emplacement n’a pas assez d’IPs disponibles. Inclut location_id et available |
409 | plan_inactive | Le plan n’est pas actif, donc ses IPs ne peuvent pas être placées ou déplacées |
Limites de débit
Section intitulée « Limites de débit »| Requêtes | Limite |
|---|---|
Lectures (GET) | 60 par minute et par compte |
Écritures (POST) | 20 par minute et par compte |
Au-delà de la limite, l’API répond 429. Attendez et réessayez avec un backoff. Pour déplacer de nombreuses IPs, envoyez-les en une seule requête Déplacer plusieurs IPs plutôt qu’une requête par IP.
Voir aussi
Section intitulée « Voir aussi »- Présentation d’ISP Proxies
- Gestion des IPs, les mêmes actions dans le panel
- API Usage & Quota