Proxy API docs, automate orders and access info
SMMProxy’s developer API provides balance checks, price checks, proxy orders, and connection info via HTTPS REST. Create an API key in the dashboard and send it as a Bearer token in the Authorization header.
Get started
- Create an account and complete your first top-up. API keys require at least one successful top-up.
- Create a new API key in your dashboard. Keys are only shown once when generated, so save it immediately.
- Include the Authorization: Bearer key in all requests. Responses are in JSON and always include an 'ok' field.
Default Address: https://smmproxy.io/api/v1
curl -H "Authorization: Bearer smpk_YOUR_KEY" https://smmproxy.io/api/v1/balance
GET/api/v1/balance
Check Balance
Response Example
{ "ok": true, "balance": "48.20", "currency": "USD" }GET/api/v1/products
Check Products/Countries/Prices
Response Example
{ "ok": true, "periods": ["1w","2w","1m","2m","3m","6m","9m","12m"],
"products": [{ "product": "isp", "unit": "ip", "countries": [{ "country": "us", "monthly": "1.29" }] }] }POST/api/v1/orders
Proxy Order (Pay from Balance)
Request Body
{ "product": "isp", "country": "us", "quantity": 5, "period": "1m" }Response Example
{ "ok": true, "order": { "id": "OR-7K2M-Q8XD4P", "product": "isp", "country": "us",
"quantity": 5, "period": "1m", "total": "6.45", "expires_at": "2026-11-21T09:00:00.000Z" } }GET/api/v1/orders
Order History (Last 100)
Response Example
{ "ok": true, "orders": [{ "id": "OR-7K2M-Q8XD4P", "status": "active", "total": "6.45" }] }GET/api/v1/proxies?order=OR-7K2M-Q8XD4P
Connection Info List
Response Example
{ "ok": true, "proxies": [{ "host": "198.51.100.24", "http_port": 10842, "socks5_port": 20842,
"username": "u7kq2m", "password": "Xc81pLq0Zr", "country": "us", "expires_at": "..." }] }Order Value
| Name | Format | Description |
|---|---|---|
| product | string | isp, mobile, ipv4, residential |
| country | string | 2-letter lowercase country code (us, gb, de ...) |
| quantity | integer | Number of IPs/ports, GB for residential |
| period | string | 1w 2w 1m 2m 3m 6m 9m 12m (excludes residential) |
| protocol | string | HTTP or SOCKS5 (default HTTP, both ports provided) |
Error
| HTTP | error | Meaning |
|---|---|---|
| 401 | unauthorized | Invalid or missing key. No funds deducted. |
| 400 | invalid_request | Please double-check product, country, quantity, and duration values. No funds will be deducted. |
| 402 | insufficient_balance | Insufficient balance for payment. Top up and try again. No funds will be deducted. |
| 503 | network_error | Network error during order submission. No funds deducted - you can retry shortly. |
| 429 | rate_limited | Send up to 300 times per minute. |
Python example
import requests
API = "https://smmproxy.io/api/v1"
H = {"Authorization": "Bearer smpk_YOUR_KEY"}
order = requests.post(f"{API}/orders", headers=H, json={
"product": "isp", "country": "us", "quantity": 5, "period": "1m"}).json()
if order["ok"]:
proxies = requests.get(f"{API}/proxies", headers=H, params={"order": order["order"]["id"]}).json()
for p in proxies["proxies"]:
print(f'{p["host"]}:{p["http_port"]}:{p["username"]}:{p["password"]}')Node.js example
const API = "https://smmproxy.io/api/v1";
const H = { Authorization: "Bearer smpk_YOUR_KEY", "Content-Type": "application/json" };
const r = await fetch(API + "/orders", { method: "POST", headers: H,
body: JSON.stringify({ product: "mobile", country: "gb", quantity: 1, period: "1m" }) });
const j = await r.json();
console.log(j.ok ? j.order.id : j.error);