ProxyWorld API

대시보드에서 하던 일을 코드에서도 할 수 있어요. 잔액을 보고, 가격을 확인하고, 잔액으로 주문하고, 옵션을 넣은 프록시 사용자 이름을 받는 것까지 REST API 하나로 이어져요.

처음이라면 이 순서로 해 보세요

  1. 1이메일과 비밀번호, 또는 토큰으로 가입하고 대시보드에 들어가요.
  2. 2접속 설정 탭에서 API 키를 발급해요. 키 전체는 발급하는 순간 한 번만 보이니, 그 자리에서 바로 저장해 두세요.
  3. 3키가 필요한 요청에는 매번 Authorization 헤더에 키를 담아 보내요.
  4. 4먼저 /account를 호출해서 키가 제대로 통하는지 보고, 이어서 /orders로 주문을 넣어요.

인증은 어떻게 하나요?

내 계정 정보를 다루는 요청(account, orders, proxy-user)에는 API 키가 필요해요. 헤더에 Authorization: Bearer pwk_... 형태로 넣어 주세요. 가격, 나라 목록, 견적은 누구나 볼 수 있는 정보라서 키 없이 호출해도 돼요.

키 원문은 ProxyWorld 서버에 저장되지 않고, 해시 값만 남아요. 키를 잃어버렸다면 대시보드에서 새 키를 만들면 되고, 이때 예전 키는 곧바로 막혀요. 키는 서버 쪽 코드에만 넣어 주세요. 브라우저에서 돌아가는 코드나 공개 저장소에 올리면 다른 사람이 쓸 수 있어요.

HTTP header
Authorization: Bearer pwk_your_api_key

기본 주소와 데이터 형식

기본 주소
https://proxyworld.shop/api/v1
요청과 응답 본문
application/json
금액
USD 숫자(예: 1058.50)
시각
ISO 8601 (UTC)

호출 횟수에 제한이 있나요?

API 키 하나당 1분에 60번까지 호출할 수 있어요. 키 없이 부르는 공개 주소는 IP 하나당 1분에 60번이에요. 이 횟수를 넘으면 HTTP 429가 돌아오니, 1분 정도 기다렸다가 다시 보내 주세요.

오류가 나면 어떤 응답이 오나요?

HTTP 상태 코드가 오고, 본문에는 짧은 오류 코드와 설명이 JSON으로 담겨 있어요.

예시
{
  "error": {
    "code": "insufficient_balance",
    "message": "Your balance is too low for this order. Top up in the dashboard."
  }
}
code
bad_requestHTTP 400꼭 필요한 값이 빠졌거나, 이 상품에서 받지 않는 값이 들어왔어요.
unauthorizedHTTP 401API 키가 빠졌거나 올바른 키가 아니에요.
insufficient_balanceHTTP 402주문 금액보다 잔액이 적어요. 잔액에서 빠져나간 돈은 없어요.
not_foundHTTP 404이 번호로 된 주문이 내 계정에 없어요.
rate_limitedHTTP 4291분에 보낼 수 있는 횟수를 넘었어요.
server_errorHTTP 500서버에서 요청을 끝내지 못했어요. 잔액에서 빠져나간 돈은 없어요.

엔드포인트

내 계정 보기

GET/api/v1/accountAPI 키 필요

가입 방식(login: email 또는 token)과 이메일, 잔액, 프록시 호스트와 포트, 프록시 사용자 이름과 비밀번호, 허용 IP 목록을 알려줘요. 토큰으로 가입한 계정은 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"
  ]
}

상품과 가격 보기

GET/api/v1/products키 없이 사용

상품별 주문 가능 범위, 수량 구간에 따른 단가, 기간 할인율을 알려줘요. 요금 페이지와 똑같은 가격표를 써요.

요청
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",
      "...": "..."
    }
  ]
}

나라와 도시 목록

GET/api/v1/countries키 없이 사용

상품마다 고를 수 있는 나라와, 사용자 이름의 -city- 옵션에 넣을 도시 값을 알려줘요.

이름의미
product선택unlimited, residential, isp, datacenter 가운데 하나예요. 보내지 않으면 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"
        }
      ]
    }
  ]
}

견적 받기

POST/api/v1/quote키 없이 사용

