Proxy Store
Query NexIP standard proxy products, buy proxies, check orders, and renew them; for short-term proxies, read plans and countries, buy quota, and pull proxies by country. Purchases and renewals take only business parameters; the server calculates the current price and charges the account balance directly.
The IDs are not interchangeable: purchases use productId from /ip/products; renewal items are local proxy IDs (the id from the proxy list); the short-term pull nexIpId is the short-term order ID. For the conventions shared by all service endpoints, see Service and authentication.
Showing 8 of 8 endpoints
/ip/productsList proxy products
Queries the standard proxy products currently on sale and their period prices; productId is used for /ip/buy.
Request parameters
None
Notes
- Order total = discountPrice × quantity × duration ÷ days, rounded up to 2 decimal places; /ip/buy pre-checks using this rule.
- This endpoint accepts no query parameters; extra fields return -1100.
Response fields
| Field | Type | Description |
|---|---|---|
contextId | string | Sign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests |
data | object[] | Product list |
data[].productId | string | Product ID, submitted as-is when buying |
data[].type | string | Proxy type: native, broadcast, datacenter, mixed |
data[].name | string | Product name |
data[].countryCode | string | Country code |
data[].countryName | string | Country name |
data[].locationCode | string | Region code |
data[].locationName | string | Region name |
data[].days | number | Number of days in the pricing period, not the purchase quantity |
data[].price | number | Upstream period price |
data[].discountPrice | number | Actual selling price for one period of days |
data[].currency | string | Currency |
Response example
{
"code": 0,
"msg": "成功",
"data": [
{
"productId": "us-native-lax",
"type": "native",
"name": "美国原生静态 IP",
"countryCode": "US",
"countryName": "美国",
"locationCode": "LAX",
"locationName": "洛杉矶",
"days": 30,
"price": 4.5,
"discountPrice": 5.4,
"currency": "USDT"
}
],
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
/ip/buyBuy proxies
Buys standard proxies by product, quantity, and days and charges the account balance; a successful order only means it was accepted, and proxies are delivered asynchronously.
Request parameters
| Field | Type | Required | Description |
|---|---|---|---|
productId | string | Required | Product ID, from /ip/products |
quantity | number | Required | Number of proxies, positive integer |
duration | number | Required | Number of days to buy, positive integer |
Notes
- After business parameter validation, the request is submitted once and the server calculates and charges the current price. The client does not pre-check prices, stock, or plans; the server validates permission and balance.
- Not retried automatically after submission; on a timeout or unclear result, check /ip/orders, /proxy/list, and /billing/trades first instead of buying again.
- Returns -1100 if an identical purchase under the same sign-in and team is still processing; also returns -1100 if no team is selected.
- Delivery completes in the background; empty resources before delivery does not mean failure. Delivered proxies are written to /proxy/list (source=BUY).
Response fields
| Field | Type | Description |
|---|---|---|
contextId | string | Sign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests |
data | object | The new order, state is usually PROCESSING |
data.id | number | Local order ID; for short-term orders, used as nexIpId when pulling |
data.orderNo | string | Order number |
data.userId | number | Purchasing user ID |
data.teamId | number | ID of the team that owns the resources |
data.action | string | Order action: buy purchase, renew renewal |
data.productType | string | Order type: GENERAL standard proxy, SNAP short-term quota; may be empty for older standard orders |
data.type | string | Proxy product type |
data.countryCode | string | Country code |
data.locationCode | string | Region code |
data.duration | number | Days purchased or renewed |
data.quantity | number | Requested quantity; total quota for short-term orders |
data.quantitySuccess | number | Quantity delivered or pulled |
data.amountInput | number | Initial charged amount, USDT |
data.amountRefund | number | Refunded amount |
data.amount | number | Amount after refunds |
data.state | string | Status: PROCESSING, SUCCESS, FAILED |
data.product | string | Product snapshot as JSON text |
data.resources | string | Delivered resources as JSON text, including proxy hosts and plaintext credentials, may be null |
data.remark | string | Order note, e.g. promotional gift |
data.createdAt | string | Creation time |
data.updatedAt | string | Update time |
Response example
{
"code": 0,
"msg": "成功",
"data": {
"id": 9001,
"orderNo": "NIP20261023000001",
"userId": 1001,
"teamId": 2001,
"action": "buy",
"productType": "GENERAL",
"type": "native",
"countryCode": "US",
"locationCode": "LAX",
"duration": 30,
"quantity": 2,
"quantitySuccess": 0,
"amountInput": 10.8,
"amountRefund": 0,
"amount": 10.8,
"state": "PROCESSING",
"product": "{\"productId\":\"us-native-lax\",\"days\":30,\"discountPrice\":5.4}",
"resources": null,
"remark": null,
"createdAt": "2026-10-23 10:00:00",
"updatedAt": "2026-10-23 10:00:00"
},
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
/ip/ordersList proxy orders
Pages through standard proxy orders and short-term quota records, for checking delivery, renewals, and remaining quota.
Request parameters
| Field | Type | Required | Description |
|---|---|---|---|
page | number | Optional | Page number, default 1 |
size | number | Optional | Page size, default 20, max 1000 |
Notes
- For GENERAL, PROCESSING means awaiting delivery; for SNAP, PROCESSING means quota is still available to pull, with remaining quota = quantity - quantitySuccess.
- There is no PARTIAL_SUCCESS status; determine partial delivery from quantitySuccess, amountRefund, and resources.
- This endpoint does not accept keyword; resources contains plaintext proxy credentials, so do not forward it to untrusted callers.
Response fields
| Field | Type | Description |
|---|---|---|
contextId | string | Sign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests |
data.count | number | Total number of matching records |
data.size | number | Page size, echoes the request value |
data.page | number | Current page number, echoes the request value |
data.total | number | Total number of pages |
data.data | object[] | Records on the current page |
data.data[].id | number | Local order ID; for short-term orders, used as nexIpId when pulling |
data.data[].orderNo | string | Order number |
data.data[].userId | number | Purchasing user ID |
data.data[].teamId | number | ID of the team that owns the resources |
data.data[].action | string | Order action: buy purchase, renew renewal |
data.data[].productType | string | Order type: GENERAL standard proxy, SNAP short-term quota; may be empty for older standard orders |
data.data[].type | string | Proxy product type |
data.data[].countryCode | string | Country code |
data.data[].locationCode | string | Region code |
data.data[].duration | number | Days purchased or renewed |
data.data[].quantity | number | Requested quantity; total quota for short-term orders |
data.data[].quantitySuccess | number | Quantity delivered or pulled |
data.data[].amountInput | number | Initial charged amount, USDT |
data.data[].amountRefund | number | Refunded amount |
data.data[].amount | number | Amount after refunds |
data.data[].state | string | Status: PROCESSING, SUCCESS, FAILED |
data.data[].product | string | Product snapshot as JSON text |
data.data[].resources | string | Delivered resources as JSON text, including proxy hosts and plaintext credentials, may be null |
data.data[].remark | string | Order note, e.g. promotional gift |
data.data[].createdAt | string | Creation time |
data.data[].updatedAt | string | Update time |
Response example
{
"code": 0,
"msg": "成功",
"data": {
"count": 1,
"size": 20,
"page": 1,
"total": 1,
"data": [
{
"id": 9001,
"orderNo": "NIP20261023000001",
"userId": 1001,
"teamId": 2001,
"action": "buy",
"productType": "GENERAL",
"type": "native",
"countryCode": "US",
"locationCode": "LAX",
"duration": 30,
"quantity": 2,
"quantitySuccess": 2,
"amountInput": 10.8,
"amountRefund": 0,
"amount": 10.8,
"state": "SUCCESS",
"product": "{\"productId\":\"us-native-lax\",\"days\":30,\"discountPrice\":5.4}",
"resources": "[{\"type\":\"native\",\"status\":\"SUCCESS\",\"proxyId\":\"up-3001\",\"countryCode\":\"US\",\"proxy\":{\"host\":\"198.51.100.30\",\"port\":\"1080\",\"username\":\"proxy-user\",\"password\":\"proxy-password\",\"protocol\":\"SOCKS5\",\"expireAt\":\"2026-11-22 10:00:00\"}}]",
"remark": null,
"createdAt": "2026-10-23 10:00:00",
"updatedAt": "2026-10-23 10:00:00"
}
]
},
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
/ip/renewRenew proxies
Renews the specified local proxies directly and charges the account balance; the server validates resource ownership, renewal eligibility, and the actual fee.
Request parameters
| Field | Type | Required | Description |
|---|---|---|---|
items | number[] | Required | Local proxy IDs (id from /proxy/list), 1 to 1000 with no duplicates; not order IDs |
duration | number | Required | Renewal days, positive integer |
Notes
- After business parameter validation, the request is submitted once and the server calculates and charges the current price. The client does not pre-check prices, stock, or plans; the server validates permission and balance.
- Not retried automatically after submission; on a timeout or unclear result, check /ip/orders, /proxy/list, and /billing/trades first instead of buying again.
- Returns -1100 if an identical purchase under the same sign-in and team is still processing; also returns -1100 if no team is selected.
- No local renewal quote is performed. The server validates resources and the renewal scope; business errors pass through unchanged.
- Multiple original order groups are not guaranteed to succeed or fail together; do not resubmit the whole batch after a failure or timeout.
Response fields
| Field | Type | Description |
|---|---|---|
contextId | string | Sign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests |
data | object[] | Renewal orders, one per original order group, with the same fields as /ip/orders entries |
data[].id | number | Renewal order ID |
data[].action | string | Always renew |
data[].state | string | Order status |
data[].amount | number | Amount charged for this group |
Response example
{
"code": 0,
"msg": "成功",
"data": [
{
"id": 9003,
"orderNo": "NIP20261023000003",
"userId": 1001,
"teamId": 2001,
"action": "renew",
"productType": "GENERAL",
"type": "native",
"countryCode": "US",
"locationCode": "LAX",
"duration": 30,
"quantity": 1,
"quantitySuccess": 0,
"amountInput": 5.4,
"amountRefund": 0,
"amount": 5.4,
"state": "PROCESSING",
"product": "{\"productId\":\"us-native-lax\",\"days\":30,\"discountPrice\":5.4}",
"resources": null,
"remark": null,
"createdAt": "2026-10-23 10:00:00",
"updatedAt": "2026-10-23 10:00:00"
}
],
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
/ip/snap/plansList short-term proxy plans
Reads the current short-term proxy quota plans; when buying, num must equal one of their ipNum values.
Request parameters
None
Notes
- Prices follow the configuration at each read; do not cache example prices.
Response fields
| Field | Type | Description |
|---|---|---|
contextId | string | Sign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests |
data | object[] | Plan list, from the app config NEX_SNAP_IP_COMBO |
data[].ipNum | number | Pull quota included in the plan |
data[].price | number | string | Plan total price, USDT |
Response example
{
"code": 0,
"msg": "成功",
"data": [
{
"ipNum": 100,
"price": "21.600"
},
{
"ipNum": 500,
"price": "98.000"
}
],
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
/ip/snap/productsList short-term proxy countries
Lists the countries available for pulling short-term proxies; use code as-is when pulling.
Request parameters
None
Notes
- The list shows only supported countries, not live inventory.
Response fields
| Field | Type | Description |
|---|---|---|
contextId | string | Sign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests |
data | object[] | Country list |
data[].code | string | Two-letter country code, used as countryCode for /ip/snap/pull |
data[].name | string | Country name in English |
data[].zhName | string | Country name in Chinese |
data[].flag | string | Flag icon |
Response example
{
"code": 0,
"msg": "成功",
"data": [
{
"code": "US",
"name": "United States",
"zhName": "美国",
"flag": "🇺🇸"
}
],
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
/ip/snap/buyBuy short-term proxy quota
Buys short-term proxy quota by plan and charges the account balance; proxies are not generated immediately and must be pulled in batches by country.
Request parameters
| Field | Type | Required | Description |
|---|---|---|---|
num | number | Required | Plan quota, must equal the ipNum of an entry in /ip/snap/plans |
Notes
- After business parameter validation, the request is submitted once and the server calculates and charges the current price. The client does not pre-check prices, stock, or plans; the server validates permission and balance.
- Not retried automatically after submission; on a timeout or unclear result, check /ip/orders and /billing/trades first instead of buying again.
- Returns -1100 if an identical purchase under the same sign-in and team is still processing; also returns -1100 if no team is selected.
- The server validates plan availability; server business errors pass through unchanged.
Response fields
| Field | Type | Description |
|---|---|---|
contextId | string | Sign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests |
data | object | The new short-term order, productType is SNAP |
data.id | number | Local order ID, used as nexIpId when pulling |
data.quantity | number | Total quota |
data.quantitySuccess | number | Quantity pulled, initially 0 |
data.state | string | Order status, initially PROCESSING |
Response example
{
"code": 0,
"msg": "成功",
"data": {
"id": 9002,
"orderNo": "NIP20261023000002",
"userId": 1001,
"teamId": 2001,
"action": "buy",
"productType": "SNAP",
"type": null,
"countryCode": null,
"locationCode": null,
"duration": null,
"quantity": 100,
"quantitySuccess": 0,
"amountInput": 21.6,
"amountRefund": 0,
"amount": 21.6,
"state": "PROCESSING",
"product": null,
"resources": null,
"remark": null,
"createdAt": "2026-10-23 10:00:00",
"updatedAt": "2026-10-23 10:00:00"
},
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
/ip/snap/pullPull short-term proxies
Pulls proxies by country from purchased short-term quota; consumes quota and is not a read-only query.
Request parameters
| Field | Type | Required | Description |
|---|---|---|---|
nexIpId | number | Required | Local ID of the short-term order, from /ip/snap/buy or /ip/orders |
countryCode | string | Required | Two-letter uppercase country code, the code from /ip/snap/products |
num | number | Required | Quantity to pull in this call, a positive integer not exceeding the remaining quota |
Notes
- Extracted proxies are written to the proxy list by the server and accumulated in the order's resources; select them by ID from /proxy/list.
- Extraction consumes quota and is not retried automatically; on timeout or an unclear result, refresh /ip/orders and check quantitySuccess first instead of extracting again.
- When the quota is insufficient, the server returns -1208; the response contains proxy credentials in plain text.
Response fields
| Field | Type | Description |
|---|---|---|
contextId | string | Sign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests |
data | object[] | Proxies pulled in this call |
data[].host | string | Proxy host |
data[].port | string | number | Proxy port |
data[].username | string | Proxy authentication username |
data[].password | string | Proxy authentication password (plaintext) |
data[].protocol | string | Proxy protocol |
data[].expireAt | string | Expiration time |
Response example
{
"code": 0,
"msg": "成功",
"data": [
{
"host": "us.snap.example.net",
"port": 20001,
"username": "snap-user",
"password": "snap-password",
"protocol": "SOCKS5",
"expireAt": "2026-10-23 10:30:00"
}
],
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}