Skip to main content

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

GET/ip/products

List proxy products

Queries the standard proxy products currently on sale and their period prices; productId is used for /ip/buy.

AuthBearer API Key

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

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobject[]Product list
data[].productIdstringProduct ID, submitted as-is when buying
data[].typestringProxy type: native, broadcast, datacenter, mixed
data[].namestringProduct name
data[].countryCodestringCountry code
data[].countryNamestringCountry name
data[].locationCodestringRegion code
data[].locationNamestringRegion name
data[].daysnumberNumber of days in the pricing period, not the purchase quantity
data[].pricenumberUpstream period price
data[].discountPricenumberActual selling price for one period of days
data[].currencystringCurrency

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"
}
POST/ip/buy

Buy 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.

AuthBearer API Key

Request parameters

FieldTypeRequiredDescription
productIdstringRequiredProduct ID, from /ip/products
quantitynumberRequiredNumber of proxies, positive integer
durationnumberRequiredNumber 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

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobjectThe new order, state is usually PROCESSING
data.idnumberLocal order ID; for short-term orders, used as nexIpId when pulling
data.orderNostringOrder number
data.userIdnumberPurchasing user ID
data.teamIdnumberID of the team that owns the resources
data.actionstringOrder action: buy purchase, renew renewal
data.productTypestringOrder type: GENERAL standard proxy, SNAP short-term quota; may be empty for older standard orders
data.typestringProxy product type
data.countryCodestringCountry code
data.locationCodestringRegion code
data.durationnumberDays purchased or renewed
data.quantitynumberRequested quantity; total quota for short-term orders
data.quantitySuccessnumberQuantity delivered or pulled
data.amountInputnumberInitial charged amount, USDT
data.amountRefundnumberRefunded amount
data.amountnumberAmount after refunds
data.statestringStatus: PROCESSING, SUCCESS, FAILED
data.productstringProduct snapshot as JSON text
data.resourcesstringDelivered resources as JSON text, including proxy hosts and plaintext credentials, may be null
data.remarkstringOrder note, e.g. promotional gift
data.createdAtstringCreation time
data.updatedAtstringUpdate 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"
}
GET/ip/orders

List proxy orders

Pages through standard proxy orders and short-term quota records, for checking delivery, renewals, and remaining quota.

AuthBearer API Key

Request parameters

FieldTypeRequiredDescription
pagenumberOptionalPage number, default 1
sizenumberOptionalPage 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

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
data.countnumberTotal number of matching records
data.sizenumberPage size, echoes the request value
data.pagenumberCurrent page number, echoes the request value
data.totalnumberTotal number of pages
data.dataobject[]Records on the current page
data.data[].idnumberLocal order ID; for short-term orders, used as nexIpId when pulling
data.data[].orderNostringOrder number
data.data[].userIdnumberPurchasing user ID
data.data[].teamIdnumberID of the team that owns the resources
data.data[].actionstringOrder action: buy purchase, renew renewal
data.data[].productTypestringOrder type: GENERAL standard proxy, SNAP short-term quota; may be empty for older standard orders
data.data[].typestringProxy product type
data.data[].countryCodestringCountry code
data.data[].locationCodestringRegion code
data.data[].durationnumberDays purchased or renewed
data.data[].quantitynumberRequested quantity; total quota for short-term orders
data.data[].quantitySuccessnumberQuantity delivered or pulled
data.data[].amountInputnumberInitial charged amount, USDT
data.data[].amountRefundnumberRefunded amount
data.data[].amountnumberAmount after refunds
data.data[].statestringStatus: PROCESSING, SUCCESS, FAILED
data.data[].productstringProduct snapshot as JSON text
data.data[].resourcesstringDelivered resources as JSON text, including proxy hosts and plaintext credentials, may be null
data.data[].remarkstringOrder note, e.g. promotional gift
data.data[].createdAtstringCreation time
data.data[].updatedAtstringUpdate 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"
}
POST/ip/renew

Renew proxies

Renews the specified local proxies directly and charges the account balance; the server validates resource ownership, renewal eligibility, and the actual fee.

AuthBearer API Key

Request parameters

FieldTypeRequiredDescription
itemsnumber[]RequiredLocal proxy IDs (id from /proxy/list), 1 to 1000 with no duplicates; not order IDs
durationnumberRequiredRenewal 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

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobject[]Renewal orders, one per original order group, with the same fields as /ip/orders entries
data[].idnumberRenewal order ID
data[].actionstringAlways renew
data[].statestringOrder status
data[].amountnumberAmount 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"
}
GET/ip/snap/plans

List short-term proxy plans

Reads the current short-term proxy quota plans; when buying, num must equal one of their ipNum values.

AuthBearer API Key

Request parameters

None

Notes

  • Prices follow the configuration at each read; do not cache example prices.

Response fields

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobject[]Plan list, from the app config NEX_SNAP_IP_COMBO
data[].ipNumnumberPull quota included in the plan
data[].pricenumber | stringPlan total price, USDT

Response example

{
"code": 0,
"msg": "成功",
"data": [
{
"ipNum": 100,
"price": "21.600"
},
{
"ipNum": 500,
"price": "98.000"
}
],
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
GET/ip/snap/products

List short-term proxy countries

Lists the countries available for pulling short-term proxies; use code as-is when pulling.

AuthBearer API Key

Request parameters

None

Notes

  • The list shows only supported countries, not live inventory.

Response fields

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobject[]Country list
data[].codestringTwo-letter country code, used as countryCode for /ip/snap/pull
data[].namestringCountry name in English
data[].zhNamestringCountry name in Chinese
data[].flagstringFlag icon

Response example

{
"code": 0,
"msg": "成功",
"data": [
{
"code": "US",
"name": "United States",
"zhName": "美国",
"flag": "🇺🇸"
}
],
"contextId": "a3f5c2e1b7d94c0e8f6a1b2c3d4e5f60a3f5c2e1b7d94c0e8f6a1b2c3d4e5f6"
}
POST/ip/snap/buy

Buy 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.

AuthBearer API Key

Request parameters

FieldTypeRequiredDescription
numnumberRequiredPlan 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

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobjectThe new short-term order, productType is SNAP
data.idnumberLocal order ID, used as nexIpId when pulling
data.quantitynumberTotal quota
data.quantitySuccessnumberQuantity pulled, initially 0
data.statestringOrder 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"
}
POST/ip/snap/pull

Pull short-term proxies

Pulls proxies by country from purchased short-term quota; consumes quota and is not a read-only query.

AuthBearer API Key

Request parameters

FieldTypeRequiredDescription
nexIpIdnumberRequiredLocal ID of the short-term order, from /ip/snap/buy or /ip/orders
countryCodestringRequiredTwo-letter uppercase country code, the code from /ip/snap/products
numnumberRequiredQuantity 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

FieldTypeDescription
contextIdstringSign-in and team context identifier for this request, usable as X-Nex-Service-Context in subsequent requests
dataobject[]Proxies pulled in this call
data[].hoststringProxy host
data[].portstring | numberProxy port
data[].usernamestringProxy authentication username
data[].passwordstringProxy authentication password (plaintext)
data[].protocolstringProxy protocol
data[].expireAtstringExpiration 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"
}