Primeira vez? Siga estes passos
- 1Cadastre-se com e-mail e senha, ou com um token, e abra o painel.
- 2Gere uma chave de API na aba Conectar. A chave completa aparece só uma vez, no momento em que é gerada, então guarde-a na hora.
- 3Coloque a chave no cabeçalho Authorization de toda requisição que precisar dela.
- 4Chame /account primeiro para confirmar que a chave é aceita, depois faça pedidos com /orders.
Como funciona a autenticação?
Requisições que acessam a sua conta (account, orders, proxy-user) precisam de chave de API. Envie no cabeçalho como Authorization: Bearer pwk_... Preços, países e cotações são públicos e podem ser chamados sem chave.
Os servidores da ProxyWorld nunca guardam a chave em si, só um hash dela. Se perder uma chave, crie outra no painel, e a antiga é bloqueada na hora. Use chaves apenas em código do lado do servidor. Se uma chave for parar em código que roda no navegador ou em um repositório público, outra pessoa pode usá-la.
Authorization: Bearer pwk_your_api_key
URL base e formato dos dados
- URL base
- https://proxyworld.shop/api/v1
- Corpo da requisição e da resposta
- application/json
- Valores
- USD como número, por exemplo 1058.50
- Data e hora
- ISO 8601 (UTC)
Quantas chamadas posso fazer?
Cada chave de API pode fazer 60 chamadas por minuto. Endpoints públicos chamados sem chave permitem 60 chamadas por minuto por IP. Acima disso, você recebe HTTP 429. Espere cerca de um minuto e tente de novo.
O que volta quando algo dá errado?
Você recebe um código de status HTTP e um corpo JSON com um código de erro curto e uma explicação.
{
"error": {
"code": "insufficient_balance",
"message": "Your balance is too low for this order. Top up in the dashboard."
}
}| HTTP | code | Significado |
|---|---|---|
| bad_requestHTTP 400Falta um valor obrigatório, ou foi enviado um valor que este produto não aceita. | Falta um valor obrigatório, ou foi enviado um valor que este produto não aceita. | |
| unauthorizedHTTP 401A chave de API está ausente ou não é válida. | A chave de API está ausente ou não é válida. | |
| insufficient_balanceHTTP 402Seu saldo é menor que o total do pedido. Nenhum valor foi descontado do saldo. | Seu saldo é menor que o total do pedido. Nenhum valor foi descontado do saldo. | |
| not_foundHTTP 404Sua conta não tem nenhum pedido com este número. | Sua conta não tem nenhum pedido com este número. | |
| rate_limitedHTTP 429Você passou do número de chamadas permitido por minuto. | Você passou do número de chamadas permitido por minuto. | |
| server_errorHTTP 500O servidor não conseguiu concluir a requisição. Nenhum valor foi descontado do saldo. | O servidor não conseguiu concluir a requisição. Nenhum valor foi descontado do saldo. |
Endpoints
Ver sua conta
GET/api/v1/accountExige chave de API
Retorna a forma de acesso (login: email ou token), seu e-mail, saldo, host e portas do proxy, usuário e senha do proxy e os IPs autorizados. Em contas criadas com token, email é null.
curl https://proxyworld.shop/api/v1/account \ -H "Authorization: Bearer pwk_your_api_key"
{
"login": "email",
"email": "you@example.com",
"balance_usd": 1300,
"proxy": {
"host": "gate.proxyworld.shop",
"http_port": 6100,
"socks5_port": 6200,
"username": "pwexample1",
"password": "your_password"
},
"allowed_ips": [
"203.0.113.10"
]
}Ver produtos e preços
GET/api/v1/productsFunciona sem chave
Retorna a faixa de pedido de cada produto, o preço unitário de cada faixa de quantidade e os descontos por período. Usa a mesma tabela da página de preços.
curl https://proxyworld.shop/api/v1/products
{
"currency": "USD",
"prices_as_of": "2026-10-31",
"products": [
{
"id": "unlimited",
"unit": "day",
"quantity": {
"meaning": "days",
"min": 1,
"max": 365
},
"...": "..."
},
{
"id": "residential",
"unit": "gb",
"...": "..."
}
]
}Países e cidades
GET/api/v1/countriesFunciona sem chave
Retorna os países disponíveis para cada produto, junto com os valores de cidade para a opção -city- do usuário.
| Nome | Tipo | Significado |
|---|---|---|
productOpcional | string | Um de unlimited, residential, isp, datacenter. Se omitido, usa residential. |
curl "https://proxyworld.shop/api/v1/countries?product=datacenter"
{
"product": "datacenter",
"countries": [
{
"code": "us",
"name": "United States",
"region": "americas",
"datacenter": true,
"cities": [
{
"name": "New York",
"value": "new_york"
},
{
"name": "Los Angeles",
"value": "los_angeles"
}
]
}
]
}Obter cotação
POST/api/v1/quoteFunciona sem chave
Calcula o total do pedido sem mexer no saldo. Envie o mesmo corpo que você enviaria para fazer o pedido.
| Nome | Tipo | Significado |
|---|---|---|
productObrigatório | string | Um de unlimited, residential, isp, datacenter. |
quantityObrigatório | integer | Quanto pedir: dias para unlimited (1~365), GB para residential (5~5,000), quantidade de IPs para isp (1~1,000) ou datacenter (5~5,000). |
concurrencyOpcional | integer | Só para unlimited. Escolha um de 200, 500, 1000, 2000. |
bandwidthOpcional | integer | Só para unlimited, em Mbps. Um de 100, 200, 500, 1000. |
monthsOpcional | integer | Só para isp e datacenter. Um de 1, 3, 6, 12. |
countryOpcional | string | Só para isp e datacenter. Um código de país de duas letras, como jp. Os valores aceitos estão em /countries. |
curl -X POST https://proxyworld.shop/api/v1/quote \
-H "Content-Type: application/json" \
-d '{"product":"unlimited","quantity":30,"concurrency":1000,"bandwidth":200}'{
"product": "unlimited",
"quantity": 30,
"unit_price_usd": 8.05,
"unit": "day",
"total_usd": 241.5
}Fazer um pedido
POST/api/v1/ordersExige chave de API
Desconta o total do saldo e cria o pedido. Ele começa como pending (ativando) e passa a active quando fica pronto. Um pedido que não pode ser ativado vira refunded, e tudo o que você pagou volta para o saldo. Se o saldo for insuficiente, você recebe 402.
| Nome | Tipo | Significado |
|---|---|---|
productObrigatório | string | Um de unlimited, residential, isp, datacenter. |
quantityObrigatório | integer | Quanto pedir: dias para unlimited (1~365), GB para residential (5~5,000), quantidade de IPs para isp (1~1,000) ou datacenter (5~5,000). |
concurrencyOpcional | integer | Só para unlimited. Escolha um de 200, 500, 1000, 2000. |
bandwidthOpcional | integer | Só para unlimited, em Mbps. Um de 100, 200, 500, 1000. |
monthsOpcional | integer | Só para isp e datacenter. Um de 1, 3, 6, 12. |
countryOpcional | string | Só para isp e datacenter. Um código de país de duas letras, como jp. Os valores aceitos estão em /countries. |
curl -X POST https://proxyworld.shop/api/v1/orders \
-H "Authorization: Bearer pwk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"product":"unlimited","quantity":30,"concurrency":1000,"bandwidth":200}'{
"order": {
"id": "PW-7KQ2M-X4HTD",
"product": "unlimited",
"quantity": 30,
"months": null,
"concurrency": 1000,
"bandwidth_mbps": 200,
"country": null,
"unit_price_usd": 8.05,
"total_usd": 241.5,
"status": "pending",
"created_at": "2026-10-31T09:12:44.120Z",
"updated_at": "2026-10-31T09:12:44.120Z"
},
"balance_usd": 1058.5
}Ver seus pedidos
GET/api/v1/ordersExige chave de API
Mostra até 100 pedidos, começando pelos mais recentes.
| Nome | Tipo | Significado |
|---|---|---|
statusOpcional | string | Um de pending, active, refunded. Deixe vazio para receber pedidos em qualquer status. |
curl "https://proxyworld.shop/api/v1/orders?status=pending" \ -H "Authorization: Bearer pwk_your_api_key"
{
"orders": [
{
"id": "PW-7KQ2M-X4HTD",
"product": "unlimited",
"quantity": 30,
"months": null,
"concurrency": 1000,
"bandwidth_mbps": 200,
"country": null,
"unit_price_usd": 8.05,
"total_usd": 241.5,
"status": "pending",
"created_at": "2026-10-31T09:12:44.120Z",
"updated_at": "2026-10-31T09:12:44.120Z"
}
]
}Ver um pedido
GET/api/v1/orders/{id}Exige chave de API
Retorna o pedido correspondente a um número. Útil para verificar se a ativação terminou.
| Nome | Tipo | Significado |
|---|---|---|
idObrigatório | string | O número do pedido, por exemplo PW-7KQ2M-X4HTD. |
curl https://proxyworld.shop/api/v1/orders/PW-7KQ2M-X4HTD \ -H "Authorization: Bearer pwk_your_api_key"
{
"order": {
"id": "PW-7KQ2M-X4HTD",
"product": "unlimited",
"quantity": 30,
"months": null,
"concurrency": 1000,
"bandwidth_mbps": 200,
"country": null,
"unit_price_usd": 8.05,
"total_usd": 241.5,
"status": "active",
"created_at": "2026-10-31T09:12:44.120Z",
"updated_at": "2026-10-31T09:40:02.511Z"
}
}Montar um usuário de proxy
GET/api/v1/proxy-userExige chave de API
Retorna um usuário de proxy com as suas opções, além de URLs HTTP e SOCKS5 prontas para colar. Se você não enviar session, o IP muda a cada requisição.
| Nome | Tipo | Significado |
|---|---|---|
productOpcional | string | Um de unlimited, residential, isp, datacenter. Se omitido, usa unlimited. |
countryOpcional | string | Um código de país de duas letras, por exemplo jp. |
cityOpcional | string | Um valor de cidade listado em /countries, por exemplo tokyo. Envie country junto. |
sessionOpcional | string | 1~32 letras e números. Requisições com a mesma session usam o mesmo IP. |
ttlOpcional | integer | Por quanto tempo a sessão mantém o IP, de 1~60 minutos. Se omitido, 30 minutos. |
curl "https://proxyworld.shop/api/v1/proxy-user?product=residential&country=jp&city=tokyo&session=job42&ttl=30" \ -H "Authorization: Bearer pwk_your_api_key"
{
"username": "pwexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30",
"password": "your_password",
"http": "http://pwexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30:your_password@gate.proxyworld.shop:6100",
"socks5": "socks5h://pwexample1-zone-res-cc-jp-city-tokyo-sid-job42-ttl-30:your_password@gate.proxyworld.shop:6200"
}Exemplo completo
Um único script que obtém uma cotação, faz o pedido com o saldo e depois conecta por um IP no Japão.
import requests
API = "https://proxyworld.shop/api/v1"
HEAD = {"Authorization": "Bearer pwk_your_api_key"}
# 1) Check the price first
plan = {"product": "residential", "quantity": 100}
print(requests.post(f"{API}/quote", json=plan).json())
# 2) Order from your balance
r = requests.post(f"{API}/orders", json=plan, headers=HEAD)
order = r.json()["order"]
print(order["id"], order["status"])
# 3) Get a username for Japanese IPs
u = requests.get(f"{API}/proxy-user", headers=HEAD,
params={"product": "residential", "country": "jp"}).json()
proxies = {"http": u["http"], "https": u["http"]}
print(requests.get("https://ipinfo.io/json", proxies=proxies, timeout=30).json())const API = "https://proxyworld.shop/api/v1";
const HEAD = { Authorization: "Bearer pwk_your_api_key", "Content-Type": "application/json" };
// Check the balance
const acc = await fetch(`${API}/account`, { headers: HEAD }).then((r) => r.json());
console.log(acc.balance_usd);
// Order 7 days of unlimited
const res = await fetch(`${API}/orders`, {
method: "POST",
headers: HEAD,
body: JSON.stringify({ product: "unlimited", quantity: 7, concurrency: 500, bandwidth: 100 }),
});
if (res.status === 402) console.log("Top up first");
else console.log((await res.json()).order.id);Pedidos feitos pela API são tratados como os do painel e aparecem na aba Histórico com os demais. Troque pwk_your_api_key nos exemplos pela sua chave de API.