잔액은 건드리지 않고 주문 금액만 계산해 줘요. 주문할 때 보낼 본문을 그대로 보내면 돼요.

이름의미
product필수unlimited, residential, isp, datacenter 가운데 하나예요.
quantity필수주문 수량이에요. 무제한은 일수(1~365), 주거용은 GB(5~5,000), 고정 ISP는 IP 개수(1~1,000), 데이터센터는 IP 개수(5~5,000)로 적어요.
concurrency선택무제한 상품에서만 써요. 200, 500, 1000, 2000 가운데 하나를 골라요.
bandwidth선택무제한 상품에서만 써요. Mbps 기준으로 100, 200, 500, 1000 가운데 하나예요.
months선택고정 ISP와 데이터센터에서만 써요. 1, 3, 6, 12 가운데 하나예요.
country선택고정 ISP와 데이터센터에서만 써요. 영문 두 글자 나라 코드(예: jp)로 적고, 받을 수 있는 값은 /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
}

주문하기

POST/api/v1/ordersAPI 키 필요

잔액에서 주문 금액을 빼고 주문을 만들어요. 처음에는 pending(개통 진행) 상태이고, 준비가 끝나면 active로 바뀌어요. 개통하지 못한 주문은 refunded가 되고, 낸 금액이 전부 잔액으로 돌아와요. 잔액이 부족하면 402를 돌려줘요.

이름의미
product필수unlimited, residential, isp, datacenter 가운데 하나예요.
quantity필수주문 수량이에요. 무제한은 일수(1~365), 주거용은 GB(5~5,000), 고정 ISP는 IP 개수(1~1,000), 데이터센터는 IP 개수(5~5,000)로 적어요.
concurrency선택무제한 상품에서만 써요. 200, 500, 1000, 2000 가운데 하나를 골라요.
bandwidth선택무제한 상품에서만 써요. Mbps 기준으로 100, 200, 500, 1000 가운데 하나예요.
months선택고정 ISP와 데이터센터에서만 써요. 1, 3, 6, 12 가운데 하나예요.
country선택고정 ISP와 데이터센터에서만 써요. 영문 두 글자 나라 코드(예: jp)로 적고, 받을 수 있는 값은 /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
}

주문 목록 보기

GET/api/v1/ordersAPI 키 필요

가장 최근 주문부터 100건까지 보여줘요.

이름의미
status선택pending, active, refunded 가운데 하나예요. 비워 두면 상태와 관계없이 전부 나와요.
요청
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"
    }
  ]
}

주문 한 건 보기

GET/api/v1/orders/{id}API 키 필요

주문 번호에 해당하는 주문 하나를 알려줘요. 개통이 끝났는지 볼 때 쓰면 편해요.

이름의미
id필수조회할 주문 번호예요(예: 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"
  }
}

프록시 사용자 이름 만들기

GET/api/v1/proxy-userAPI 키 필요

옵션이 붙은 프록시 사용자 이름과, 그대로 붙여 넣을 수 있는 HTTP, SOCKS5 주소를 알려줘요. session을 보내지 않으면 요청할 때마다 IP가 달라져요.

이름의미
product선택unlimited, residential, isp, datacenter 가운데 하나예요. 보내지 않으면 unlimited로 봐요.
country선택영문 두 글자 나라 코드예요(예: jp).
city선택/countries에 나오는 도시 값이에요(예: tokyo). country도 함께 보내야 해요.
session선택영문자와 숫자로 1~32자예요. session이 같은 요청끼리는 같은 IP를 써요.
ttl선택세션 IP를 붙잡아 두는 시간이에요. 1~60분 사이로 적고, 비워 두면 30분이에요.
요청
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"
}

처음부터 끝까지 예시

견적을 받고, 잔액으로 주문하고, 일본 IP로 접속하는 과정을 스크립트 하나로 묶었어요.

Python (requests)
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())
Node.js 18+
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);

API로 넣은 주문도 대시보드에서 넣은 주문과 똑같이 처리되고, 내역 탭에 함께 쌓여요. 예시에 있는 pwk_your_api_key는 내 API 키로 바꿔서 써 주세요.

ProxyWorld를 내 코드에 연결해 보세요

이메일이나 토큰으로 가입하고 대시보드에서 API 키를 만들면, 그때부터 바로 호출할 수 있어요.