Pfupiso
DNS API inopa yakazara kudzora kweDNS nzvimbo uye zvinyorwa.Zvimwe nzvimbo dziri kuchengetwa paVPS.org's authoritative nameservers neazvino BIND9 zone file generation uye kumisikidza.
Nameserver Infrastructure
ns1.vps.org (38.248.6.195) - Primary master with DNSSEC inline-signing
ns2.vps.org (38.248.6.196) - Secondary slave
ns3.vps.org (38.248.6.197) - Secondary slave
Zvinhu zviviri zvakakosha
Automatic BIND9 zone file generation uye kumisikidza
Zone kushandura kuburikidza TSIG authentication (master-slave replication)
Kutsigira kwese kwakakosha DNS rekorti marudzi (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA)
Domain zita kuongorora uye UUID-based zone identification
Nested nzira dzemunharaunda-yakazvimirira ongororo management
Kusimbiswa
Zvese DNS API zvikumbiro zvinoda Bearer token authentication. Kugadzira API tokens kubva kune yako account dashboard pa /account/developers/ neaya masimba:
dns:list - Ona DNS nzvimbo uye zvinyorwa
dns:create - Create new zones and records
dns:update - Kuchinja zvinobva nzvimbo uye zvinyorwa
dns:delete - Delete zones and records
dns:* - Full DNS kudzora kuwanikwa
Mufananidzo
Authorization: Bearer vps_abc123def456...
Zvakanakira: API tokens zvinoratidzwa chete kamwe chete pavanogadzirwa. Tenga zvakachengeteka. Kana iwe ukarasikirwa ne token, unofanirwa kuburitsa imwe nyowani.
Nyora DNS Zones DNS DNS Zones Dzose
Retrieve a paginated list of all DNS zones owned by the authenticated user. Supports filtering by domain name.
Maparamita emibvunzo
Parameter
Rudzi
Zvinodiwa
Kutaura
domain
string
Hapana
Filter zones by exact domain name (e.g., example.com)
Muenzaniso weChikumbiro
curl -X GET "https://admin.vps.org/api/v1/dns-zones/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
_Kopa
import requests
url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
response = requests.get(url, headers=headers)
print(response.json())
_Kopa
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
headers: {'Authorization': 'Bearer YOUR_API_TOKEN'}
});
const zones = await response.json();
console.log(zones);
_Kopa
Muenzaniso weMhinduro
[
{
"uuid": "abc123-def456-ghi789",
"domain": "example.com",
"created_at": "2024-01-15T10:30:00Z",
"record_count": 12
},
{
"uuid": "xyz789-uvw456-rst123",
"domain": "myapp.io",
"created_at": "2024-06-20T14:15:00Z",
"record_count": 8
}
]
Minda Yemhinduro
_Firi
Rudzi
Kutaura
uuid
string
Unique zone identifier (used in API requests)
domain
string
Domain name for this DNS zone
created_at
datetime
Zone creation timestamp (ISO 8601 format)
record_count
integer
Total number of DNS records in this zone
Makodhi eMamiriro eMhinduro
200
Successfully retrieved DNS zones list
401
Unauthorized - Invalid or missing API token
403
Forbidden - Token lacks dns:list permission
Get DNS Zone Details
Kuwana ruzivo rwakadzama nezve DNS zone, kusanganisira zvese zvinyorwa.
MaParameter eNzira
Parameter
Rudzi
Zvinodiwa
Kutaura
uuid
string
Ehe
Unique zone identifier
Muenzaniso weMhinduro
{
"uuid": "abc123-def456-ghi789",
"domain": "example.com",
"created_at": "2024-01-15T10:30:00Z",
"record_count": 5,
"records": [
{
"uuid": "rec-001",
"record_type": "A",
"name": "@",
"value": "192.0.2.1",
"ttl": 3600,
"priority": null,
"created_at": "2024-01-15T10:30:00Z"
},
{
"uuid": "rec-002",
"record_type": "MX",
"name": "@",
"value": "mail.example.com",
"ttl": 3600,
"priority": 10,
"created_at": "2024-01-15T10:32:00Z"
}
]
}
Makodhi eMamiriro eMhinduro
200
Successfully retrieved zone details
404
Zone not found or not owned by user
DNS Zone
Create a new DNS zone for a domain. The zone will be immediately deployed to VPS.org nameservers.
Kumbira Maparamita Emuviri
Parameter
Rudzi
Zvinodiwa
Kutaura
domain
string
Ehe
Domain name (e.g., example.com)
Muenzaniso weChikumbiro
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "newdomain.com"}'
_Kopa
import requests
url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {"domain": "newdomain.com"}
response = requests.post(url, headers=headers, json=data)
print(response.json())
_Kopa
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({domain: 'newdomain.com'})
});
const zone = await response.json();
console.log(zone);
_Kopa
Muenzaniso weMhinduro
{
"uuid": "new-zone-uuid",
"domain": "newdomain.com",
"created_at": "2026-01-18T16:45:00Z",
"record_count": 0,
"records": []
}
Makodhi eMamiriro eMhinduro
201
DNS zone created successfully
400
Bad Request - Invalid domain name or zone already exists
403
Forbidden - Token lacks dns:create permission
DNS Zone
Kubvisa DNS nzvimbo uye zvese zvinopesana nerecords. Iyi chiitiko haigone kugadziriswa.
MaParameter eNzira
Parameter
Rudzi
Zvinodiwa
Kutaura
uuid
string
Ehe
Unique zone identifier
Makodhi eMamiriro eMhinduro
204
Zone deleted successfully (no response body)
403
Forbidden - Token lacks dns:delete permission
404
Zone not found
DNS Records muZvinyorwa
Retrieve ese DNS zvinyorwa zvenzvimbo (nested nzira).
MaParameter eNzira
Parameter
Rudzi
Zvinodiwa
Kutaura
uuid
string
Ehe
Zone UUID
Muenzaniso weChikumbiro
curl -X GET "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Muenzaniso weMhinduro
[
{
"uuid": "rec-001",
"record_type": "A",
"name": "@",
"value": "192.0.2.1",
"ttl": 3600,
"priority": null,
"created_at": "2024-01-15T10:30:00Z"
},
{
"uuid": "rec-002",
"record_type": "MX",
"name": "@",
"value": "mail.example.com",
"ttl": 3600,
"priority": 10,
"created_at": "2024-01-15T10:32:00Z"
}
]
Create DNS Record in Zone
Add a new DNS record to a specific zone (nested route) - Dzvanya pane iyo DNS record kuti uwane iyo DNS record.
Kumbira Maparamita Emuviri
Parameter
Rudzi
Zvinodiwa
Kutaura
record_type
string
Ehe
Record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA
name
string
Ehe
Record name (@ for root, subdomain, or FQDN)
value
string
Ehe
Record value (IP address, hostname, text)
ttl
integer
No
Time to live in seconds (default: 3600)
priority
integer
For MX/SRV
Priority (required for MX and SRV records)
Muenzaniso weChikumbiro
curl -X POST "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"record_type": "A",
"name": "www",
"value": "192.0.2.1",
"ttl": 3600
}'
_Kopa
import requests
url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {
"record_type": "A",
"name": "www",
"value": "192.0.2.1",
"ttl": 3600
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
_Kopa
Makodhi eMamiriro eMhinduro
201
DNS record created successfully
400
Bad Request - Invalid parameters or validation error (e.g., MX record missing priority)
Manage DNS Records (Direct Access)
Full CRUD zviitiko pazvimwe DNS zvinyorwa usinga record UUID.
Kuita kwawanikwa
GET /api/v1/dns-records/{uuid}/ - Retrieve record details
PUT /api/v1/dns-records/{uuid}/ - Full update (all fields required)
PATCH /api/v1/dns-records/{uuid}/ - Partial update (only changed fields)
DELETE /api/v1/dns-records/{uuid}/ - Delete record
Query Parameter (for GET /api/v1/dns-records/)
Parameter
Rudzi
Kutaura
zone
string
Filter records by zone UUID
record_type
string
Filter by record type (A, AAAA, MX, etc.)
Example: Update TTL yeRecord
curl -X PATCH "https://admin.vps.org/api/v1/dns-records/{rec-uuid}/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ttl": 1800}'
Supported DNS Record Types
Rudzi
Purpose
Example Value
Priority Required
A
Maps domain to IPv4 address
192.0.2.1
Hapana
AAAA
Maps domain to IPv6 address
2001:0db8::1
Hapana
CNAME
Creates alias to another domain
example.com
Hapana
MX
Mail server for domain
mail.example.com
Ehe
TXT
Text record (SPF, DKIM, verification)
v=spf1 include:_spf.google.com ~all
Hapana
NS
Nameserver delegation
ns1.example.com
Hapana
SRV
Service location record
10 5060 sip.example.com
Ehe
CAA
Certificate authority authorization
0 issue "letsencrypt.org"
Hapana
Best Practices
TTL Kugadziridza
Kugadzira (yakachengeteka): 3600-86400 masekondi (1-24 hrs)
Pashure pekuchinja: 300-600 masekondi (5-10 maminitsi) - Lower TTL pamberi pezvirongwa zveshanduko
Kuvandudzwa: 300-1800 masekondi (5-30 maminitsi) kune yakakwira-yekuongorora
Patterns
Rudzi rwedomain (@): Usashandisa A/AAAA zvinyorwa, kwete CNAME
www subdomain: Anogona kushandisa CNAME kuratidzwa ku root kana kuparadzanisa A rekor
Email (MX): Always kusanganisira chinzvimbo, pasi nhamba = yepamusoro chinzvimbo
_CNAME: Hachisi chinhu chinoita kuti zvivepo pamwe nevamwe vatambi vemufananidzo wechimwe zita
Kuchengetedzwa
CAA Records: Chidzai CAs dzinogona kupa zvitupa
SPF/DKIM/DMARC: Kugadzirisa email authentication kuti udzivirire spoofing
Zvirongwa zvekuongorora: Refresh DNS zvinyorwa quarterly, bvisa zvisina kushandiswa entries
Kugadziriswa kwematambudziko
Maitiro Anowanzoitika
Kodhi yeChinzvimbo
_Dambudziko:
Kugadzirisa
400
Iva nezita redomain
Kuita kuti domain itevedzere DNS naming conventions
400
MX record inodiwa
Kusanganisira priority MX uye SRV zvinyorwa
401
API token isina kunaka
Check token format (munofanira kutanga ne vps_)
403
Kushaya mvumo
Kugadzira nyowani token ine zvinodiwa dns:* _Zvimwe permissions
404
Zvinyorwa hazvina kuwanikwa
Verify UUID and ensure resource belongs to your account
Mufananidzo weKukanganisa Kudzokera
{
"detail": "MX records require a priority value",
"error_code": "validation_error",
"field": "priority"
}
Kuongorora DNS Zvigadziriso
Kuongorora Kupararira kweRecord
# Query A record
dig example.com A
# Query specific nameserver
dig @ns1.vps.org example.com
# Query MX records
dig example.com MX
# Check all records
dig example.com ANY
Kushandisa Online Zvirongwa
whatsmydns.net: Check global DNS propagation
dnschecker.org: Multi-location DNS lookup
mxtoolbox.com: Email-related DNS testing