Skep Dns sones en bestuur hulle rekords. Sones word bedien deur ns1.vps.org, ns2.vps.org en ns3.vps.org.
A zone holds the records for one domain. Every change you make through the API is pushed to the VPS.org nameservers straight away. To serve a domain from these zones, set its nameservers at your registrar to ns1.vps.org, ns2.vps.org and ns3.vps.org.
Changes are saved and published in one step: if the nameservers refuse a change, the request returns 502 and nothing is saved. A zone cannot be created for a domain another account already manages, a parent or child of another account's zone, or a VPS.org reserved name.
Benodigde toestemming:
dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*
Sit eers jou tydsones terug, nuutste, 25 per bladsy. Rekords word nie hier ingesluit nie; haal 'n enkele sone om dit te kry.
| Parameter | Tipe | Vereis | Beskrywing |
|---|---|---|---|
domain |
string | Nee | Gee slegs terug die sone met presies hierdie domein naam |
page |
integer | Nee | Bladsy nommer, beginne na 1 |
curl -X GET "https://admin.vps.org/api/v1/dns-zones/?domain=example.com" \
-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, params={"domain": "example.com"})
for zone in response.json()["results"]:
print(zone["uuid"], zone["domain"], zone["record_count"])
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/?domain=example.com', {
headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});
const data = await response.json();
console.log(data.results);
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
"domain": "example.com",
"created_at": "2026-09-06T03:11:48.829693Z",
"record_count": 5
}
]
}
| Veld | Tipe | Beskrywing |
|---|---|---|
uuid |
string | Zo_neidentifiseerder |
domain |
string | Domeinnaam, wat in die onderste kas gestoor word |
created_at |
datetime | Skeppingstyd (Iso 8601, UTC) |
record_count |
integer | Aantal rekords in die gebied, waaronder die drie NS-verslae |
| 200 | Sukses |
| 403 | Ontbrekende of ongeldige API-bewys, of die teken het nie die nodige toestemming nie |
Skep 'n sone en publiseer dit. Die sone begin met drie NS rekords vir ns1, ns2 en ns3.vps.org, wat stelselrekords is en nie geredigeer of geskrap kan word nie.
| Parameter | Tipe | Vereis | Beskrywing |
|---|---|---|---|
domain |
string | Ja | Die domeinnaam, byvoorbeeld.com |
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "example.com"}'
{
"uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c",
"domain": "example.com",
"created_at": "2026-09-14T21:02:11.402113Z",
"records": [
{
"uuid": "1f2e3d4c-5b6a-4978-8a9b-0c1d2e3f4a5b",
"record_type": "NS",
"name": "@",
"value": "ns1.vps.org",
"ttl": 86400,
"priority": null,
"created_at": "2026-09-14"
},
...
],
"record_count": 3
}
| 201 | Zone created |
| 400 | Ontbrekende of ongeldige domeinnaam |
Sit een sone terug met al sy verslae in 'n rekord skikking. Die reaksie het dieselfde vorm as die skep antwoord hierbo.
curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 200 | Sukses |
| 404 | Nie gevind nie, of dit behoort aan 'n ander rekening |
Verwyder die sone van al drie naambedieners, gaan na dat nie een van hulle dit nog dien nie, en dan verwyder die sone en sy rekords. As 'n naambediener nog steeds antwoorde vir die sone gee, sal die versoek misluk en die sone gehou word sodat jy weer kan.
curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 204 | Die reaksie het geen liggaam nie |
| 400 | 'n Naambediener dien nog steeds die sone. Die sone is nie geskrap nie; die details veld gee 'n lys van foute. |
| 404 | Nie gevind nie, of dit behoort aan 'n ander rekening |
Ry terug elke rekord in die sone as 'n eenvoudige skikking (nie gepigineerde) gesorteer deur tipe en naam. Die POS voeg 'n rekord by die sone en publiseer dit.
| Parameter | Tipe | Vereis | Beskrywing |
|---|---|---|---|
record_type |
string | Ja | A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA |
name |
string | Ja | @ die domein self, of'n etiket soos www. Name word in kleinletters gestoor. |
value |
string | Ja | Die verslagdata, byvoorbeeld 'n IP-adres of 'n masjien naam. Gasheernaams het nie 'n voetslaanpunt en TXT-waardes nodig nie aanhalings nie; albei word bygevoeg wanneer die rekord gepubliseer word. |
ttl |
integer | Ja | Tyd om in sekondes te lewe |
priority |
integer | MX en SRV slegs | Benodig vir MX en SRV rekords en ignoreer vir elke ander tipe. Vir SRV, sit gewig, poort en teiken in waarde. |
curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/records/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"record_type": "MX", "name": "@", "value": "mail.example.com", "ttl": 3600, "priority": 10}'
import requests
zone_uuid = "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c"
url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
data = {"record_type": "A", "name": "www", "value": "203.0.113.10", "ttl": 3600}
response = requests.post(url, headers=headers, json=data)
print(response.status_code, response.json())
{
"uuid": "9d430082-5562-42b4-a0b2-12a6f6c862f9",
"record_type": "MX",
"name": "@",
"value": "mail.example.com",
"ttl": 3600,
"priority": 10,
"created_at": "2026-09-14"
}
| Veld | Tipe | Beskrywing |
|---|---|---|
uuid |
string | Rekordidentifiseerder, gebruik deur die /api/v1/dns-records/ endpunte |
priority |
integer | null | Prioriteit vir MX en SRV-verslae, anders nulling |
created_at |
date | Die skeppingsdatum slegs (YYY-M-D), sonder 'n tyd |
| 200 | KRY: die sone se rekords |
| 201 | POS: rekord geskep |
| 400 | Geldige fout byvoorbeeld 'n onbekende rekord tipe,' n ontbrekende ttl, of 'n MX of SRV-rekord sonder prioriteit |
| 404 | Nie gevind nie, of dit behoort aan 'n ander rekening |
Stoot die sone en al sy rekords na die naam bedieners weer. Rekord verander word automaties gepubliseer, maar Die uitgewers is beste inspanning en 'n mislukking faal nie die oorspronklike versoek nie, so gebruik dit wanneer' n verandering nie in Dns- opkyke vertoon nie. versoek Geen liggaam is nodig nie.
curl -X POST "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/sync/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
{
"detail": "Zone example.com synced to PowerDNS"
}
Ry terug die rekords van al jou sones, 25 per bladsy, gesorteer deur domein, tipe en naam. POST skep 'n rekord soos die sone opneem punt, maar neem die sone in die liggaam as sone_uuid.
| Parameter | Tipe | Vereis | Beskrywing |
|---|---|---|---|
zone |
string | Nee | Slegs rekords van die sone met hierdie uid |
record_type |
string | Nee | Slegs verslae van hierdie tipe, byvoorbeeld MX (as ongevoelig) |
page |
integer | Nee | Bladsy nommer, beginne na 1 |
curl -X GET "https://admin.vps.org/api/v1/dns-records/?zone=c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c&record_type=A" \
-H "Authorization: Bearer YOUR_API_TOKEN"
curl -X POST "https://admin.vps.org/api/v1/dns-records/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"zone_uuid": "c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c", "record_type": "TXT", "name": "@", "value": "v=spf1 mx -all", "ttl": 3600}'
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f",
"record_type": "A",
"name": "www",
"value": "203.0.113.10",
"ttl": 3600,
"priority": null,
"created_at": "2026-09-14"
}
]
}
| 200 | KRY: sukses |
| 201 | POS: rekord geskep |
| 400 | Geldige fout, of sone_uuid ontbreek of nie een van jou sones nie |
Ry terug een opneem. Nader vervang dit en benodig opneem_type, naam, waarde en ttl. PATCH verander slegs die velde wat jy stuur. DE LETE verwyder die rekord en gee terug 204 met geen liggaam. Veranderinge word direk weg gepubliseer. Die NS verslae wat met die sone geskep is stelsel opneem: besig om dit te vervang of te verwyder gee terug 403.
curl -X PATCH "https://admin.vps.org/api/v1/dns-records/4b8e2c10-7d3f-4a5b-9e6c-1a2b3c4d5e6f/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ttl": 300}'
| 200 | KRY, MAAR of PATCH: die verslag |
| 204 | Die reaksie het geen liggaam nie |
| 400 | Geldige fout |
| 403 | Die rekord is 'n stelselrekord, of die teken het nie die benodigde toestemming nie |
| 404 | Nie gevind nie, of dit behoort aan 'n ander rekening |
Geldige foute terugkeer 400 met die probleem wat deur veldnaam bepaal word:
{
"priority": ["MX records require a priority value"]
}
Query the VPS.org nameservers directly to confirm a change is live before your registrar delegation or resolver caches catch up:
dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com