ProxyApp API
Order residential proxy packages, list credentials, generate targeted proxies, extend subscriptions, and top up bandwidth. Authenticated requests use the same API key as SMSPool.
Authentication
Base URL: https://www.proxyapp.net/api
Get your key from SMSPool settings.
Send it as a query/body field named key, or as a Bearer token.
JSON bodies are accepted on POST endpoints.
Authorization: Bearer YOUR_API_KEY curl "https://www.proxyapp.net/api/balance?key=YOUR_API_KEY"
Errors
Failed responses use HTTP 400, 401, 404, or 429 and always include
{"success":0,"message":"..."}. HTML is stripped from messages so they are safe to show as-is.
Proxy formats & targeting
The host and port are shared. Each package has its own username (the unique identifier) and password. Targeting is appended to the password:
password-country-US-region-NY-city-newyork-session-Ab15CdEfgHijklm
Formats: ip:port:user:pass, user:pass:ip:port,
ip:port@user:pass, user:pass@ip:port.
GET /api/packages Public
Returns every plan you can order, including bandwidth, price, and the effective rate per GB.
curl "https://www.proxyapp.net/api/packages"
{
"success": 1,
"packages": [
{
"id": 3,
"name": "Growth",
"gb": 25,
"price": 55,
"rate_per_gb": 2.2,
"length_days": 31
}
]
}
POST /api/order API key
Charges your SMSPool balance and creates a new proxy package. Existing packages stay active. Check the blocklist endpoint before ordering if you care about a specific target domain.
| Parameter | Type | Required | Description |
|---|---|---|---|
package |
int | Yes | Package id from /api/packages |
coupon |
string | No | Optional coupon code |
curl -X POST "https://www.proxyapp.net/api/order" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d "package=3"
{
"success": 1,
"message": "Package purchased successfully.",
"proxy": {
"identifier": "SojSBfptwh",
"host": "104.16.0.1",
"port": 8000,
"username": "SojSBfptwh",
"password": "xK91mPq2Ab",
"expires_at": "2026-09-23 22:01:52",
"is_active": 1,
"package": "Growth",
"package_gb": 25
}
}
GET /api/proxies API key
Returns every package on the account. Usage numbers come from cache unless you pass live=1 (slower, one provider lookup per package).
| Parameter | Type | Required | Description |
|---|---|---|---|
live |
int | No | Set to 1 to refresh usage from the provider |
curl "https://www.proxyapp.net/api/proxies" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"success": 1,
"count": 2,
"proxies": [
{
"identifier": "SojSBfptwh",
"username": "SojSBfptwh",
"is_active": 1,
"package": "Growth",
"traffic_balance_formatted": "18.59 GB"
}
]
}
GET /api/proxy API key
Looks up a package by its unique identifier (the proxy username) and returns live credentials, expiry, and remaining data.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Package identifier, e.g. SojSBfptwh |
curl "https://www.proxyapp.net/api/proxy?id=SojSBfptwh" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"success": 1,
"proxy": {
"identifier": "SojSBfptwh",
"host": "104.16.0.1",
"port": 8000,
"username": "SojSBfptwh",
"password": "xK91mPq2Ab",
"status": "ACTIVE",
"expires_at": "2026-09-23 22:01:52",
"is_active": 1,
"traffic_balance_formatted": "18.59 GB",
"extend_cost": 20.45
}
}
POST /api/generate API key
Builds one or more connection strings for a package. Country, region, and city are appended to the password. Sticky sessions keep the same IP for about 5 minutes.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Package identifier |
country |
string | No | ISO country code from /api/locations |
region |
string | No | Region / state id |
city |
string | No | City id |
sticky |
int | No | 1 to enable a sticky session |
amount |
int | No | How many lines to generate (1–100) |
format |
string | No | 1 or ip_port_user_pass, 2 user_pass_ip_port, 3 ip_port_at_user_pass, 4 user_pass_at_ip_port |
curl -X POST "https://www.proxyapp.net/api/generate" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d "id=SojSBfptwh&country=US&sticky=1&amount=2&format=1"
{
"success": 1,
"count": 2,
"format": "ip_port_user_pass",
"proxies": [
"104.16.0.1:8000:SojSBfptwh:xK91mPq2Ab-country-US-session-Ab15Cd",
"104.16.0.1:8000:SojSBfptwh:xK91mPq2Ab-country-US-session-Xy92Zq"
]
}
POST /api/extend API key
Adds 30 days to the selected package. The charge is 50% of the remaining data at the original plan rate. Expired packages cannot be extended — order a new one instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Package identifier |
curl -X POST "https://www.proxyapp.net/api/extend" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d "id=SojSBfptwh"
{
"success": 1,
"message": "Your proxy has been extended for 30 days.",
"proxy": {
"identifier": "SojSBfptwh",
"expires_at": "2026-10-23 22:01:52",
"is_active": 1
}
}
POST /api/topup API key
Adds more data to an existing package without changing credentials or expiration. Choose a plan from /api/packages — the listed GB is added on top of whatever is still remaining. Expired packages cannot be topped up.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Package identifier |
package |
int | Yes | Package id from /api/packages |
coupon |
string | No | Optional coupon code |
curl -X POST "https://www.proxyapp.net/api/topup" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d "id=SojSBfptwh&package=3"
{
"success": 1,
"message": "Added 25 GB to this proxy.",
"gb_added": 25,
"cost": 55,
"proxy": {
"identifier": "SojSBfptwh",
"package": "Growth",
"package_gb": 50,
"traffic_balance_formatted": "43.59 GB",
"expires_at": "2026-09-23 22:01:52"
}
}
POST /api/password API key
Generates a new random password for that package only. Other packages are unchanged.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Package identifier |
curl -X POST "https://www.proxyapp.net/api/password" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d "id=SojSBfptwh"
{
"success": 1,
"message": "Proxy password updated.",
"identifier": "SojSBfptwh",
"username": "SojSBfptwh",
"password": "nR84tLq0Pm"
}
GET /api/history API key
Returns recent package purchases and top-ups for the account, newest first. Each row includes type: purchase or topup.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit |
int | No | Max rows to return (1–500, default 50) |
curl "https://www.proxyapp.net/api/history?limit=20" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"success": 1,
"count": 2,
"purchases": [
{
"id": 1843,
"identifier": "SojSBfptwh",
"type": "topup",
"package": "Growth",
"gb": 25,
"cost": 55,
"date": "2026-08-24 09:12:04"
},
{
"id": 1842,
"identifier": "SojSBfptwh",
"type": "purchase",
"package": "Growth",
"gb": 25,
"cost": 55,
"date": "2026-08-23 22:01:52"
}
]
}
GET /api/balance API key
Returns the current SMSPool balance used to pay for proxy packages.
curl "https://www.proxyapp.net/api/balance" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"success": 1,
"balance": 120.5
}
GET /api/locations Public
Lists countries, regions, or cities you can pass to /api/generate.
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
string | Yes | countries, regions, or cities |
country |
string | No | Required for regions and usually for cities |
region |
string | No | Optional region filter for cities |
curl "https://www.proxyapp.net/api/locations?type=regions&country=US"
{
"success": 1,
"type": "regions",
"data": [
{ "id": "NY", "name": "New York" }
]
}
GET /api/blocklist Public
Checks whether a domain is blocked on the network. Use this before you buy a package for a specific target.
| Parameter | Type | Required | Description |
|---|---|---|---|
domain |
string | Yes | Domain or full URL |
curl "https://www.proxyapp.net/api/blocklist?domain=example.com"
{
"success": 1,
"blocked": 0,
"domain": "example.com",
"matched_rule": null,
"message": "This domain is not currently in the blocklist."
}