Jesteś tu pierwszy raz? Wykonaj te kroki
- 1Zarejestruj się e-mailem i hasłem albo tokenem i otwórz panel.
- 2Wygeneruj klucz API w karcie Połączenie. Pełny klucz pokazuje się tylko raz, w chwili wygenerowania, więc od razu go zapisz.
- 3Umieść klucz w nagłówku Authorization każdego zapytania, które go wymaga.
- 4Najpierw wywołaj /account, aby sprawdzić, czy klucz działa, a potem składaj zamówienia przez /orders.
Jak działa uwierzytelnianie?
Zapytania dotyczące twojego konta (account, orders, proxy-user) wymagają klucza API. Wysyłaj go w nagłówku jako Authorization: Bearer pwk_... Ceny, kraje i wyceny są dostępne dla wszystkich i można je wywołać bez klucza.
Serwery ProxyWorld nigdy nie przechowują samego klucza, tylko jego hash. Jeśli zgubisz klucz, utwórz nowy w panelu, a stary zostanie od razu zablokowany. Klucze umieszczaj tylko w kodzie po stronie serwera. Jeśli klucz trafi do kodu działającego w przeglądarce lub do publicznego repozytorium, ktoś inny może go użyć.
Authorization: Bearer pwk_your_api_key
Bazowy URL i format danych
- Bazowy URL
- https://proxyworld.shop/api/v1
- Treść zapytań i odpowiedzi
- application/json
- Kwoty
- USD jako liczba, na przykład 1058.50
- Znaczniki czasu
- ISO 8601 (UTC)
Ile wywołań mogę wykonać?
Każdy klucz API może wykonać 60 wywołań na minutę. Publiczne endpointy wywoływane bez klucza pozwalają na 60 wywołań na minutę z jednego IP. Po przekroczeniu limitu dostaniesz HTTP 429. Odczekaj około minuty i spróbuj ponownie.
Co zwraca API w razie błędu?
Dostajesz kod statusu HTTP i treść JSON z krótkim kodem błędu i wyjaśnieniem.
{
"error": {
"code": "insufficient_balance",
"message": "Your balance is too low for this order. Top up in the dashboard."
}
}| HTTP | code | Znaczenie |
|---|---|---|
| bad_requestHTTP 400Brakuje wymaganej wartości albo wysłano wartość, której ten produkt nie przyjmuje. | Brakuje wymaganej wartości albo wysłano wartość, której ten produkt nie przyjmuje. | |
| unauthorizedHTTP 401Brak klucza API albo klucz jest nieprawidłowy. | Brak klucza API albo klucz jest nieprawidłowy. | |
| insufficient_balanceHTTP 402Saldo jest niższe niż wartość zamówienia. Saldo nie zostało obciążone. | Saldo jest niższe niż wartość zamówienia. Saldo nie zostało obciążone. | |
| not_foundHTTP 404Twoje konto nie ma zamówienia o tym numerze. | Twoje konto nie ma zamówienia o tym numerze. | |
| rate_limitedHTTP 429Przekroczono dozwoloną liczbę wywołań na minutę. | Przekroczono dozwoloną liczbę wywołań na minutę. | |
| server_errorHTTP 500Serwer nie mógł dokończyć zapytania. Saldo nie zostało obciążone. | Serwer nie mógł dokończyć zapytania. Saldo nie zostało obciążone. |
Endpointy
Dane konta
GET/api/v1/accountWymaga klucza API
Zwraca sposób logowania (login: email lub token), e-mail, saldo, host i porty proxy, nazwę użytkownika i hasło proxy oraz dozwolone IP. Dla kont założonych tokenem email ma wartość 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"
]
}Produkty i ceny
GET/api/v1/productsDziała bez klucza
Zwraca zakres zamówienia dla każdego produktu, cenę jednostkową dla każdego progu ilości i rabaty za okres. Korzysta z tej samej tabeli cen co strona cennika.
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",
"...": "..."
}
]
}Kraje i miasta
GET/api/v1/countriesDziała bez klucza
Zwraca kraje dostępne dla każdego produktu wraz z wartościami miast do opcji -city- w nazwie użytkownika.
| Nazwa | Typ | Znaczenie |
|---|---|---|
productOpcjonalne | string | Jedno z: unlimited, residential, isp, datacenter. Domyślnie 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"
}
]
}
]
}Wycena
POST/api/v1/quoteDziała bez klucza
Oblicza wartość zamówienia bez obciążania salda. Wyślij tę samą treść, którą wysłałbyś przy składaniu zamówienia.
| Nazwa | Typ | Znaczenie |
|---|---|---|
productWymagane | string | Jedno z: unlimited, residential, isp, datacenter. |
quantityWymagane | integer | Ilość do zamówienia: dni dla unlimited (1~365), GB dla residential (5~5,000), liczba IP dla isp (1~1,000) lub datacenter (5~5,000). |
concurrencyOpcjonalne | integer | Tylko unlimited. Jedno z: 200, 500, 1000, 2000. |
bandwidthOpcjonalne | integer | Tylko unlimited, w Mbps. Jedno z: 100, 200, 500, 1000. |
monthsOpcjonalne | integer | Tylko isp i datacenter. Jedno z: 1, 3, 6, 12. |
countryOpcjonalne | string | Tylko isp i datacenter. Dwuliterowy kod kraju, np. jp. Akceptowane wartości są w /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
}Złóż zamówienie
POST/api/v1/ordersWymaga klucza API
Pobiera kwotę z salda i tworzy zamówienie. Zamówienie ma najpierw status pending (aktywacja), a po uruchomieniu active. Zamówienie, którego nie da się aktywować, dostaje status refunded, a cała zapłacona kwota wraca na saldo. Przy zbyt niskim saldzie dostaniesz 402.
| Nazwa | Typ | Znaczenie |
|---|---|---|
productWymagane | string | Jedno z: unlimited, residential, isp, datacenter. |
quantityWymagane | integer | Ilość do zamówienia: dni dla unlimited (1~365), GB dla residential (5~5,000), liczba IP dla isp (1~1,000) lub datacenter (5~5,000). |
concurrencyOpcjonalne | integer | Tylko unlimited. Jedno z: 200, 500, 1000, 2000. |
bandwidthOpcjonalne | integer | Tylko unlimited, w Mbps. Jedno z: 100, 200, 500, 1000. |
monthsOpcjonalne | integer | Tylko isp i datacenter. Jedno z: 1, 3, 6, 12. |
countryOpcjonalne | string | Tylko isp i datacenter. Dwuliterowy kod kraju, np. jp. Akceptowane wartości są w /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
}Lista zamówień
GET/api/v1/ordersWymaga klucza API
Pokazuje do 100 zamówień, od najnowszych.
| Nazwa | Typ | Znaczenie |
|---|---|---|
statusOpcjonalne | string | Jedno z: pending, active, refunded. Pomiń, aby pobrać zamówienia o dowolnym statusie. |
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"
}
]
}Jedno zamówienie
GET/api/v1/orders/{id}Wymaga klucza API
Zwraca zamówienie o podanym numerze. Przydaje się do sprawdzania, czy aktywacja się zakończyła.
| Nazwa | Typ | Znaczenie |
|---|---|---|
idWymagane | string | Numer zamówienia, na przykład 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"
}
}Zbuduj nazwę użytkownika proxy
GET/api/v1/proxy-userWymaga klucza API
Zwraca nazwę użytkownika proxy z dołączonymi opcjami oraz adresy URL HTTP i SOCKS5 do wklejenia bez zmian. Jeśli nie wyślesz session, IP zmienia się przy każdym zapytaniu.
| Nazwa | Typ | Znaczenie |
|---|---|---|
productOpcjonalne | string | Jedno z: unlimited, residential, isp, datacenter. Domyślnie unlimited. |
countryOpcjonalne | string | Dwuliterowy kod kraju, na przykład jp. |
cityOpcjonalne | string | Wartość miasta z /countries, na przykład tokyo. Wyślij razem z country. |
sessionOpcjonalne | string | Od 1 do 32 liter i cyfr. Zapytania z tą samą sesją używają tego samego IP. |
ttlOpcjonalne | integer | Jak długo sesja trzyma IP, od 1 do 60 minut. Domyślnie 30 minut. |
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"
}Pełny przykład
Jeden skrypt, który pobiera wycenę, zamawia z salda, a potem łączy się przez IP w Japonii.
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);Zamówienia złożone przez API są obsługiwane tak samo jak zamówienia z panelu i pojawiają się w karcie Historia razem z pozostałymi. W przykładach zamień pwk_your_api_key na swój klucz API.