VPS.org API

REST API-dokumentation

DNS-hanterings-API

Skapa DNS- zoner och hantera deras poster. Zoner betjänas av ns1.vps.org, ns2.vps.org och ns3.vps.org.

Slutpunkter 13
Basväg /api/v1/dns-zones, /api/v1/dns-records

Översikt

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:*

FÅ /api/v1/dns-zones/

Lista alla DNS-zoner

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.

Frågeparametrar

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

Exempelförfrågan

cURL
Python
JavaScript
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);

Exempelsvar

{
  "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
    }
  ]
}

Svarsfält

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

Svarsstatuskoder

200 Lyckades
403 Saknas eller ogiltig API- token, eller token saknar den behörighet som krävs
Från och med den 1 januari 2016 till och med den 31 december 2016 /api/v1/dns-zones/

Skapa DNS- zon

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.

Parametrar för begäran

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"}'

Exempelsvar

{
  "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
}

Svarsstatuskoder

201 Zon skapad
400 Saknar eller ogiltigt domännamn
FÅ /api/v1/dns-zones/{uuid}/

Hämta DNS-zondetaljer

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"

Svarsstatuskoder

200 Lyckades
404 Inte hittat, eller det tillhör ett annat konto
RADERA /api/v1/dns-zones/{uuid}/

Ta bort DNS- zon

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"

Svarsstatuskoder

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Å Från och med den 1 januari 2016 till och med den 31 december 2016 /api/v1/dns-zones/{uuid}/records/

Lista eller lägg till poster i en zon

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.

Parametrar för begäran (POST)

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.

Exempelförfrågan

cURL
Python
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())

Exempelsvar

{
  "uuid": "9d430082-5562-42b4-a0b2-12a6f6c862f9",
  "record_type": "MX",
  "name": "@",
  "value": "mail.example.com",
  "ttl": 3600,
  "priority": 10,
  "created_at": "2026-09-14"
}

Svarsfält

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

Svarsstatuskoder

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
Från och med den 1 januari 2016 till och med den 31 december 2016 /api/v1/dns-zones/{uuid}/sync/

Publicera en zon

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Å Från och med den 1 januari 2016 till och med den 31 december 2016 /api/v1/dns-records/

Lista eller skapa poster över zoner

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.

Frågeparametrar

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"
    }
  ]
}

Svarsstatuskoder

200 GET: framgång
201 POST: Skiva skapad
400 Valideringsfel, eller zon_uuid saknas eller inte en av dina zoner
FÅ PUT PATCH RADERA /api/v1/dns-records/{uuid}/

Hämta, uppdatera eller ta bort en post

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.

När du PATCH prioritet av en MX eller SRV-post, skicka rekord_typ i samma begäran. En PATCH kropp med prioritet men utan rekord_typ rensar prioritet.
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}'

Svarsstatuskoder

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

Felhantering

Valideringsfel returnerar 400 med problemet nyckelat efter fältnamn:

{
  "priority": ["MX records require a priority value"]
}

Testa DNS- ändringar

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