curl --request POST \
--url https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dataGb": 5,
"ips": [
"203.0.113.10",
"203.0.113.11"
],
"idempotency_key": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create"
payload = {
"dataGb": 5,
"ips": ["203.0.113.10", "203.0.113.11"],
"idempotency_key": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dataGb: 5,
ips: ['203.0.113.10', '203.0.113.11'],
idempotency_key: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dataGb' => 5,
'ips' => [
'203.0.113.10',
'203.0.113.11'
],
'idempotency_key' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create"
payload := strings.NewReader("{\n \"dataGb\": 5,\n \"ips\": [\n \"203.0.113.10\",\n \"203.0.113.11\"\n ],\n \"idempotency_key\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dataGb\": 5,\n \"ips\": [\n \"203.0.113.10\",\n \"203.0.113.11\"\n ],\n \"idempotency_key\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dataGb\": 5,\n \"ips\": [\n \"203.0.113.10\",\n \"203.0.113.11\"\n ],\n \"idempotency_key\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"username": "test124",
"userId": "test124",
"password": "<string>",
"dataLimit": 5,
"dataUsed": 1.2,
"dataRemaining": 3.8,
"status": "active",
"dateCreated": "2023-11-07T05:31:56Z",
"whitelistedIps": [
"203.0.113.10",
"203.0.113.11"
]
}{
"statusCode": 400,
"message": "User <username or user_id> already exists",
"error": "Bad Request"
}{
"statusCode": 403,
"message": "reseller not found",
"error": "Bad Request"
}Create a sub-user
Creates a sub-user under the Plan X reseller account by specifying a data allocation (input: dataGb, in GB) and an optional list of IPs to whitelist (input: ips). Returns the created user’s details, including userId, username, password, status, dataLimit, dataUsed, dateCreated, and whitelistedIps.
curl --request POST \
--url https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dataGb": 5,
"ips": [
"203.0.113.10",
"203.0.113.11"
],
"idempotency_key": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create"
payload = {
"dataGb": 5,
"ips": ["203.0.113.10", "203.0.113.11"],
"idempotency_key": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dataGb: 5,
ips: ['203.0.113.10', '203.0.113.11'],
idempotency_key: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dataGb' => 5,
'ips' => [
'203.0.113.10',
'203.0.113.11'
],
'idempotency_key' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create"
payload := strings.NewReader("{\n \"dataGb\": 5,\n \"ips\": [\n \"203.0.113.10\",\n \"203.0.113.11\"\n ],\n \"idempotency_key\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dataGb\": 5,\n \"ips\": [\n \"203.0.113.10\",\n \"203.0.113.11\"\n ],\n \"idempotency_key\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://core-proxy-service-w34nvoxnwq-uc.a.run.app/proxy_api/v1/planx/users/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dataGb\": 5,\n \"ips\": [\n \"203.0.113.10\",\n \"203.0.113.11\"\n ],\n \"idempotency_key\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"username": "test124",
"userId": "test124",
"password": "<string>",
"dataLimit": 5,
"dataUsed": 1.2,
"dataRemaining": 3.8,
"status": "active",
"dateCreated": "2023-11-07T05:31:56Z",
"whitelistedIps": [
"203.0.113.10",
"203.0.113.11"
]
}{
"statusCode": 400,
"message": "User <username or user_id> already exists",
"error": "Bad Request"
}{
"statusCode": 403,
"message": "reseller not found",
"error": "Bad Request"
}Authorizations
[just text field] Please enter token in following format: Bearer
Body
Amount of data to allocate to the new sub-user, in GB. Must be a positive number (minimum 0.001).
5
Optional list of IP addresses to whitelist for the sub-user. If omitted, no IP restriction is applied.
["203.0.113.10", "203.0.113.11"]
Optional UUIDv4. Reuse for the same operation to replay saved responses. Processing or uncertain operations return 409. Retained indefinitely (at least 24 hours). Omit for legacy behavior.
Response
User created
Username of the sub-user
"test124"
Unique identifier of the sub-user (same value as username)
"test124"
Current password of the sub-user
Total data allocated to the sub-user, in GB
5
Amount of data used by the sub-user so far, in GB
1.2
Amount of data remaining for the sub-user, in GB (dataLimit minus dataUsed)
3.8
Current status of the sub-user
active, inactive "active"
Date and time the sub-user was created
List of IP addresses whitelisted for the sub-user
["203.0.113.10", "203.0.113.11"]

