List All Domains
Retrieve a list of all domains registered under your account.
Query Parameters
Parameter
Type
Required
Description
status
string
No
Filter by status: active, pending, expired, locked
search
string
No
Search domains by name
Example Request
curl -X GET "https://admin.vps.org/api/v1/domains/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"
Copy
import requests
url = "https://admin.vps.org/api/v1/domains/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
Copy
const response = await fetch('https://admin.vps.org/api/v1/domains/', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
});
const domains = await response.json();
console.log(domains);
Copy
Example Response
{
"count": 3,
"results": [
{
"id": 101,
"domain_name": "example.com",
"status": "active",
"registration_date": "2023-01-15T10:30:00Z",
"expiration_date": "2026-01-15T10:30:00Z",
"auto_renew": true,
"locked": true,
"nameservers": [
"ns1.vps.org",
"ns2.vps.org"
],
"privacy_protection": true,
"dns_managed_by": "vps.org"
},
{
"id": 102,
"domain_name": "myapp.io",
"status": "active",
"registration_date": "2024-06-20T14:15:00Z",
"expiration_date": "2025-06-20T14:15:00Z",
"auto_renew": false,
"locked": false,
"nameservers": [
"ns1.cloudflare.com",
"ns2.cloudflare.com"
],
"privacy_protection": false,
"dns_managed_by": "external"
}
]
}
Response Status Codes
200
Successfully retrieved domains list
401
Unauthorized - Invalid or missing authentication token
Register New Domain
Register a new domain name. Domain availability should be checked before registration.
Request Body Parameters
Parameter
Type
Required
Description
domain_name
string
Yes
Domain name to register (e.g., "example.com")
years
integer
No
Registration period in years (1-10, default: 1)
auto_renew
boolean
No
Enable automatic renewal (default: true)
privacy_protection
boolean
No
Enable WHOIS privacy protection (default: true)
nameservers
array
No
Custom nameservers (default: VPS.org nameservers)
Example Request
cURL
Python
JavaScript
PHP
curl -X POST "https://admin.vps.org/api/v1/domains/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"domain_name": "mynewdomain.com",
"years": 2,
"auto_renew": true,
"privacy_protection": true
}'
Copy
import requests
url = "https://admin.vps.org/api/v1/domains/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {
"domain_name": "mynewdomain.com",
"years": 2,
"auto_renew": True,
"privacy_protection": True
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
Copy
const response = await fetch('https://admin.vps.org/api/v1/domains/', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
domain_name: 'mynewdomain.com',
years: 2,
auto_renew: true,
privacy_protection: true
})
});
const domain = await response.json();
console.log(domain);
Copy
$data = [
'domain_name' => 'mynewdomain.com',
'years' => 2,
'auto_renew' => true,
'privacy_protection' => true
];
$ch = curl_init('https://admin.vps.org/api/v1/domains/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer YOUR_API_TOKEN',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$domain = json_decode($response, true);
curl_close($ch);
Copy
Example Response
{
"id": 103,
"domain_name": "mynewdomain.com",
"status": "pending",
"registration_date": "2026-01-16T16:00:00Z",
"expiration_date": "2028-01-16T16:00:00Z",
"auto_renew": true,
"locked": true,
"nameservers": [
"ns1.vps.org",
"ns2.vps.org"
],
"privacy_protection": true,
"dns_managed_by": "vps.org",
"total_cost": 24.98,
"message": "Domain registration initiated. Processing may take 5-10 minutes."
}
Response Status Codes
201
Domain registration initiated successfully
400
Bad Request - Invalid domain name or domain already registered
401
Unauthorized - Invalid or missing authentication token
402
Payment Required - Insufficient account balance
Note: Domain registration is not instant. Status will change from pending to active within 5-10 minutes. You'll receive an email confirmation when registration completes.
Get Domain Details
Retrieve detailed information about a specific domain.
Path Parameters
Parameter
Type
Required
Description
domain_id
integer
Yes
Unique domain ID
Example Request
curl -X GET "https://admin.vps.org/api/v1/domains/101/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"
Copy
import requests
domain_id = 101
url = f"https://admin.vps.org/api/v1/domains/{domain_id}/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
Copy
const domainId = 101;
const response = await fetch(`https://admin.vps.org/api/v1/domains/${domainId}/`, {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
});
const domain = await response.json();
console.log(domain);
Copy
Example Response
{
"id": 101,
"domain_name": "example.com",
"status": "active",
"registration_date": "2023-01-15T10:30:00Z",
"expiration_date": "2026-01-15T10:30:00Z",
"auto_renew": true,
"locked": true,
"nameservers": [
"ns1.vps.org",
"ns2.vps.org"
],
"privacy_protection": true,
"dns_managed_by": "vps.org",
"registrar": "VPS.org",
"days_until_expiration": 730,
"whois_info": {
"registrant": "Privacy Protected",
"admin_contact": "Privacy Protected",
"tech_contact": "Privacy Protected",
"created_date": "2023-01-15",
"updated_date": "2025-12-20"
},
"dns_records_count": 12
}
Response Status Codes
200
Successfully retrieved domain details
401
Unauthorized - Invalid or missing authentication token
404
Not Found - Domain does not exist
Update Domain Settings
Update domain configuration such as auto-renewal, nameservers, and privacy settings.
Path Parameters
Parameter
Type
Required
Description
domain_id
integer
Yes
Unique domain ID
Request Body Parameters
Parameter
Type
Required
Description
auto_renew
boolean
No
Enable or disable automatic renewal
privacy_protection
boolean
No
Enable or disable WHOIS privacy
nameservers
array
No
Update nameservers (2-4 nameservers required)
locked
boolean
No
Lock or unlock domain to prevent transfers
Example Request
curl -X PUT "https://admin.vps.org/api/v1/domains/101/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auto_renew": false,
"nameservers": [
"ns1.cloudflare.com",
"ns2.cloudflare.com"
]
}'
Copy
import requests
domain_id = 101
url = f"https://admin.vps.org/api/v1/domains/{domain_id}/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {
"auto_renew": False,
"nameservers": [
"ns1.cloudflare.com",
"ns2.cloudflare.com"
]
}
response = requests.put(url, headers=headers, json=data)
print(response.json())
Copy
const domainId = 101;
const response = await fetch(`https://admin.vps.org/api/v1/domains/${domainId}/`, {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
auto_renew: false,
nameservers: [
'ns1.cloudflare.com',
'ns2.cloudflare.com'
]
})
});
const domain = await response.json();
console.log(domain);
Copy
Example Response
{
"id": 101,
"domain_name": "example.com",
"status": "active",
"auto_renew": false,
"nameservers": [
"ns1.cloudflare.com",
"ns2.cloudflare.com"
],
"privacy_protection": true,
"locked": true,
"message": "Domain settings updated successfully. Nameserver changes may take up to 24 hours to propagate."
}
Response Status Codes
200
Domain updated successfully
400
Bad Request - Invalid parameters
401
Unauthorized - Invalid or missing authentication token
404
Not Found - Domain does not exist
Delete Domain
Delete a domain from your account. This does not cancel the domain registration - it only removes it from your VPS.org account management.
Path Parameters
Parameter
Type
Required
Description
domain_id
integer
Yes
Unique domain ID
Example Request
curl -X DELETE "https://admin.vps.org/api/v1/domains/101/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"
Copy
import requests
domain_id = 101
url = f"https://admin.vps.org/api/v1/domains/{domain_id}/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
response = requests.delete(url, headers=headers)
print(response.status_code)
Copy
const domainId = 101;
const response = await fetch(`https://admin.vps.org/api/v1/domains/${domainId}/`, {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
});
console.log(response.status);
Copy
Response Status Codes
204
Domain removed from account successfully
401
Unauthorized - Invalid or missing authentication token
404
Not Found - Domain does not exist
Important: Deleting a domain from your VPS.org account does NOT cancel the registration. The domain will continue to be registered and will auto-renew if enabled. To cancel a domain registration, disable auto-renewal and let it expire.
Transfer Domain
Initiate a domain transfer to VPS.org from another registrar.
Path Parameters
Parameter
Type
Required
Description
domain_id
integer
Yes
Unique domain ID
Request Body Parameters
Parameter
Type
Required
Description
auth_code
string
Yes
EPP/Authorization code from current registrar
auto_renew
boolean
No
Enable auto-renewal after transfer (default: true)
Example Request
curl -X POST "https://admin.vps.org/api/v1/domains/101/transfer/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auth_code": "Xy9Kl2Mn#4pQ",
"auto_renew": true
}'
Copy
import requests
domain_id = 101
url = f"https://admin.vps.org/api/v1/domains/{domain_id}/transfer/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {
"auth_code": "Xy9Kl2Mn#4pQ",
"auto_renew": True
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
Copy
const domainId = 101;
const response = await fetch(`https://admin.vps.org/api/v1/domains/${domainId}/transfer/`, {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
auth_code: 'Xy9Kl2Mn#4pQ',
auto_renew: true
})
});
const transfer = await response.json();
console.log(transfer);
Copy
Example Response
{
"id": 101,
"domain_name": "example.com",
"transfer_status": "pending",
"transfer_initiated_at": "2026-01-16T16:30:00Z",
"estimated_completion": "2026-01-23T16:30:00Z",
"message": "Domain transfer initiated. You should receive a confirmation email from your current registrar. Transfer typically completes within 5-7 days.",
"next_steps": [
"Check email for transfer authorization request",
"Approve transfer with current registrar",
"Wait for transfer to complete (5-7 days)",
"Domain will be automatically renewed for 1 year upon completion"
]
}
Response Status Codes
200
Transfer initiated successfully
400
Bad Request - Invalid auth code or domain not eligible for transfer
401
Unauthorized - Invalid or missing authentication token
404
Not Found - Domain does not exist
402
Payment Required - Insufficient account balance for transfer fee
Transfer Requirements:
Domain must be unlocked at current registrar
Domain must be at least 60 days old
Valid EPP/Auth code required
WHOIS email must be accessible for approval
Transfer includes 1-year renewal (fee applies)
Domain Pricing
Popular TLDs
TLD
Registration (1 year)
Renewal
Transfer
.com
$12.99
$12.99
$12.99
.net
$14.99
$14.99
$14.99
.org
$13.99
$13.99
$13.99
.io
$39.99
$39.99
$39.99
.dev
$14.99
$14.99
$14.99
.app
$14.99
$14.99
$14.99
.co
$24.99
$24.99
$24.99
Included Features
✓ Free WHOIS Privacy Protection
✓ Free DNS Management
✓ Free Email Forwarding
✓ Free Domain Forwarding
✓ Free Domain Locking
✓ 24/7 Support
✓ Easy Domain Management
✓ Auto-Renewal Option
Domain Management Best Practices
Security
Enable Domain Locking: Prevents unauthorized transfers
Enable Privacy Protection: Hides your personal information from WHOIS
Use Strong Passwords: Protect your VPS.org account
Enable 2FA: Add extra security to your account
Monitor Expiration Dates: Set up auto-renewal or calendar reminders
Configuration
DNS Setup: Point nameservers to VPS.org for easy management
Auto-Renewal: Enable to prevent accidental domain expiration
Contact Information: Keep WHOIS contact info up to date
Backup DNS: Consider secondary DNS provider for redundancy
Transfers
60-Day Lock: Domains can't be transferred within 60 days of registration or previous transfer
Unlock Domain: Must be unlocked at current registrar before transfer
Get Auth Code: Request EPP/authorization code from current registrar
Check Email: You'll receive approval emails during transfer process
Plan Ahead: Transfers can take 5-7 days to complete