Provision, manage, and monitor your Turkey VPS servers programmatically. Full root control via HTTP — no portal required.
From zero to your first API call in under 2 minutes.
Sign up at my.turkvps.cloud and top up your wallet. All API actions bill from your wallet balance.
Go to Developer → API Keys in your dashboard. Give the token a name and click Create. Copy the token immediately — it won't be shown again.
Pass the token as a Bearer header on every request. Try fetching your account info:
curl https://api.turkvps.cloud/v1/account \
-H "Authorization: Bearer YOUR_TOKEN"
# 200 OK
{
"data": {
"id": 1,
"firstname": "John",
"email": "john@example.com",
"wallet_balance": "25.00"
}
}
Every request must include your API token in the Authorization header. Tokens are scoped to your account and can be revoked at any time from the dashboard.
| Property | Value |
|---|---|
| Max tokens per account | 10 |
| Rate limit | 120 requests / minute |
| Token format | Opaque bearer string |
| Revoke | Dashboard → Developer → API Keys |
# Every request needs this header:
Authorization: Bearer YOUR_TOKEN
# ── 401 — missing or invalid token
{ "message": "Unauthenticated." }
# ── 429 — rate limit exceeded
{
"message": "Too many requests.",
"error": "rate_limit_exceeded"
}
# Store token as env var (recommended)
export TURKVPS_TOKEN="your_token_here"
curl https://api.turkvps.cloud/v1/account \
-H "Authorization: Bearer $TURKVPS_TOKEN"
Click any endpoint to see a working curl example.
curl https://api.turkvps.cloud/v1/account \
-H "Authorization: Bearer $TOKEN"
# Response
{
"data": {
"id": 1,
"firstname": "John", "lastname": "Doe",
"email": "john@example.com",
"wallet_balance": "25.00"
}
}
curl https://api.turkvps.cloud/v1/plans \
-H "Authorization: Bearer $TOKEN"
# Response
{
"data": [
{
"id": 1, "name": "Cloud — 1",
"vcpu": 1, "ram_mb": 1024,
"disk_gb": 15, "price_monthly": "3.44"
}, ...
]
}
curl https://api.turkvps.cloud/v1/os \
-H "Authorization: Bearer $TOKEN"
# Response
{
"data": [
{ "id": 1, "name": "Ubuntu 24.04", "family": "ubuntu" },
{ "id": 2, "name": "Debian 12", "family": "debian" }
]
}
curl https://api.turkvps.cloud/v1/servers \
-H "Authorization: Bearer $TOKEN"
curl -X POST https://api.turkvps.cloud/v1/servers \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan_id": 1,
"os_id": 1,
"label": "my-server",
"root_password": "Str0ngP@ss1"
}'
# Response — 201 Created
{
"data": {
"id": 42, "label": "my-server",
"status": "provisioning",
"ip": "185.x.x.x", "plan": "Cloud — 1"
}
}
curl https://api.turkvps.cloud/v1/servers/42 \
-H "Authorization: Bearer $TOKEN"
curl -X PATCH https://api.turkvps.cloud/v1/servers/42 \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "label": "prod-web-01" }'
curl -X DELETE https://api.turkvps.cloud/v1/servers/42 \
-H "Authorization: Bearer $TOKEN"
# Start
curl -X POST https://api.turkvps.cloud/v1/servers/42/start \
-H "Authorization: Bearer $TOKEN"
# Stop
curl -X POST https://api.turkvps.cloud/v1/servers/42/stop \
-H "Authorization: Bearer $TOKEN"
# Restart
curl -X POST https://api.turkvps.cloud/v1/servers/42/restart \
-H "Authorization: Bearer $TOKEN"
curl -X POST https://api.turkvps.cloud/v1/servers/42/rebuild \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "os_id": 2, "password": "NewP@ss123" }'
curl -X POST https://api.turkvps.cloud/v1/servers/42/reset-password \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "password": "NewP@ss123" }'
curl -X POST https://api.turkvps.cloud/v1/servers/42/request-ip-change \
-H "Authorization: Bearer $TOKEN"
# Response — 201 Created
{
"data": {
"message": "check-host.net confirmed the connectivity issue — a free IP replacement request has been sent to our network team.",
"change_request_id": 17, "fee_charged": 0
}
}
# We independently verify the problem via check-host.net first — if it can't confirm
# an issue with your IP, nothing is changed and you'll get a 422 explaining why instead.
# The first replacement per server is free; every one after that is $1 (deducted from
# your wallet balance), unless a different rate has been arranged for your account.
# Rate limit: 20 requests/hour per account.
curl https://api.turkvps.cloud/v1/wallet \
-H "Authorization: Bearer $TOKEN"
# Response
{ "data": { "balance": "25.00", "currency": "USD" } }
curl https://api.turkvps.cloud/v1/wallet/transactions \
-H "Authorization: Bearer $TOKEN"
# List invoices
curl https://api.turkvps.cloud/v1/invoices \
-H "Authorization: Bearer $TOKEN"
# Single invoice
curl https://api.turkvps.cloud/v1/invoices/7 \
-H "Authorization: Bearer $TOKEN"
curl -X POST https://api.turkvps.cloud/v1/tickets \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"department_id": 1,
"title": "Server unreachable",
"body": "My server 42 has been unreachable for 10 minutes."
}'
curl https://api.turkvps.cloud/v1/tickets \
-H "Authorization: Bearer $TOKEN"
curl https://api.turkvps.cloud/v1/tickets/3 \
-H "Authorization: Bearer $TOKEN"
# Reply
curl -X POST https://api.turkvps.cloud/v1/tickets/3/reply \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "body": "Thanks, it is working now." }'
# Close
curl -X POST https://api.turkvps.cloud/v1/tickets/3/close \
-H "Authorization: Bearer $TOKEN"
Get your API token in seconds from the developer dashboard.