🔌 VPN Builder

Public API Documentation

Base URL: https://mercury.vpnbuilder.org
Content-Type: application/json
Authentication: Most endpoints require an apiKey parameter in the request body (POST) or query string.

Users

POST /users/all
Retrieve all users for the authenticated reseller.
Request Parameters:
apiKey *required
Your API key for authentication
Request Example
{ "apiKey": "your-api-key-here" }
POST /users/password
Get the password for a specific user account.
Request Parameters:
apiKey *required
Your API key for authentication
username *required
The username of the account
Request Example
{ "apiKey": "your-api-key-here", "username": "user123" }
Success Response:
{ "Error": false, "Username": "user123", "Password": "user-password" }
POST /users/create
Create a new user account. If the user already exists as a mobile user, it will be activated instead.
Request Parameters:
apiKey *required
Your API key for authentication
username *required
Unique username for the account
name *required
Full name of the user
email *required
Email address of the user
deviceID *required
Unique device identifier
password optional
Password for the account (auto-generated if not provided)
Request Example
{ "apiKey": "your-api-key-here", "username": "newuser", "name": "John Doe", "email": "john@example.com", "deviceID": "device-123", "password": "optional-password" }
POST /users/login
Authenticate a user and retrieve login information.
Request Parameters:
username *required
Username for authentication
password *required
Password for authentication
deviceID *required
Unique device identifier
Request Example
{ "username": "user123", "password": "user-password", "deviceID": "device-123" }
POST /users/{username}/delete
Deactivate a user account.
URL Parameters:
username *required
Username in the URL path
Request Parameters:
apiKey *required
Your API key for authentication
Request Example
POST /users/user123/delete { "apiKey": "your-api-key-here" }
Success Response:
{ "Error": false, "Message": "User deactivated successfully" }
POST /users/{username}/update
Update a user's password.
URL Parameters:
username *required
Username in the URL path
Request Parameters:
password *required
Current password for verification
newPassword *required
New password to set
Request Example
POST /users/user123/update { "password": "old-password", "newPassword": "new-password" }
Success Response:
{ "Error": false, "Message": "Password updated successfully" }

Countries

GET /countries/all
Retrieve all available countries.
Request Example
GET /countries/all

Servers

POST /servers/all
Get all available servers. Requires user authentication.
Request Parameters:
username *required
Username for authentication
password *required
Password for authentication
deviceID *required
Unique device identifier
Request Example
{ "username": "user123", "password": "user-password", "deviceID": "device-123" }
POST /servers/{id}
Get servers filtered by country ID. Requires user authentication.
URL Parameters:
id *required
Country ID to filter servers
Request Parameters:
username *required
Username for authentication
password *required
Password for authentication
deviceID *required
Unique device identifier
Request Example
POST /servers/1 { "username": "user123", "password": "user-password", "deviceID": "device-123" }

Mobile Users

POST /mobile/users/create
Create a new mobile user account.
Request Parameters:
name *required
Full name of the user
username *required
Unique username for the account
email *required
Email address of the user
password *required
Password for the account
deviceID *required
Unique device identifier
Request Example
{ "name": "Jane Doe", "username": "janedoe", "email": "jane@example.com", "password": "secure-password", "deviceID": "device-456" }
POST /mobile/users/{id}/activate
Activate a mobile user account using an API key.
URL Parameters:
id *required
Username in the URL path
Request Parameters:
apiKey *required
Your API key for authentication
Request Example
POST /mobile/users/janedoe/activate { "apiKey": "your-api-key-here" }
Success Response:
{ "Error": false, "Message": "Account activated successfully" }
POST /mobile/users/{id}/deactivate
Deactivate a mobile user account using an API key.
URL Parameters:
id *required
Username in the URL path
Request Parameters:
apiKey *required
Your API key for authentication
Request Example
POST /mobile/users/janedoe/deactivate { "apiKey": "your-api-key-here" }
Success Response:
{ "Error": false, "Message": "Account deactivated successfully" }
POST /mobile/users/{id}/update
Update a mobile user's password.
URL Parameters:
id *required
Username in the URL path
Request Parameters:
password *required
Current password for verification
newPassword *required
New password to set
Request Example
POST /mobile/users/janedoe/update { "password": "old-password", "newPassword": "new-password" }
Success Response:
{ "Error": false, "Message": "Password updated successfully" }

Admin

GET /admin/servers/full
Get full server information (admin only).
Request Example
GET /admin/servers/full
GET /admin/servers/lite
Get server IP addresses only (admin only).
Request Example
GET /admin/servers/lite

Reseller

POST /reseller/stats
Get statistics for the authenticated reseller including active users, monthly cost, and cost per user.
Request Parameters:
apiKey *required
Your API key for authentication
Request Example
{ "apiKey": "your-api-key-here" }
Success Response:
{ "Error": false, "Statistics": { "ActiveUsers": 150, "MonthlyCost": "1250.00", "CostPerUser": "8.33" } }
POST /reseller/prefixes
Get all username prefixes for the authenticated reseller.
Request Parameters:
apiKey *required
Your API key for authentication
Request Example
{ "apiKey": "your-api-key-here" }
Success Response:
{ "Error": false, "Prefixes": ["prefix1", "prefix2", "prefix3"] }
POST /reseller/prefixes/create
Create a new username prefix for the authenticated reseller.
Request Parameters:
apiKey *required
Your API key for authentication
prefix *required
The prefix to create
Request Example
{ "apiKey": "your-api-key-here", "prefix": "newprefix" }
Success Response:
{ "Error": false, "Message": "Prefix created successfully" }

Error Codes

HTTP Status Codes

200
Success - Request completed successfully
400
Bad Request - Missing or invalid parameters
401
Unauthorized - Invalid API key or authentication failed
404
Not Found - Resource not found (e.g., user does not exist)

Error Response Format

{ "Error": true, "ErrorMsg": "Description of the error" }

Success Response Format

{ "Error": false, "Message": "Success message", // ... additional data }