Maak DNS zones aan en beheer hun records. Zones worden bediend door ns1.vps.org, ns2.vps.org en ns3.vps.org.
Een zone bevat de records voor één domein. Elke verandering die u maakt door middel van de API wordt direct naar de VPS.org nameservers geduwd. Om een domein uit deze zones te dienen, zet u de nameservers op uw registrar op ns1.vps.org, ns2.vps.org en ns3.vps.org.
Wijzigingen worden in één stap opgeslagen en gepubliceerd: als de nameservers een wijziging weigeren, geeft het verzoek 502 terug en wordt er niets opgeslagen. Een zone kan niet worden aangemaakt voor een domein dat een ander account al beheert, een ouder of kind van een andere accountzone, of een VPS.org gereserveerde naam.
Vereiste toestemming:
dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*
Geeft uw zones terug, de nieuwste eerst, 25 per pagina. Records zijn hier niet opgenomen; haal een enkele zone om ze te krijgen.
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
domain |
string | Nee | Alleen de zone met precies deze domeinnaam teruggeven |
page |
integer | Nee | Paginanummer, te beginnen bij 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 | Type | Omschrijving |
|---|---|---|
uuid |
string | Gebiedsidentificatie |
domain |
string | Domeinnaam, opgeslagen in kleine letters |
created_at |
datetime | Creatietijd (ISO 8601, UTC) |
record_count |
integer | Aantal records in de zone, inclusief de drie NS-records |
| 200 | Succes |
| 403 | Ontbrekende of ongeldige API token, of het token mist de vereiste toestemming |
Maakt een zone aan en publiceert deze. De zone begint met drie NS records voor ns1, ns2 en ns3.vps.org, die systeemrecords zijn en niet kunnen worden bewerkt of verwijderd.
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
domain |
string | Ja | De domeinnaam, bijvoorbeeld.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 | Aangevinkt gebied |
| 400 | Ontbrekende of ongeldige domeinnaam |
Geeft één zone terug met al zijn records in een record-array. De respons heeft dezelfde vorm als de aanmaakrespons hierboven.
curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 200 | Succes |
| 404 | Niet gevonden, of het behoort tot een andere account |
Verwijdert de zone van alle drie nameservers, controleert of geen van hen het nog dient, en verwijdert vervolgens de zone en de records. Als een nameserver nog steeds antwoordt voor de zone, het verzoek mislukt en de zone wordt bewaard zodat u kunt opnieuw proberen.
curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 204 | Verwijderd. Het antwoord heeft geen lichaam. |
| 400 | Een nameserver dient nog steeds de zone. De zone is niet verwijderd; het detailveld geeft de fouten weer. |
| 404 | Niet gevonden, of het behoort tot een andere account |
GET geeft elke record in de zone terug als een gewone array (niet gepagineerd), gesorteerd op type en naam. POST voegt een record toe aan de zone en publiceert het.
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
record_type |
string | Ja | A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA |
name |
string | Ja | @ voor het domein zelf, of een label zoals www. Namen worden opgeslagen in kleine letters. |
value |
string | Ja | De recordgegevens, bijvoorbeeld een IP-adres of een hostnaam. Hostnamen hebben geen aansluitende stip nodig en TXT-waarden hebben geen citaten nodig; beide worden toegevoegd wanneer de record wordt gepubliceerd. |
ttl |
integer | Ja | Tijd om in seconden te leven |
priority |
integer | Alleen MX en SRV | Vereist voor MX en SRV records en genegeerd voor elk ander type. Voor SRV, zet gewicht, poort en doel 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 | Type | Omschrijving |
|---|---|---|
uuid |
string | Record-identificatiecode, gebruikt door de /api/v1/dns-records/eindpunten |
priority |
integer | null | Prioriteit voor MX- en SRV-records, anders nul |
created_at |
date | Aanmaakdatum alleen (J-MM-DD), zonder tijd |
| 200 | De records van de zone |
| 201 | POST: record aangemaakt |
| 400 | Validatiefout, bijvoorbeeld een onbekend recordtype, een ontbrekende ttl of een MX- of SRV-record zonder prioriteit |
| 404 | Niet gevonden, of het behoort tot een andere account |
Drukt de zone en al haar records weer op de nameservers. Record wijzigingen worden automatisch gepubliceerd, maar publiceren is de beste moeite en een fout niet teniet doen aan de oorspronkelijke aanvraag, dus gebruik dit wanneer een wijziging niet verschijnt in DNS opzoekingen. Er is geen aanvraag body nodig.
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"
}
GET geeft de records van al uw zones terug, 25 per pagina, geordend per domein, type en naam. POST maakt een record zoals het zone record eindpunt, maar neemt de zone in het lichaam als zone_uuid.
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
zone |
string | Nee | Alleen records van de zone met deze uuid |
record_type |
string | Nee | Alleen records van dit type, bijvoorbeeld MX (letterlijk ongevoelig) |
page |
integer | Nee | Paginanummer, te beginnen bij 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 | GET: succes |
| 201 | POST: record aangemaakt |
| 400 | Validatiefout, of zone_uuid ontbreekt of niet een van uw zones |
GET geeft één record terug. PUT vervangt het en heeft record_type, naam, waarde en ttl nodig. PATCH verandert alleen de velden die u verstuurt. DELETE verwijdert het record en geeft 204 terug zonder body. Wijzigingen worden direct gepubliceerd. De NS records die met de zone zijn systeemrecords: updaten of verwijderen geeft 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 | GET, PUT of PATCH: het record |
| 204 | Verwijderd. Het antwoord heeft geen lichaam. |
| 400 | Validatiefout |
| 403 | De record is een systeemrecord, of het token mist de vereiste toestemming |
| 404 | Niet gevonden, of het behoort tot een andere account |
Validatiefouten geven 400 terug met het probleem dat wordt gesleuteld door veldnaam:
{
"priority": ["MX records require a priority value"]
}
Zoek de VPS.org nameservers direct op om te bevestigen dat een wijziging live is voordat uw registrar delegatie of resolver caches inhalen:
dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com