Create server
Creates a new server in your account. To be able to do this properly you will need 3 key values: plan, region and credential.
These values are available here: Get server providers
You will also need to have server providers added to your account to be able to retrieve these. Setup new server providers in your account here: Server providers
Required scopes
Create servers
Create a server
Creates a new server with the specified configuration.
Required attributes
- Name
plan- Type
- string
- Description
The plan ID to install the server with.
- Name
region- Type
- string
- Description
The region where to install the server with.
- Name
credential- Type
- integer
- Description
The server provider from your account - Get server providers
- Name
type- Type
- string
- Description
Type of the server to install, must be either:
server,load-balancer,database-serverorredis-server
- Name
database_type- Type
- string
- Description
The type of database to install, must be one of:
none,mysql,mysql84,mysql9,mariadb,mariadb114,postgresql,postgresql14,postgresql15,postgresql16,postgresql17,postgresql18.mysql84installs MySQL 8.4 LTS andmysql9installs MySQL 9.7 LTS. On Ubuntu 26.04 onlymysql84is available, because that release ships MySQL 8.4 in its own archive.The bare
mysql,mariadbandpostgresqlvalues follow the version we currently recommend for that engine, so what they install changes over time. Pick a versioned value if you need a specific release.Releases that have reached end of life are no longer accepted for new servers: MySQL 8.0, MariaDB 11.2 and PostgreSQL 13 and older. Existing servers running them keep working.
- Name
webserver_type- Type
- string
- Description
The type of webserver to install, must be either:
nginxornginx-docker
- Name
php_version- Type
- string
- Description
The PHP version installed, only applicable on the
servertype. Must be any of these values:none,5.6,7.0,7.1,7.2,7.3,7.4,8.0,8.1,8.2,8.3,8.4,8.5
Optional attributes
- Name
name- Type
- string
- Description
The server name, cannot contain any special characters and is alpha-numeric, if left empty a random name will be used.
- Name
os_type- Type
- string
- Description
The OS version, defaults to
ubuntu-26-04-lts. Available options:ubuntu-24-04-lts,ubuntu-26-04-lts,debian-12,debian-13
- Name
description- Type
- string
- Description
Allows you to send in an additional description for your server as note.
- Name
install_monitoring- Type
- boolean
- Description
Allows you to install Ploi monitoring as well, requires Pro plan or higher.
- Name
ip_type- Type
- string
- Description
The IP version the server gets provisioned with, defaults to
ipv4. Must be any of these values:ipv4,ipv6,ipv4-ipv6(IPv4 as main address, IPv6 added) oripv6-ipv4(IPv6 as main address, IPv4 added). Supported on DigitalOcean, Hetzner, Vultr, UpCloud, Linode, AWS, Hostinger and Katapult. Other providers ignore this and always provision IPv4. Note that some providers hand out an IPv4 address even when you pickipv6, and that IPv4 may come with additional costs.
- Name
webhook_url- Type
- url
- Description
This URL gets triggered by Ploi when installation has completed, you can use this for your own system, this will only send 1 signal, there is no retry schedule.
Request
curl -X POST "https://ploi.io/api/servers" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"name": "awesome-server",
"plan": "1xCPU-1GB",
"region": "nl-ams1",
"credential": 1,
"type": "server",
"database_type": "mysql",
"webserver_type": "nginx",
"ip_type": "ipv4-ipv6"
}'
Response
{
"data": {
"id": 2,
"status": "created",
"type": "server",
"name": "awesome-server",
"ip_address": "12.34.56.78",
"php_version": "8.4",
"mysql_version": "8.0",
"sites_count": 0,
"monitoring": false,
"status_id": 0,
"created_at": "2019-01-01 09:00:00"
}
}
Webhook URL data
When you provide a webhook_url, Ploi will send a POST request to that URL when the server installation has completed.
Webhook payload
{
"message": "Server installation has completed",
"server": {
"id": 1,
"name": "calm-breeze"
}
}