API de Proxies ISP
Tudo o que você pode fazer na página de um plano ISP Proxies no painel também está disponível por meio desta API: pesquisar as localizações onde você pode posicionar IPs, listar cada proxy com seu nome de usuário, posicionar os IPs que você ainda não posicionou e mover IPs para outra cidade ou ISP.
Autenticação
Seção intitulada “Autenticação”Todos os endpoints autenticam com um parâmetro de consulta api_token. Gere um token no painel em Account → API Tokens.
?api_token=YOUR_API_TOKENTodo caminho começa com https://shifter.io/api/v1/isp/{membership}. O parâmetro de caminho {membership} aceita qualquer uma das formas do identificador do plano: o código curto no final da URL do plano no painel (por exemplo, Rxqk) ou o número do plano exibido na página do plano (por exemplo, 68057). Ambos resolvem para o mesmo plano.
A API só acessa planos ISP Proxies pertencentes ao proprietário do token. Qualquer outro plano responde 404.
Regras para mudanças de localização
Seção intitulada “Regras para mudanças de localização”- Cada IP pode mudar de localização 5 vezes por período de faturamento. A contagem é reiniciada quando o plano é renovado, e mudanças não utilizadas não são transferidas para o próximo período. Isso se aplica também a trials.
- Um IP movido recebe um novo nome de usuário e um novo
proxy_id. O nome de usuário antigo para de funcionar imediatamente, então mude seus clientes para o novo o quanto antes. - A senha do plano permanece a mesma. Há uma senha por plano, compartilhada por todos os nomes de usuário nele.
- Os nomes de usuário diferenciam maiúsculas de minúsculas. Cada proxy se conecta por
isp.shifter.io:443, via HTTP(S) ou SOCKS5. - Cada IP mantém a cidade e o ISP escolhidos. O endereço por trás dele pode ser atualizado de vez em quando, da mesma forma que uma conexão doméstica recebe um novo endereço do seu ISP.
Listar localizações
Seção intitulada “Listar localizações”Retorna os pares de cidade e ISP onde você pode posicionar IPs, com a quantidade de IPs disponíveis em cada um no momento. Localizações sem nada disponível são omitidas, a menos que você as solicite.
| Parâmetro | Em | Obrigatório | Descrição |
|---|---|---|---|
membership | path | sim | O ID do plano (código curto ou número do plano) |
api_token | query | sim | Seu token de API da conta |
country | query | não | Código de país ISO 3166-1 alpha-2, por exemplo, US |
q | query | não | Texto de busca: uma cidade (nomes locais também funcionam), uma região, um nome de ISP ou um ASN como 7922 ou AS7922 |
page | query | não | Número da página, começando em 1 |
per_page | query | não | Resultados por página, padrão 100, máximo 500 |
include_sold_out | query | não | Defina como 1 para incluir localizações sem IPs disponíveis |
Exemplo:
curl "https://shifter.io/api/v1/isp/YOUR_PLAN_ID/locations?country=US&q=Dallas&api_token=YOUR_API_TOKEN"Resposta:
{ "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ável, então você pode armazená-lo e reutilizá-lo depois. available é o número de IPs que você pode posicionar nessa localização no momento. Use has_more para saber quando solicitar a próxima página.
Listar proxies
Seção intitulada “Listar proxies”Retorna os detalhes de conexão do plano e de cada IP posicionado, com seu nome de usuário, localização e mudanças de localização restantes.
| Parâmetro | Em | Obrigatório | Descrição |
|---|---|---|---|
membership | path | sim | O ID do plano (código curto ou número do plano) |
api_token | query | sim | Seu token de API da conta |
Exemplo:
curl "https://shifter.io/api/v1/isp/YOUR_PLAN_ID/proxies?api_token=YOUR_API_TOKEN"Resposta:
{ "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 } ]}| Campo | Descrição |
|---|---|
host / port | Onde cada proxy do plano se conecta |
password | A senha do plano, compartilhada por todos os nomes de usuário |
ips_total | IPs incluídos no plano |
ips_placed / ips_unplaced | IPs já posicionados em uma localização, e IPs que você ainda pode posicionar |
changes_per_ip | Mudanças de localização que cada IP recebe por período de faturamento |
period_ends_at | Quando o período de faturamento atual termina e as mudanças são reiniciadas |
proxies[].username | O nome de usuário para conectar. Diferencia maiúsculas de minúsculas |
proxies[].isp | O nome do ISP para o ASN. Pode ser null quando nenhum nome é conhecido |
proxies[].changes_left | Mudanças de localização que este IP ainda tem disponíveis no período atual |
Para conectar, combine os campos em uma 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:443Mover um IP
Seção intitulada “Mover um IP”Move um IP para outra localização. Isso usa uma das mudanças de localização desse IP.
| Parâmetro | Em | Obrigatório | Descrição |
|---|---|---|---|
membership | path | sim | O ID do plano (código curto ou número do plano) |
proxy_id | path | sim | O proxy_id do IP a ser movido |
api_token | query | sim | Seu token de API da conta |
location_id | body | sim | A localização para onde mover o IP |
Exemplo:
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}'Resposta:
{ "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 }}O IP agora tem um novo proxy_id e um novo username. O nome de usuário antigo (e old_proxy_id) param de funcionar assim que a resposta chega.
Mover vários IPs
Seção intitulada “Mover vários IPs”Move vários IPs em uma única requisição, cada um para a localização que você especificar para ele.
| Parâmetro | Em | Obrigatório | Descrição |
|---|---|---|---|
membership | path | sim | O ID do plano (código curto ou número do plano) |
api_token | query | sim | Seu token de API da conta |
moves | body | sim | Array de pares {"proxy_id", "location_id"}, no máximo 1.000 por requisição |
dry_run | body | não | true para verificar a requisição sem alterar nada. Padrão false |
- A requisição é tudo ou nada: se alguma mudança não puder ser feita, nenhum IP é movido e você recebe um erro.
- Uma entrada cujo IP já está na localização alvo é ignorada e não usa uma mudança. Seu
proxy_idé listado emskipped. - Com
dry_run: truenada é gravado. A resposta mostra o que aconteceria, comproxy_ideusernamedefinidos comonullemmoved, já que os novos só existem quando a mudança é real.
Exemplo:
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}'Resposta:
{ "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]}Posicionar IPs não posicionados
Seção intitulada “Posicionar IPs não posicionados”Posiciona IPs que ainda não estão em uma localização (ips_unplaced na lista de proxies). Posicionar um IP não usa uma mudança de localização.
| Parâmetro | Em | Obrigatório | Descrição |
|---|---|---|---|
membership | path | sim | O ID do plano (código curto ou número do plano) |
api_token | query | sim | Seu token de API da conta |
placements | body | sim | Array de pares {"location_id", "count"}: quantos IPs posicionar em cada localização |
Exemplo:
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}]}'Resposta:
{ "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 } ]}Exemplo completo
Seção intitulada “Exemplo completo”Encontre uma localização em Austin, mova dois IPs para lá e leia de volta os nomes de usuário a serem usados a partir de agora. Isso usa jq para ler o 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"'Atualize seus clientes com os novos nomes de usuário da etapa 2 ou 3 imediatamente: os antigos param de funcionar assim que a mudança for concluída.
Uma requisição com falha retorna "ok": false com um código error legível por máquina e uma message legível:
{ "ok": false, "error": "plan_inactive", "message": "This plan is not active, so locations cannot be assigned."}| Status | error | Significado |
|---|---|---|
404 | not_found | O plano ou IP não existe na sua conta. Pode incluir proxy_ids |
422 | validation | Um parâmetro está ausente ou inválido |
422 | no_changes_left | Um ou mais IPs já usaram todas as suas mudanças de localização para este período. Inclui proxy_ids |
409 | out_of_stock | Uma localização não tem IPs suficientes disponíveis. Inclui location_id e available |
409 | plan_inactive | O plano não está ativo, então seus IPs não podem ser posicionados ou movidos |
Limites de taxa
Seção intitulada “Limites de taxa”| Requisições | Limite |
|---|---|
Leituras (GET) | 60 por minuto por conta |
Escritas (POST) | 20 por minuto por conta |
Acima do limite, a API responde 429. Aguarde e tente novamente com backoff. Para mover vários IPs, envie-os em uma única requisição Mover vários IPs em vez de uma requisição por IP.
Veja também
Seção intitulada “Veja também”- Visão geral do ISP Proxies
- Gerenciando IPs, as mesmas ações no painel
- API de Uso & Cota