VPS.org API

Dokumintaasje

DNS-behear API

DNS- zonen aanmaken en hun records beheren. Zones worden bediend door ns1. vps.org, ns2. vps.org en ns3. vps.org.

Einpunten 13
Basispaad /api/v1/dns-zones, /api/v1/dns-records

Oersicht

In soan hat de records foar ien domein. Elke feroaring dy jo meitsje fia de API wurdt direkt nei de VPS.org nammetsjinners pushed. Om in domein fan dizze soan te tsjinjen, set de nammetsjinners by jo register yn op ns1. vps.org, ns2. vps.org en ns3. vps.org.

Wizigings wurde yn ien stap bewarre en publisearre. As de nammetsjinners in wiziging ôfwize, dan jout it fersyk 502 werom en wurdt neat bewarre. Der kin gjin zone oanmakke wurde foar in domein dat al beheard wurdt troch in oar akkount, in boppe- of ûnderlizzende zone fan in oar akkount, of in reservearre VPS.org- namme.

Tagongsrjochten fereaske: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

KRIJE /api/v1/dns-zones/

List alle DNS-sônes

Jout jo gebieten werom, de lêste earst, 25 per side. Rekords binne hjir net ynbegrepen; helje in ienfâldige gebieten om se te krijen.

Fraachparameters

Parameters Type Ferplicht Beskriuwing
domain string Net Allinne de zone mei dizze domeinnamme weromjaan
page integer Net Sidenûmer, begjint by 1

Foarbyldfersyk

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);

Foarbyldantwurd

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

Antwurdfjilden

Fjild Type Beskriuwing
uuid string Zone- identifier
domain string Domeinnamme, yn lytse letters bewarre
created_at datetime Oanmaktiid (ISO 8601, UTC)
record_count integer Oantal records yn de soane, ynklusyf de trije NS- records

Antwurdstatuskoades

200 Suksesfol
403 Untbrekkend of ûnjildich API-token, of it token hat net de fereaske tagongsrjochten
POST /api/v1/dns-zones/

DNS- sône oanmeitsje

Makket in zone oan en publisearret dy. De zone begjint mei trije NS- records foar ns1, ns2 en ns3. vps.org, dy' t systeemrecords binne en net bewurke of wiske wurde kinne.

Parameters fan oanfraachlichem

Parameters Type Ferplicht Beskriuwing
domain string Ja De domeinnamme, bygelyks example. 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"}'

Foarbyldantwurd

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

Antwurdstatuskoades

201 Zone created
400 Unjildige domeinnamme
KRIJE /api/v1/dns-zones/{uuid}/

DNS- sônedetails ophelje

Jout in zone werom mei alle records yn in records- array. It antwurd hat deselde foarm as it oanmeitsje- antwurd hjirboppe.

curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Antwurdstatuskoades

200 Suksesfol
404 Net fûn, of it heart by in oar akkount
WISKE /api/v1/dns-zones/{uuid}/

DNS- sône wiskje

Ferwiist de zone fan alle trije nammetsjinners, kontrolearret of gjin ien der noch tsjinnet, en wisket dan de zone en syn records. As in nammetsjinner noch antwurdet foar de zone, dan mislearre it fersyk en wurdt de zone bewarre sadat jo it opnij besykje kinne.

curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Antwurdstatuskoades

204 Wiske. It antwurd hat gjin haadtekst.
400 In nammetsjinner tsjinnet de zone noch. De zone is net wiske; it detailfjild lit de flaters sjen.
404 Net fûn, of it heart by in oar akkount
KRIJE POST /api/v1/dns-zones/{uuid}/records/

List of taheakje records yn in soane

GET jout alle records yn de soane werom as in gewoane array (net paginated), sortearre op type en namme. POST foeget in record ta oan de soane en publisearret it.

Parameters fan oanfraachlichem (POST)

