Create a Static Proxy Purchase Order
Use the wallet balance to create a static proxy purchase order for one or more regions. A successful response only means the order was accepted and paid; resources are fulfilled asynchronously, and different regions may succeed or fail independently.
API information
| Item | Value |
|---|---|
| Method | POST |
| Path | /open-api/v1/static/purchase-orders |
| Authentication | X-API-Key |
| Content-Type | application/json |
| Processing | Asynchronous |
| Request number | Required; protected for 24 hours |
Request body
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
request_no |
string | Yes | Caller-generated request number used only to prevent duplicate acceptance | 1–64 characters; letters, digits, _, and - only |
static_type |
string | Yes | Static proxy type shared by all regions | ISP or ISP_NATIVE |
duration_days |
integer | Yes | Purchase duration in days, shared by all regions | ISP: 7 or 30; ISP_NATIVE: 7, 30, or 90 |
regions |
object[] | Yes | Regions to purchase | Must not be empty; regions must be unique; use an array even for one region |
regions[].region_code |
string | Yes | Region code | Use a value returned by the static proxy region API |
regions[].quantity |
integer | Yes | Quantity for this region | 1–300, and no greater than the inventory available when the order is created |
callback_url |
string | No | Order completion notification URL | Absolute public HTTP/HTTPS URL, up to 2048 characters |
The request body and each regions element must not contain fields that are not listed above. The resource connection protocol is fixed to HTTP; protocol, price, payment method, discount, and other unlisted parameters cannot be specified.
Request example
curl --request POST \
--url 'https://api.puraroute.com/gin/open-api/v1/static/purchase-orders' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <YOUR_API_KEY>' \
--data '{
"request_no": "static-buy-20260824-001",
"static_type": "ISP",
"duration_days": 30,
"regions": [
{"region_code": "US_CA", "quantity": 2},
{"region_code": "JP_TK", "quantity": 1}
],
"callback_url": "https://customer.example.com/proxy/order-callback"
}'
Response fields
| Field | Type | Description |
|---|---|---|
order_no |
string | Static proxy purchase order number |
status |
string | Order status when the response is returned: UNFULFILLED, PROCESSING, SUCCESS, PARTIAL_SUCCESS, or FAILED |
static_type |
string | ISP or ISP_NATIVE |
duration_days |
integer | Purchase duration |
quantity |
integer | Total quantity across all regions |
order_amount |
string | Total order amount in USD |
currency |
string | Always USD |
create_time |
string | Order creation time in GMT+8 ISO-8601 format |
regions |
object[] | Amount summary for all requested regions |
regions[].region_code |
string | Region code |
regions[].quantity |
integer | Quantity for this region |
regions[].order_amount |
string | Amount for this region in USD |
Success response example
{
"code": 0,
"msg": "success",
"data": {
"order_no": "PO1912345678901234567",
"status": "PROCESSING",
"static_type": "ISP",
"duration_days": 30,
"quantity": 3,
"order_amount": "30.0000",
"currency": "USD",
"create_time": "2026-08-24T15:30:00.000+08:00",
"regions": [
{"region_code": "US_CA", "quantity": 2, "order_amount": "20.0000"},
{"region_code": "JP_TK", "quantity": 1, "order_amount": "10.0000"}
]
},
"next": null
}
Possible error codes
code |
Description | Recommended action |
|---|---|---|
300006 |
Duplicate request number | Query the purchase-order list; do not replay the request |
300184 |
Insufficient wallet balance | Add funds, then purchase again with a new request number |
300320 |
No price is available for the selected type, region, or duration | Select an available region or contact customer support |
300323 |
A region is currently unavailable for purchase | Query the region list again |
300324 |
Real-time inventory is temporarily unavailable | Query inventory later; do not blindly repeat the create request |
300325 |
Insufficient inventory in a region | Reduce the quantity for that region or query inventory later |
400001 |
Authentication failed | Check the API key |
400009 |
The duration, region collection, callback URL, or request body is invalid | Correct the request |
500000 |
System processing failed and the creation result may be uncertain | Query the order list first; do not immediately create another order with a different request number |
Save the returned order_no and keep checking List static proxy purchase orders. The order may end in SUCCESS, PARTIAL_SUCCESS, or FAILED; obtain successfully fulfilled resources through List static proxy resources. Failed results are not refunded automatically; contact customer support.
request_no is not a result query key and does not replay the first response. See Request numbers and duplicate submissions.