VPS.org API

REST API Documentation

API Yekutarisira DNS

Ronga maDNS zones uye nyora zvinyorwa zvemadomains ako uchishandisa purogiramu.

Magumo Mapoinzi mana ekupedzisira
Nzira Yekutanga /api/v1/dns-zones
Kusimbiswa Bearer Token Inodiwa

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

Zvinhu zviviri zvakakosha

Kusimbiswa

Zvese DNS API zvikumbiro zvinoda Bearer token authentication. Kugadzira API tokens kubva kune yako account dashboard pa /account/developers/ neaya masimba:

Mufananidzo

Authorization: Bearer vps_abc123def456...
Zvakanakira: API tokens zvinoratidzwa chete kamwe chete pavanogadzirwa. Tenga zvakachengeteka. Kana iwe ukarasikirwa ne token, unofanirwa kuburitsa imwe nyowani.
Tora /api/v1/dns-zones/

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
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/dns-zones/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
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())
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);

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
Tora /api/v1/dns-zones/{uuid}/

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
POST /api/v1/dns-zones/

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
Python
JavaScript
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"}'
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())
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);

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
DZIMA /api/v1/dns-zones/{uuid}/

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
Tora /api/v1/dns-zones/{uuid}/records/

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"
  }
]
POST /api/v1/dns-zones/{uuid}/records/

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
Python
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
  }'
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())

Makodhi eMamiriro eMhinduro

201 DNS record created successfully
400 Bad Request - Invalid parameters or validation error (e.g., MX record missing priority)
GET PUT PATCH DELETE /api/v1/dns-records/{uuid}/

Manage DNS Records (Direct Access)

Full CRUD zviitiko pazvimwe DNS zvinyorwa usinga record UUID.

Kuita kwawanikwa

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

Patterns

Kuchengetedzwa

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