The ResellPortal VPN API lets you sell a VPN under your own brand, from your own app or website. Create a VPN account with one call, list 80+ server locations, and fetch a ready-to-use WireGuard or OpenVPN config to embed in your own app. There is no monthly platform fee: each VPN subscription is charged at wholesale from your wallet.
BASE=https://panel.resellportal.com/wp-json/resellportal/v1
# 1. Create the VPN account
curl -X POST "$BASE/orders" \
-H "X-API-Key: your_api_key" \
-H "X-API-Secret: your_api_secret" \
-H "Content-Type: application/json" \
-d '{"client_id": 123,
"product_key": "vpn",
"billing_cycle": "monthly"}'
# 2. Get a WireGuard config
curl "$BASE/vpn/config?service_id=597&server_id=135" \
-H "X-API-Key: your_api_key" \
-H "X-API-Secret: your_api_secret"const BASE = "https://panel.resellportal.com/wp-json/resellportal/v1";
const headers = {
"X-API-Key": "your_api_key",
"X-API-Secret": "your_api_secret",
"Content-Type": "application/json",
};
const api = (path, body) => fetch(BASE + path, {
method: body ? "POST" : "GET",
headers,
body: body && JSON.stringify(body),
}).then((r) => r.json());
// 1. Create the VPN account
const order = await api("/orders", {
client_id: 123,
product_key: "vpn",
billing_cycle: "monthly",
});
// 2. Get a WireGuard config
const config = await api("/vpn/config?service_id=597&server_id=135");import requests
BASE = "https://panel.resellportal.com/wp-json/resellportal/v1"
HEADERS = {
"X-API-Key": "your_api_key",
"X-API-Secret": "your_api_secret",
}
# 1. Create the VPN account
order = requests.post(f"{BASE}/orders", headers=HEADERS, json={
"client_id": 123,
"product_key": "vpn",
"billing_cycle": "monthly",
}).json()
# 2. Get a WireGuard config
config = requests.get(
f"{BASE}/vpn/config",
params={"service_id": "597", "server_id": "135"},
headers=HEADERS,
).json()Call POST /orders with product_key "vpn" and a billing cycle (monthly, quarterly, biannual or annual). You get the VPN username and password back straight away.
Call GET /vpn/servers for the list of locations, and GET /vpn/ports if you use OpenVPN.
Call GET /vpn/config to get a WireGuard or OpenVPN config for that server and embed it in your own app, or let your customer use the ready-made apps.
Base URL https://panel.resellportal.com/wp-json/resellportal/v1. Authenticate every request with your X-API-Key and X-API-Secret headers.
/ordersCreate a VPN account: product_key "vpn", billing_cycle, and an optional custom vpn_username. Returns the login details.
/vpn/serversList every VPN server location with its id, city and country code.
/vpn/portsList the available OpenVPN ports and protocols.
/vpn/configGet a WireGuard (default) or OpenVPN config for an active VPN service and server.
A successful order returns everything you need to deliver it in your own interface.
{
"success": true,
"service_id": 597,
"message": "VPN Service activated successfully",
"billing_cycle": "monthly",
"vpn_credentials": {
"username": "johndoe123",
"password": "generatedPass"
}
}Customer emails and the VPN management page carry your store name, not ours.
Send "test_mode": true (or the X-RP-Test-Mode: 1 header) to build and test your integration without charging your wallet.
Fetch configs in either protocol. One VPN account works across every server, so switching location is just a different server_id.
Embed the configs in your own app, or point customers to ready-made apps for 7 platforms.
Connect Claude, ChatGPT or Cursor to the ResellPortal MCP server to create VPN accounts by chat.
Every account also gets a white-label storefront, so you can sell VPN without building anything.
A VPN API lets your software create VPN accounts and connection configs automatically, so you can offer a VPN inside your own app or service. With the ResellPortal VPN API you create an account with POST /orders and fetch WireGuard or OpenVPN configs with GET /vpn/config.
Yes. GET /vpn/config returns a full WireGuard or OpenVPN config file that you can embed in your own Android, iOS or desktop app. The same VPN account works on every server, so your app only needs to change the server_id.
More than 80 server locations. GET /vpn/servers returns the current list with the city and country for each server.
There is no setup or monthly platform fee. Each VPN subscription you create is charged at wholesale from your prepaid wallet for the billing cycle you choose, and you set your own selling price.
Monthly, quarterly, biannual and annual. Pass billing_cycle in the POST /orders request.
Yes. Add "test_mode": true to the request body, or send the header X-RP-Test-Mode: 1. Test requests are validated but nothing is charged and no VPN account is created.
Create a free ResellPortal account and copy your API key and secret from the API section of the panel. No minimum balance. A live order only needs enough in your wallet to cover it.
Free account, free test mode, no monthly platform fee. Get your API keys and create your first VPN account in minutes.
Prefer no code? See the VPN reseller program.
More APIs: eSIM API · Domain Registration API · SMM Panel API · Business Phone Number API · Web Hosting API