Erstellen Sie DNS-Zonen und verwalten Sie ihre Datensätze. Zonen werden von ns1.vps.org, ns2.vps.org und ns3.vps.org bedient.
Eine Zone enthält die Datensätze für eine Domain. Jede Änderung, die Sie über die API vornehmen, wird sofort auf die VPS.org-Namensserver geschoben. Um eine Domain aus diesen Zonen zu bedienen, stellen Sie ihre Nameserver auf Ihrem Registrar ns1.vps.org, ns2.vps.org und ns3.vps.org.
Änderungen werden in einem Schritt gespeichert und veröffentlicht: Wenn die Nameserver eine Änderung ablehnen, wird 502 zurückgeliefert und nichts gespeichert. Eine Zone kann nicht für eine Domäne erstellt werden, die ein anderes Konto bereits verwaltet, ein Elternteil oder ein Kind der Zone eines anderen Kontos oder ein VPS.org reservierter Name.
Erforderliche Genehmigung:
dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*
Gibt Ihre Zonen zurück, die neuesten ersten 25 pro Seite. Aufzeichnungen sind hier nicht enthalten; holen Sie eine einzelne Zone, um sie zu erhalten.
| Parameter | Typ | Erforderlich | Description |
|---|---|---|---|
domain |
string | No | Nur die Zone mit genau diesem Domainnamen zurückgeben |
page |
integer | No | Seitennummer, beginnend bei 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
}
]
}
| Feld | Typ | Description |
|---|---|---|
uuid |
string | Gebietskennung |
domain |
string | Domainname, in Kleinbuchstaben gespeichert |
created_at |
datetime | Erstellungszeit (ISO 8601, UTC) |
record_count |
integer | Anzahl der Aufzeichnungen in der Zone, einschließlich der drei NS-Datensätze |
| 200 | Erfolg |
| 403 | Fehlendes oder ungültiges API-Token oder dem Token fehlt die erforderliche Berechtigung |
Erstellt eine Zone und veröffentlicht sie. Die Zone beginnt mit drei NS-Datensätzen für ns1, ns2 und ns3.vps.org, die System-Datensätze sind und nicht bearbeitet oder gelöscht werden können.
| Parameter | Typ | Erforderlich | Description |
|---|---|---|---|
domain |
string | Ja | Der Domainname, zum Beispiel.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 erstellt |
| 400 | Fehlender oder ungültiger Domainname |
Gibt eine Zone mit allen Datensätzen in einem Datensatz-Array zurück. Die Antwort hat die gleiche Form wie die oben genannte Antwort erzeugen.
curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 200 | Erfolg |
| 404 | Nicht gefunden, oder es gehört zu einem anderen Konto |
Entfernt die Zone von allen drei Nameservern, überprüft, ob keiner von ihnen noch dient, und löscht dann die Zone und ihre Datensätze. Wenn ein Nameserver immer noch auf die Zone antwortet, scheitert die Anfrage und die Zone wird so aufbewahrt, dass Sie erneut versuchen können.
curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 204 | Die Antwort hat keine Leiche. |
| 400 | Ein Nameserver dient weiterhin der Zone. Die Zone wurde nicht gelöscht; das Detailfeld listet die Fehler auf. |
| 404 | Nicht gefunden, oder es gehört zu einem anderen Konto |
GET gibt jeden Datensatz in der Zone als ein einfaches Array (nicht paginiert) zurück, sortiert nach Typ und Name. POST fügt einen Datensatz in die Zone hinzu und veröffentlicht ihn.
| Parameter | Typ | Erforderlich | Description |
|---|---|---|---|
record_type |
string | Ja | A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA |
name |
string | Ja | @ für die Domain selbst, oder ein Label wie www.Namen werden in Kleinbuchstaben gespeichert. |
value |
string | Ja | Die Datensatzdaten, z.B. eine IP-Adresse oder ein Hostname. Hostnames benötigen keinen trailing dot und TXT-Werte brauchen keine Anführungszeichen; beide werden bei der Veröffentlichung des Datensatzes hinzugefügt. |
ttl |
integer | Ja | Zeit in Sekunden zu leben |
priority |
integer | Nur MX und SRV | Erforderlich für MX und SRV zeichnet und ignoriert für jeden anderen Typ. Für SRV, Gewicht, Port und Ziel in Wert setzen. |
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"
}
| Feld | Typ | Description |
|---|---|---|
uuid |
string | Datensatzkennung, die von den /api/v1/dns-Datensätzen/ Endpunkten verwendet wird |
priority |
integer | null | Priorität für MX- und SRV-Datensätze, sonst null |
created_at |
date | Erstellungsdatum (J-MM-TT), ohne Zeit |
| 200 | GET: Die Aufzeichnungen der Zone |
| 201 | POST: Datensatz erstellt |
| 400 | Validierungsfehler, z.B. ein unbekannter Datensatztyp, ein fehlender ttl oder ein MX- oder SRV-Datensatz ohne Priorität |
| 404 | Nicht gefunden, oder es gehört zu einem anderen Konto |
Drückt die Zone und alle ihre Datensätze wieder auf die Nameserver. Record Änderungen werden automatisch veröffentlicht, aber die Veröffentlichung ist beste Anstrengung und ein Fehler nicht die ursprüngliche Anforderung fehlschlägt, so verwenden Sie dies, wenn eine Änderung nicht in DNS-Suchen angezeigt. Keine Anforderung Körper erforderlich ist.
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 liefert die Datensätze aller Zonen, 25 pro Seite, geordnet nach Domäne, Typ und Name. POST erstellt einen Datensatz wie den Zonen-Datensatz Endpunkt, nimmt aber die Zone im Körper als zone_uuid.
| Parameter | Typ | Erforderlich | Description |
|---|---|---|---|
zone |
string | No | Nur Aufzeichnungen der Zone mit dieser Uuid |
record_type |
string | No | Nur Datensätze dieses Typs, z.B. MX (Fallunempfindlich) |
page |
integer | No | Seitennummer, beginnend bei 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: Erfolg |
| 201 | POST: Datensatz erstellt |
| 400 | Validierungsfehler oder zone_uuid fehlt oder nicht eine Ihrer Zonen |
GET gibt einen Datensatz zurück. PUT ersetzt ihn und benötigt Record_type, Name, Wert und ttl. PATCH ändert nur die Felder, die Sie senden. DELETE entfernt den Datensatz und gibt 204 ohne Körper zurück. Änderungen werden sofort veröffentlicht. Die mit der Zone erstellten NS-Datensätze sind Systemaufzeichnungen: Aktualisierung oder Löschen liefert 403 zurück.
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 oder PATCH: der Datensatz |
| 204 | Die Antwort hat keine Leiche. |
| 400 | Validierungsfehler |
| 403 | Der Datensatz ist ein System-Record, oder das Token fehlt die erforderliche Berechtigung |
| 404 | Nicht gefunden, oder es gehört zu einem anderen Konto |
Validierungsfehler liefern 400 mit dem Problem, das nach Feldnamen markiert ist:
{
"priority": ["MX records require a priority value"]
}
Abfragen der VPS.org Nameserver direkt, um eine Änderung zu bestätigen ist live, bevor Ihre Registrar Delegation oder Resolver Caches aufholen:
dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com