Info
Welcome to the VPNresellers API version 3.2. Visit the API access page to get the access token.
Accounts
Check an username
Before account creating this method can check that the username is able to be used and it does not exist in our database.
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/accounts/check_username?username=deleniti" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/check_username");
let params = {
"username": "deleniti",
};
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/accounts/check_username", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
'query' => [
"username" => "deleniti",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": {
"message": "The username is not taken."
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (405):
{
"message": "Method Not Allowed."
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"username": [
"The username has already been taken."
]
}
}
HTTP Request
GET v3_2/accounts/check_username
Query Parameters
Parameter | Status | Description |
---|---|---|
username | required | A checked username |
List accounts
The response contains the following information:
- data: Array. List of accounts' objects. See Retrieve an account to get info about account's object.
- links: Object of links for getting the first, last, next and previous pages.
- meta: Object. Metadata of the current page:
- current_page: the number of the current page.
- from: the number of the first item in data.
- last_page: the number of the last page.
- path: the path of the current page.
- per_page: max number of items in data.
- to: the number of the last item in data.
- total: the number of items in data.
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/accounts" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/accounts");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/accounts", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": [
{
"id": 9,
"username": "plmkojnhbgv",
"status": "Active",
"wg_ip": "10.250.121.219",
"wg_private_key": "XE1pI01BnHB1EmidlHdm55r2qHKBSWCCJtXeS9gC+WU=",
"wg_public_key": "w4oWBcymg+W+24NTb7FolqW9sumDnO0vhXXP19iQomM=",
"expired_at": "2023-05-12",
"updated": "2017-03-28 17:44:21",
"created": "2017-03-24 19:26:24"
},
{
"id": 10,
"username": "wokreiru",
"status": "Active",
"wg_ip": "10.250.121.219",
"wg_private_key": "XE1pI01BnHB1EmidlHdm55r2qHKBSWCCJtXeS9gC+WU=",
"wg_public_key": "w4oWBcymg+W+24NTb7FolqW9sumDnO0vhXXP19iQomM=",
"updated": "2017-04-23 09:06:45",
"expired_at": null,
"created": "2017-03-27 17:22:45"
}
],
"links": {
"first": "https://api.vpnresellers.com/v3_2/accounts?page=1",
"last": "https://api.vpnresellers.com/v3_2/accounts?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://api.vpnresellers.com/v3_2/accounts",
"per_page": 15,
"to": 2,
"total": 2
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (405):
{
"message": "Method Not Allowed."
}
HTTP Request
GET v3_2/accounts
Query Parameters
Parameter | Status | Description |
---|---|---|
per_page | optional | A number of accounts on a page |
page | optional | A number of page |
status | optional | A status of accounts ("Active" or "Disabled") |
Create an account
This method requires following parameters:
- username: the field under validation may have alpha-numeric characters, as well as dashes, underscores, dots and "@". Also username must be at least 3 characters and may not be greater than 50 characters.
- password: the field must be at least 3 characters and may not be greater than 50 characters.
Example request:
curl -X POST "https://api.vpnresellers.com/v3_2/accounts" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"username":"eius","password":"nemo"}'
const url = new URL("https://api.vpnresellers.com/v3_2/accounts");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
let body = {
"username": "eius",
"password": "nemo"
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post("https://api.vpnresellers.com/v3_2/accounts", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
"Content-Type" => "application/json",
],
'json' => [
"username" => "eius",
"password" => "nemo",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (201):
{
"data": {
"id": 9,
"username": "plmkojnhbgv",
"status": "Active",
"wg_ip": "10.250.121.219",
"wg_private_key": "XE1pI01BnHB1EmidlHdm55r2qHKBSWCCJtXeS9gC+WU=",
"wg_public_key": "w4oWBcymg+W+24NTb7FolqW9sumDnO0vhXXP19iQomM=",
"expired_at": null,
"updated": "2017-03-28 17:44:21",
"created": "2017-03-24 19:26:24"
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (402):
{
"message": "Insufficient Balance."
}
Example response (405):
{
"message": "Method Not Allowed."
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"username": [
"The username has already been taken."
]
}
}
HTTP Request
POST v3_2/accounts
Body Parameters
Parameter | Type | Status | Description |
---|---|---|---|
username | string | required | Username |
password | string | required | Password |
Retrieve an account
The response contains the following information:
- data: Object of account contains following data:
- id: integer. Unique ID of account.
- username: string. Username.
- status: string. Available following statuses:
- Active: an account is enabled.
- Disabled: an account is disabled.
- wg_ip: string. Wireguard IP address.
- wg_private_key: string. Wireguard private key.
- wg_public_key: string. Wireguard public key.
- updated: string. The date and time when an account was updated.
- created: string. The date and time when an account was created.
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/accounts/1" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/1");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/accounts/1", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": {
"id": 9,
"username": "plmkojnhbgv",
"status": "Active",
"wg_ip": "10.250.121.219",
"wg_private_key": "XE1pI01BnHB1EmidlHdm55r2qHKBSWCCJtXeS9gC+WU=",
"wg_public_key": "w4oWBcymg+W+24NTb7FolqW9sumDnO0vhXXP19iQomM=",
"expired_at": "2023-04-18",
"updated": "2017-03-28 17:44:21",
"created": "2017-03-24 19:26:24"
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (403):
{
"message": "Forbidden."
}
Example response (404):
{
"message": "Not Found."
}
Example response (405):
{
"message": "Method Not Allowed."
}
HTTP Request
GET v3_2/accounts/{account}
Delete an account
This method will delete an account from our database.
Example request:
curl -X DELETE "https://api.vpnresellers.com/v3_2/accounts/1" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/1");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "DELETE",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->delete("https://api.vpnresellers.com/v3_2/accounts/1", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": null
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (403):
{
"message": "Forbidden."
}
Example response (404):
{
"message": "Not Found."
}
Example response (405):
{
"message": "Method Not Allowed."
}
HTTP Request
DELETE v3_2/accounts/{account}
Enable an account
This method enables the account which was disabled using Disable an account method.
Example request:
curl -X PUT "https://api.vpnresellers.com/v3_2/accounts/1/enable" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/1/enable");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "PUT",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put("https://api.vpnresellers.com/v3_2/accounts/1/enable", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": {
"id": 9,
"username": "plmkojnhbgv",
"status": "Active",
"wg_ip": "10.250.121.219",
"wg_private_key": "XE1pI01BnHB1EmidlHdm55r2qHKBSWCCJtXeS9gC+WU=",
"wg_public_key": "w4oWBcymg+W+24NTb7FolqW9sumDnO0vhXXP19iQomM=",
"expired_at": "2023-04-18",
"updated": "2017-03-28 17:44:21",
"created": "2017-03-24 19:26:24"
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (403):
{
"message": "Forbidden."
}
Example response (404):
{
"message": "Not Found."
}
Example response (405):
{
"message": "Method Not Allowed."
}
HTTP Request
PUT v3_2/accounts/{account}/enable
Disable an account
This method can be used for disabling VPN service for this account without deleting it from our database.
Example request:
curl -X PUT "https://api.vpnresellers.com/v3_2/accounts/1/disable" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/1/disable");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "PUT",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put("https://api.vpnresellers.com/v3_2/accounts/1/disable", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": {
"id": 9,
"username": "plmkojnhbgv",
"status": "Disabled",
"wg_ip": "10.250.121.219",
"wg_private_key": "XE1pI01BnHB1EmidlHdm55r2qHKBSWCCJtXeS9gC+WU=",
"wg_public_key": "w4oWBcymg+W+24NTb7FolqW9sumDnO0vhXXP19iQomM=",
"expired_at": "2023-04-18",
"updated": "2017-03-28 17:44:21",
"created": "2017-03-24 19:26:24"
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (403):
{
"message": "Forbidden."
}
Example response (404):
{
"message": "Not Found."
}
Example response (405):
{
"message": "Method Not Allowed."
}
HTTP Request
PUT v3_2/accounts/{account}/disable
Change password
This method requires following parameter:
- password: the field must be at least 3 characters and may not be greater than 50 characters.
Example request:
curl -X PUT "https://api.vpnresellers.com/v3_2/accounts/1/change_password" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"password":"reprehenderit"}'
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/1/change_password");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
let body = {
"password": "reprehenderit"
}
fetch(url, {
method: "PUT",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put("https://api.vpnresellers.com/v3_2/accounts/1/change_password", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
"Content-Type" => "application/json",
],
'json' => [
"password" => "reprehenderit",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": {
"id": 9,
"username": "plmkojnhbgv",
"status": "Active",
"wg_ip": "10.250.121.219",
"wg_private_key": "XE1pI01BnHB1EmidlHdm55r2qHKBSWCCJtXeS9gC+WU=",
"wg_public_key": "w4oWBcymg+W+24NTb7FolqW9sumDnO0vhXXP19iQomM=",
"expired_at": "2023-04-18",
"updated": "2017-03-28 17:44:21",
"created": "2017-03-24 19:26:24"
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (403):
{
"message": "Forbidden."
}
Example response (404):
{
"message": "Not Found."
}
Example response (405):
{
"message": "Method Not Allowed."
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"password": [
"The password must be at least 6 characters."
]
}
}
HTTP Request
PUT v3_2/accounts/{account}/change_password
Body Parameters
Parameter | Type | Status | Description |
---|---|---|---|
password | string | required | Password |
Expire an account
Set the date when the account should become expired. If the "expired_at" field is null, the account becomes Auto-Renewal. This method requires following parameter:
- expire_at: the field must be a date (the "Y-m-d" format), be equals to null or be missed.
Example request:
curl -X PUT "https://api.vpnresellers.com/v3_2/accounts/1/expire" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"expire_at":"2023-04-18"}'
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/1/expire");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
let body = {
"expire_at": "2023-04-18"
}
fetch(url, {
method: "PUT",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put("https://api.vpnresellers.com/v3_2/accounts/1/expire", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
"Content-Type" => "application/json",
],
'json' => [
"expire_at" => "2023-04-18",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": {
"id": 9,
"username": "plmkojnhbgv",
"status": "Active",
"wg_ip": "10.250.121.219",
"wg_private_key": "XE1pI01BnHB1EmidlHdm55r2qHKBSWCCJtXeS9gC+WU=",
"wg_public_key": "w4oWBcymg+W+24NTb7FolqW9sumDnO0vhXXP19iQomM=",
"expired_at": "2023-04-18",
"updated": "2017-03-28 17:44:21",
"created": "2017-03-24 19:26:24"
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (403):
{
"message": "Forbidden."
}
Example response (404):
{
"message": "Not Found."
}
Example response (405):
{
"message": "Method Not Allowed."
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"expire_at": [
"The expire at does not match the format Y-m-d."
]
}
}
HTTP Request
PUT v3_2/accounts/{account}/expire
Body Parameters
Parameter | Type | Status | Description |
---|---|---|---|
expire_at | date | optional | Date ('Y-m-d' format) or null |
Validate an account
This method can be used for validating an account that was created before by username and password. Following response status codes are returned in different cases:
- 200: the validation was successful.
- 460: there wasn't found accounts with this username.
- 461: the password check is failed with the account with this username.
- 422: the given data was invalid (parameters are required, they must be a string and no longer than 512 characters).
- 401: the given access token is missed or failed.
Example request:
curl -X POST "https://api.vpnresellers.com/v3_2/accounts/validate" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"username":"eius","password":"nemo"}'
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/validate");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
let body = {
"username": "eius",
"password": "nemo"
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post("https://api.vpnresellers.com/v3_2/accounts/validate", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
"Content-Type" => "application/json",
],
'json' => [
"username" => "eius",
"password" => "nemo",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"id": 12345,
"success": true,
"message": "Username has been successfully validated.",
"code": 200,
}
Example response (460):
{
"success": false,
"message": "Username has not been found.",
"code": 460,
}
Example response (461):
{
"success": false,
"message": "Username has not been validated.",
"code": 461,
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (405):
{
"message": "Method Not Allowed."
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"username": [
"The username field is required."
]
}
}
HTTP Request
POST v3_2/accounts/validate
Body Parameters
Parameter | Type | Status | Description |
---|---|---|---|
username | string | required | Username |
password | string | required | Password |
Configuration
List ports
This method is used for retrieving list of all ports which are using in Get configuration and Download a configuration methods.
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/ports" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/ports");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/ports", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": [
{
"id": 1,
"protocol": "udp",
"number": 1194,
"default": 1
},
{
"id": 2,
"protocol": "udp",
"number": 118,
"default": 0
},
{
"id": 3,
"protocol": "udp",
"number": 123,
"default": 0
}
]
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (405):
{
"message": "Method Not Allowed."
}
HTTP Request
GET v3_2/ports
Get an openvpn configuration
Retrieving of the openvpn configuration to access the VPN server. The server_id and the port_id parameters can be got in the List servers and the List ports methods.
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/configuration?server_id=1&port_id=1" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/configuration");
let params = {
"server_id": "quis",
"port_id": "corrupti",
};
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/configuration", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
'query' => [
"server_id" => "quis",
"port_id" => "corrupti",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": {
"download_url": "https:\/\/api.vpnresellers.com\/v3\/configuration\/download?server_id=3&port_id=3",
"file_body": "client\ndev tun\nremote bkk-s02.321inter.net\nport 123\nproto udp\npersist-key\npersist-tun\ncomp-lzo\nauth-user-pass\nnobind\nca ca.crt\nauth SHA256\ncipher AES-256-CBC\nkeysize 256\nfloat\ntun-mtu 48000\nfragment 0\nmssfix 0\n\n<ca>\n -----BEGIN CERTIFICATE-----\n MIIE3zCCA8egAwIBAgIJAKJYeXSXJzkNMA0GCSqGSIb3DQEBCwUAMIGlMQswCQYD\n VQQGEwJVUzELMAkGA1UECBMCVVMxEDAOBgNVBAcTB1ZQTkFzaXYxEDAOBgNVBAoT\n B1ZQTkFzaWExHTAbBgNVBAsTFE15T3JnYW5pemF0aW9uYWxVbml0MREwDwYDVQQD\n EwhjaGFuZ2VtZTEQMA4GA1UEKRMHRWFzeVJTQTEhMB8GCSqGSIb3DQEJARYSbWVA\n bXlob3N0Lm15ZG9tYWluMB4XDTE2MDIxNTIwMzIzNVoXDTI2MDIxMjIwMzIzNVow\n gaUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVUzEQMA4GA1UEBxMHVlBOQXNpdjEQ\n MA4GA1UEChMHVlBOQXNpYTEdMBsGA1UECxMUTXlPcmdhbml6YXRpb25hbFVuaXQx\n ETAPBgNVBAMTCGNoYW5nZW1lMRAwDgYDVQQpEwdFYXN5UlNBMSEwHwYJKoZIhvcN\n AQkBFhJtZUBteWhvc3QubXlkb21haW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\n ggEKAoIBAQC3Qjh2JiLulXZkyjB9xb136o\/hy3UbHA0lnIovO1RI320TeOIbgfNr\n 3ZWcnNc1Fh4+SZbD4nZwe5Zk8PHdrm6dFM16CYU+vxaAnao8dbLRKnJq076zLzHr\n Wb12BI+yBr605cFqIFVYNtnPvzKYVd2vPGkA7BrZ7qUPMMPqaopQFUOfNh0QRTqp\n gcrAgexvkn3ia3IbEfd3OeFzU333buSu7\/+O55yS1\/lybfJyXQsxIDIPKe\/ZcIoL\n M9oK2x1uIHDcNa2uCsbphXVuuhtNgKDDU3AIga4MO\/5KpApFJfRLkCv7J+sAzVj1\n UwCcuqqNoY3CgKKsHwWlWgpN++KVGvLbAgMBAAGjggEOMIIBCjAdBgNVHQ4EFgQU\n QN6oOLM0U3kbaL\/y8Z2ZTZOJ7W4wgdoGA1UdIwSB0jCBz4AUQN6oOLM0U3kbaL\/y\n 8Z2ZTZOJ7W6hgaukgagwgaUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVUzEQMA4G\n A1UEBxMHVlBOQXNpdjEQMA4GA1UEChMHVlBOQXNpYTEdMBsGA1UECxMUTXlPcmdh\n bml6YXRpb25hbFVuaXQxETAPBgNVBAMTCGNoYW5nZW1lMRAwDgYDVQQpEwdFYXN5\n UlNBMSEwHwYJKoZIhvcNAQkBFhJtZUBteWhvc3QubXlkb21haW6CCQCiWHl0lyc5\n DTAMBgNVHRMEBTADAQH\/MA0GCSqGSIb3DQEBCwUAA4IBAQCFE5WZ5M0yid0ow\/7Z\n \/X4UIGvgvLwMK8JXkomcleRpVCXz2s55C6Huo0\/v\/UyOjP\/VU+MhKQrAgNmDPHwL\n 2Q+b6m3hxLiQ96C3j7nhqnRNsuU3Dm8KEOXC45QPFJZx5tCeqTCBPb874RdY\/vWg\n ZafdHFiCYxjiMnLk00I2DInVG5GDnwjQt6hqAN\/t+i\/q+Gl9fZXOP5CLIp7pxAmQ\n 5IAQSz4jnNHBtggS3h0055coNSMfGPS3z4jX8MMdEkXCGuLQW01mTZ+KuluWCo\/4\n PUuYbrMZW\/gQ\/T4hVgxYgraL0scjXidJhEJSgj4k3niJHcF\/j0mjZAYInv+d5UCv\n FjHt\n -----END CERTIFICATE-----\n\n<\/ca>",
"file_name": "TH-123.ovpn"
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (405):
{
"message": "Method Not Allowed."
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"server_id": [
"The server id field is required."
],
"port_id": [
"The selected port id is invalid."
]
}
}
HTTP Request
GET v3_2/configuration
Query Parameters
Parameter | Status | Description |
---|---|---|
server_id | required | Server ID |
port_id | optional | Port ID |
Download an openvpn configuration
Downloading of the openvpn configuration file to access the VPN server. The server_id and the port_id parameters can be got in the List servers and the List ports methods.
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/configuration/download?server_id=1&port_id=1" \
-H "Authorization: Bearer {token}" \
-H "Accept: text/html; charset=UTF-8"
const url = new URL("https://api.vpnresellers.com/v3_2/configuration/download");
let params = {
"server_id": "voluptas",
"port_id": "sint",
};
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Authorization": "Bearer {token}",
"Accept": "text/html; charset=UTF-8",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/configuration/download", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "text/html; charset=UTF-8",
],
'query' => [
"server_id" => "voluptas",
"port_id" => "sint",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
File output
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (405):
{
"message": "Method Not Allowed."
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"server_id": [
"The server id field is required."
],
"port_id": [
"The selected port id is invalid."
]
}
}
HTTP Request
GET v3_2/configuration/download
Query Parameters
Parameter | Status | Description |
---|---|---|
server_id | required | Server ID |
port_id | optional | Port ID |
Get a wireguard configuration
Retrieving of the wireguard configuration to access the VPN server. The server_id parameter can be got in the List servers method.
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/accounts/{account_id}/wireguard-configuration?server_id=1" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/1/wireguard-configuration");
let params = {
"server_id": "3",
};
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/accounts/1/wireguard-configuration", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
'query' => [
"server_id" => "3",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": {
"download_url": "https:\/\/api.vpnresellers.com\/v3_2\/accounts\/1\/wireguard-configuration\/download?server_id=3",
"file_body": "[Interface]\nPrivateKey = zUv7atadVRGOx58h\nAddress = 240.170.225.79\nDNS = 172.16.0.1\n\n[Peer]\nPublicKey = WxwZf+b2RTA0ixXq\/j6z9oVdnS75HxXDVadM1nC36BY=\nAllowedIPs = 0.0.0.0\/0,::\/0\nEndpoint = eu-de-fra.321inter.net:55888\n",
"file_name": "wg0.conf"
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (405):
{
"message": "Method Not Allowed."
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"server_id": [
"The server id field is required."
]
}
}
HTTP Request
GET v3_2/accounts/{account_id}/wireguard-configuration
Query Parameters
Parameter | Status | Description |
---|---|---|
server_id | required | Server ID |
Download a wireguard configuration
Downloading of the wireguard configuration file to access the VPN server. The server_id parameter can be got in the List servers method.
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/accounts/1/wireguard-configuration/download?server_id=1" \
-H "Authorization: Bearer {token}" \
-H "Accept: text/html; charset=UTF-8"
const url = new URL("https://api.vpnresellers.com/v3_2/accounts/1/wireguard-configuration/download");
let params = {
"server_id": "3",
};
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Authorization": "Bearer {token}",
"Accept": "text/html; charset=UTF-8",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/accounts/1/wireguard-configuration/download", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "text/html; charset=UTF-8",
],
'query' => [
"server_id" => "3",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
File output
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (405):
{
"message": "Method Not Allowed."
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"server_id": [
"The server id field is required."
]
}
}
HTTP Request
GET v3_2/accounts/1/wireguard-configuration/download
Query Parameters
Parameter | Status | Description |
---|---|---|
server_id | required | Server ID |
Geo Location
Get geo info
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/geoip" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/geoip");
let headers = {
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/geoip", [
'headers' => [
"Accept" => "application/json",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": {
"ip": "127.0.0.0",
"country": "United States",
"iso_code": "US",
"city": "New Haven",
"lat": 41.31,
"lon": -72.92,
"continent": "NA"
}
}
Example response (400):
{
"message": "Bad Request."
}
Example response (405):
{
"message": "Method Not Allowed."
}
HTTP Request
GET v3_2/geoip
Servers
List servers
This method is used for retrieving list of all servers which are used in Get configuration and Download a configuration methods.
Example request:
curl -X GET -G "https://api.vpnresellers.com/v3_2/servers" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
const url = new URL("https://api.vpnresellers.com/v3_2/servers");
let headers = {
"Authorization": "Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json",
}
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get("https://api.vpnresellers.com/v3_2/servers", [
'headers' => [
"Authorization" => "Bearer {token}",
"Accept" => "application/json",
],
]);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"data": [
{
"id": 1,
"name": "ams-s02.321inter.net",
"ip": "46.249.36.188",
"country_code": "NL",
"city": "Amsterdam",
"capacity": 0
},
{
"id": 2,
"name": "rtm-s01.321inter.net",
"ip": "213.163.64.39",
"country_code": "NL",
"city": "Rotterdam",
"capacity": 0
},
{
"id": 3,
"name": "bkk-s02.321inter.net",
"ip": "45.64.186.109",
"country_code": "TH",
"city": "Bangkok",
"capacity": 0
},
{
"id": 4,
"name": "yvr-s01.321inter.net",
"ip": "71.19.251.107",
"country_code": "CA",
"city": "Vancouver",
"capacity": 0
}
]
}
Example response (400):
{
"message": "Bad Request."
}
Example response (401):
{
"message": "Unauthorized."
}
Example response (405):
{
"message": "Method Not Allowed."
}
HTTP Request
GET v3_2/servers