Skapa DNS- zoner och hantera deras poster. Zoner betjänas av ns1.vps.org, ns2.vps.org och ns3.vps.org.
En zon innehåller posterna för en domän. Varje ändring du gör genom API:et trycks direkt till namnservrarna VPS.org. För att tjäna en domän från dessa zoner, ställ in dess namnservrar på din registrar till ns1.vps.org, ns2.vps.org och ns3.vps.org.
Ändringar sparas och publiceras i ett steg: om namnservrarna vägrar att ändra, returnerar begäran 502 och ingenting sparas. En zon kan inte skapas för ett domänkonto som ett annat konto redan hanterar, en förälder eller ett barn till ett annat kontos zon, eller ett reserverat namn VPS.org.
Krav på tillstånd:
dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*
Returnerar dina zoner, nyaste först, 25 per sida. Rekord ingår inte här; hämta en enda zon för att få dem.
| Parameter | Typ | Nödvändig | Varuslag |
|---|---|---|---|
domain |
string | Ej tillämpligt | Returnera bara zonen med exakt detta domännamn |
page |
integer | Ej tillämpligt | Sidnummer, med början på 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
}
]
}
| Fält | Typ | Varuslag |
|---|---|---|
uuid |
string | Zonbeteckning |
domain |
string | Domännamn, lagrat i små bokstäver |
created_at |
datetime | Tid för skapande (ISO 8601, UTC) |
record_count |
integer | Antal uppgifter i zonen, inklusive de tre NS-rapporterna |
| 200 | Lyckades |
| 403 | Saknas eller ogiltig API- token, eller token saknar den behörighet som krävs |
Skapar en zon och publicerar den. Zonen börjar med tre NS- poster för ns1, ns2 och ns3.vps.org, som är systemposter och kan inte redigeras eller tas bort.
| Parameter | Typ | Nödvändig | Varuslag |
|---|---|---|---|
domain |
string | Ja | Domännamnet, till exempel.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 | Zon skapad |
| 400 | Saknar eller ogiltigt domännamn |
Returnerar en zon med alla sina poster i en skivuppsättning. Svaret har samma form som skapar respons ovan.
curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 200 | Lyckades |
| 404 | Inte hittat, eller det tillhör ett annat konto |
Tar bort zonen från alla tre namnservrar, kontrollerar att ingen av dem fortfarande tjänar den, och sedan tar bort zonen och dess poster. Om en namnserver fortfarande svarar för zonen, misslyckas begäran och zonen behålls så att du kan försöka igen.
curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 204 | Deleted. The response has no body. |
| 400 | En namnserver tjänar fortfarande zonen. Zonen togs inte bort. Detaljfältet listar felen. |
| 404 | Inte hittat, eller det tillhör ett annat konto |
Få returnerar varje post i zonen som en vanlig array (inte sidnumrerad), sorterad efter typ och namn. POST lägger till en post till zonen och publicerar den.
| Parameter | Typ | Nödvändig | Varuslag |
|---|---|---|---|
record_type |
string | Ja | A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA |
name |
string | Ja | @ för domänen själv, eller en etikett som www. Namn lagras i små bokstäver. |
value |
string | Ja | Postdata, till exempel en IP- adress eller ett värdnamn. Värddatornamn behöver inte en avslutande punkt och TXT- värden behöver inte citat, båda läggs till när posten publiceras. |
ttl |
integer | Ja | Dags att leva i sekunder |
priority |
integer | Endast MX och SRV | Krävs för MX och SRV poster och ignoreras för alla andra typer. För SRV, sätta vikt, port och mål i värde. |
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"
}
| Fält | Typ | Varuslag |
|---|---|---|
uuid |
string | Postidentifiering, som används av /api/v1/dns-rekord/slutpunkter |
priority |
integer | null | Prioritet för MX och SRV-poster, annars ogiltig |
created_at |
date | Endast datum för utfärdande (Å-MM-DD), utan tidsbegränsning |
| 200 | FÅ: zonens register |
| 201 | POST: Skiva skapad |
| 400 | Valideringsfel, t.ex. en okänd posttyp, en saknad Ttl, eller en MX- eller SRV-post utan prioritet |
| 404 | Inte hittat, eller det tillhör ett annat konto |
Trycker zonen och alla dess poster till namnservrarna igen. Spela in ändringar publiceras automatiskt, men publicering är bästa ansträngning och ett misslyckande inte misslyckas den ursprungliga begäran, så använd detta när en förändring inte visas i DNS-lookups. Ingen begäran kropp behövs.
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"
}
Få tillbaka posterna för alla dina zoner, 25 per sida, beställd efter domän, typ och namn. POST skapar en post som zon poster endpoint, men tar zonen i kroppen som zon_uuid.
| Parameter | Typ | Nödvändig | Varuslag |
|---|---|---|---|
zone |
string | Ej tillämpligt | Endast uppgifter om zonen med denna uuid |
record_type |
string | Ej tillämpligt | Endast poster av denna typ, t.ex. MX (fallokänslig) |
page |
integer | Ej tillämpligt | Sidnummer, med början på 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: framgång |
| 201 | POST: Skiva skapad |
| 400 | Valideringsfel, eller zon_uuid saknas eller inte en av dina zoner |
Få returnerar en post. PUT ersätter den och behöver record_type, namn, värde och ttl. PATCH ändrar bara fälten du skickar. DELETE tar bort posten och returnerar 204 utan kropp. Ändringar publiceras direkt. NS-poster skapade med zonen är systemposter: uppdatera eller ta bort dem returnerar 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 | FÅ, PUT eller PATCH: skivan |
| 204 | Deleted. The response has no body. |
| 400 | Valideringsfel |
| 403 | Skivan är en systempost, eller token saknar den behörighet som krävs |
| 404 | Inte hittat, eller det tillhör ett annat konto |
Valideringsfel returnerar 400 med problemet nyckelat efter fältnamn:
{
"priority": ["MX records require a priority value"]
}
Fråga namnservrarna VPS.org direkt för att bekräfta att en ändring är live innan din registrardelegation eller lösare-cache kommer ikapp:
dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com