---
title: "Create VPN server"
method: POST
path: "/vpn/servers/create"
tags: ["VPN"]
---

# Create VPN server

`POST /vpn/servers/create`

## Request

- Base URL: `https://demo.onlinebillingform.com/api/v2`
- URL: `https://demo.onlinebillingform.com/api/v2/vpn/servers/create`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/billingserv/apis/billingserv-api-v2/docs/vpn/servers/create/post.ts> (a function with typed inputs; its response is checked against the schema)

Use this BillingServ API endpoint to create VPN server. Review the response for the operation result or validation errors.

## Request body

- object
  - `country_id` integer, required
  - `server_name` string, required
  - `ip_address` string, ipv4, required
  - `ssh_port` integer, required
  - `ssh_username` string, required
  - `ssh_password` string, password, required
  - `max_connection` integer, required
  - `vpn_type` integer, required: 1=OpenVPN, 2=WireGuard, 3=IKEv2, 4=other
  - `vpn_port` string: default, random, or custom
  - `vpn_custom_port` string
  - `vpn_protocol` string: udp or tcp

## Response `201`

Created

- ApiResponse
  - `success` boolean

## Other responses

- `400`: The request could not be processed.
- `401`: Missing or invalid API key
- `403`: Authenticated key does not have permission for this endpoint

## Changes

- **2026-08-22** `6b9208b64456`: 1 breaking, 7 info
  - removed the success response with the status `200`
  - added the non-success response with the status `400`
  - removed the non-success response with the status `422`
  - added the optional property `code` to the response with the `401` status
  - …4 more

[Operation history](https://skmtc.dev/billingserv/apis/billingserv-api-v2/changes/vpn/servers/create/post.md)

---

[API](https://skmtc.dev/billingserv/apis/billingserv-api-v2.md) - [All operations](https://skmtc.dev/billingserv/apis/billingserv-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/billingserv/apis/billingserv-api-v2/revisions/232ab5ca8413?raw)