Parameters Type Ferplicht Beskriuwing
record_type string Ja A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Ja @ foar it domein sels, of in label lykas www. Nammen wurde bewarre yn lytse letters.
value string Ja De gegevens fan de rekord, bygelyks in IP- adres of in hostnamme. Hostnammen hawwe gjin punt nedich en TXT- wearden hawwe gjin oanhelle tekens nedich. Beide wurde tafoege as de rekord publisearre wurdt.
ttl integer Ja Tiid om te libjen yn sekonden
priority integer Allinne MX en SRV Fergees foar MX en SRV records en negearre foar alle oare soarten. Foar SRV, set gewicht, poarte en doel yn de wearde.

Foarbyldfersyk

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

Foarbyldantwurd

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

Antwurdfjilden

Fjild Type Beskriuwing
uuid string Record-identifikaasje, brûkt troch de einpunten fan /api/v1/dns-records/
priority integer | null Prioriteit foar MX en SRV records, oars nul
created_at date Allinne oanmakke datum (J- MM- DD), sûnder tiid

Antwurdstatuskoades

200 GET: de records fan de zone
201 POST: record oanmakke
400 Ferifikaasjeflater, bygelyks in ûnbekend rekordtype, in ûntbrekkend ttl, of in MX- of SRV- rekord sûnder prioriteit
404 Net fûn, of it heart by in oar akkount
POST /api/v1/dns-zones/{uuid}/sync/

In sône opnij publisearje

Stjoert de zone en alle records opnij nei de nammetsjinners. Recordwizigingen wurde automatysk publisearre, mar it publisearjen is de bêste opsje en in flater makket it oarspronklike fersyk net mislearre. Brûk dit dus as in wiziging net yn DNS- opsyk ferskynt. Gjin fersyklichem nedich.

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"
}
KRIJE POST /api/v1/dns-records/

List of make records across zones

GET jout de records fan alle zones werom, 25 per side, oardere op domein, type en namme. POST makket in record oan lykas it einpunt fan de zone records, mar nimt de zone yn it lichem as zone_ uuid.

Fraachparameters

Parameters Type Ferplicht Beskriuwing
zone string Net Allinne records fan de sône mei dizze uuid
record_type string Net Allinne records fan dit type, bygelyks MX (hoeflettergefoelige)
page integer Net Sidenûmer, begjint by 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"
    }
  ]
}

Antwurdstatuskoades

200 GET: sukses
201 POST: record oanmakke
400 Validaasjeflater, of zone_ uuid ûntbrekt of is net ien fan jo zonen
KRIJE PUT PATCH WISKE /api/v1/dns-records/{uuid}/

In rekord ophelje, bywurkje of wiskje

GET jout ien rekord werom. PUT ferfangt it en hat record_ type, namme, wearde en ttl nedich. PATCH feroaret allinne de fjilden dy jo ferstjoere. DELETE ferwiist de rekord en jout 204 werom sûnder de koptekst. Wizigings wurde direkt publisearre. De NS- records dy mei de sône oanmakke binne systeemrecords: bywurkjen of wiskje jout 403 werom.

As jo de prioriteit fan in MX- of SRV- rekord PATCH-je, dan ferstjoere jo record_ type yn itselde fersyk. In PATCH-diel mei prioriteit mar sûnder record_ type wisket de prioriteit.
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}'

Antwurdstatuskoades

200 GET, PUT of PATCH: it rekord
204 Wiske. It antwurd hat gjin haadtekst.
400 Ferifikaasjeflater
403 De rekord is in systeemrecord, of it token hat net de fereaske tagongsrjochten
404 Net fûn, of it heart by in oar akkount

Flaterbehear

Jildichheidsflaters jouwe 400 werom mei it probleem ynskeakele troch fjildnamme:

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

DNS- feroarings wurde test

De VPS.org- nammetsjinners direkt ûnderfregje om te befêstigjen dat in feroaring live is foardat jo registerdelegaasje of resolúsje- caches ynhelle wurde:

dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com