VPS.org API

Àwọn Àkọsílẹ̀ API REST

API Ìṣàkóso DNS

Ṣẹ̀dà àwọn ààyè DNS àti ìṣàmúlò-ètò wọn. Àwọn ààyè náà ní a tí ns1.vps.org, ns2.vps.org àti ns3.vps.org.

Àwọn ìparí 13
Ipa-ọna Ipilẹ /api/v1/dns-zones, /api/v1/dns-records

Àkótán Àkótán

A zone holds the records for one domain. Every change you make through the API is pushed to the VPS.org nameservers straight away. To serve a domain from these zones, set its nameservers at your registrar to ns1.vps.org, ns2.vps.org and ns3.vps.org.

Àwọn ìyipada ní a fi pamọ́ àti àkọ́já nínú ìpele kan: tí àwọn sáà àtílẹ̀ bá dáwọ́ ìyipada náà, ìtàn náà náà 502 àti àwọn àkóónú kò ní a fi pamọ́. Kò lè ṣẹ̀dà ààyè-iṣẹ́ fún dómìnirà tí àwọn kànẹ́ẹ̀lì mìíràn tí n ṣakoso, àwọn obì tàbí ọmọ ààyè-iṣẹ́ kànẹ́ẹ̀lì mìíràn, tàbí àwọn orúkọ tí a tí fi pamọ́ VPS.org.

Àwọn ìkúndùǹ tí a fẹ́: dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*

GBÀ /api/v1/dns-zones/

Ṣe àkójọ gbogbo àwọn agbègbè DNS

Fi àwọn ààyè-iṣẹ́ rẹ pamọ́, àwọn tuntun ní akọkọ, 25 nínú ojú-ìwé kan. Àwọn àkọlé kò ní àwọn àkọlé níbẹ̀; gba ààyè-iṣẹ́ kan láti gba wọn.

Àwọn Ìbéèrè Pàtàkì

Àwọn Àtòjọ-ẹ̀yàn Irú Ti a nilo Àwọn Àkọlé
domain string _Kò Àwọn ààyè-iṣẹ́ àwọn ààyè-iṣẹ́
page integer _Kò Page number, starting at 1

Àpẹẹrẹ Ìbéèrè

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

Àpẹẹrẹ Ìdáhùn

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

Àwọn Ààyè Ìdáhùn

Àwọn Ààyè-iṣẹ́ Irú Àwọn Àkọlé
uuid string Àtòjọ-ìṣàfilọ́lẹ̀ ààyè-iṣẹ́
domain string Orúkọ Dómén, tí a fi pamọ́ sí àwọn àyọkà ìsàlẹ̀-ilà kékeré
created_at datetime Creation time (ISO 8601, UTC)
record_count integer Àwọn àwọn àtòjọ-ẹ̀yàn nínú ìjánu-ìṣàmúlò-ètò náà, àti àwọn àtòjọ-ẹ̀yàn NS mẹ́tà

Àwọn Kóòdù Ipò Ìdáhùn

200 Àwọn Ìṣàmúlò-ètò
403 Tokénà API tí kò bá jẹ́ tàbí tí kò bá jẹ́, tàbí tokénà náà kò ní ìṣẹ̀dà tí a fẹ́
Àwọn Àkọlé /api/v1/dns-zones/

Ṣẹ̀dà Ààyè-iṣẹ́ DNS

Fi ààyè kọ̀ nínú ààyè náà. Ààyè náà tí ìṣàmúlò-ètò NS mẹ́tà láti fi fún ns1, ns2 àti ns3.vps.org, tí àwọn ìṣàmúlò-ètò sítàmúlò-ètò àti àwọn ààyè tí a kò lè yipada tàbí pa.

Ìbéèrè fún Àwọn Ìwọ̀n Ara

Àwọn Àtòjọ-ẹ̀yàn Irú Ti a nilo Àwọn Àkọlé
domain string Bẹ́ẹ̀ni Orúkọ́ dómén, àwọn ààtò àtòjọ-ẹ̀yàn.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"}'

Àpẹẹrẹ Ìdáhùn

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

Àwọn Kóòdù Ipò Ìdáhùn

201 Àwọn ààyè-iṣẹ́ àìṣàmúlò-ètò
400 Àwọn àwọn àmì-ìwé àìdálẹ̀
GBÀ /api/v1/dns-zones/{uuid}/

Wa àwọn ìròyìn Zò́ǹ DNS

Fi ààyè kan pàtó nípa àwọn àtòjọ-ẹ̀yàn rẹ̀ nínú àwọn àtòjọ-ẹ̀yàn àwọn àtòjọ-ẹ̀yàn. Àwọn ìṣàfarawé ní ìṣàfarawé tí a tì kọ̀ ní àwọn ìṣàfarawé ìṣàfarawé àwọn àtòjọ-ẹ̀yàn àwọn àtòjọ-ẹ̀yàn.

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

Àwọn Kóòdù Ipò Ìdáhùn

200 Àwọn Ìṣàmúlò-ètò
404 Kò rí, tàbí ò jẹ́ àwọn
PARÍPÁRÁ /api/v1/dns-zones/{uuid}/

Pa Ààyè-iṣẹ́ DNS Rẹ̀

Ṣàfikún ààyè-iṣẹ́ láti inú àwọn sáà àti àwọn ààyè-iṣẹ́ àti àwọn àkọsílẹ̀ rẹ̀. Tó bá jẹ́ pé sáà àti ààyè-iṣẹ́ kan kò bá dáju ààyè-iṣẹ́ náà, ìtàn náà náà tí ìpàdé láti inú ààyè-iṣẹ́ náà.

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

Àwọn Kóòdù Ipò Ìdáhùn

204 Paṣẹ. Àwọn ìsàlẹ̀-ilà kò ní ẹ̀yàn.
400 Àwọn ààtò àtòjọ-ẹ̀yàn àwọn ààtò àtòjọ-ẹ̀yàn àwọn ààtò àtòjọ-ẹ̀yàn
404 Kò rí, tàbí ò jẹ́ àwọn
GBÀ Àwọn Àkọlé /api/v1/dns-zones/{uuid}/records/

Àtòjọ àti àwọn àtòjọ-ẹ̀yàn nínú ààyè-iṣẹ́

GET ń pa gbogbo àkọlé nínú ìjánu-ìwé-ìṣàmúlò-ètò náà láti inú àwọn ààyè-iṣẹ́ àwọn ààyè-iṣẹ́ (kò ní pàgínà), àwọn àwọn ààyè-iṣẹ́ àti àwọn

Ìbéèrè fún Àwọn Ìwọ̀n Ara (POST)

Àwọn Àtòjọ-ẹ̀yàn Irú Ti a nilo Àwọn Àkọlé
record_type string Bẹ́ẹ̀ni A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA
name string Bẹ́ẹ̀ni @ fun dóméǹ rẹ̀, tàbí àmì-ìwé bíi www. Àwọn àwọn
value string Bẹ́ẹ̀ni Àwọn àkóónú àtòjọ-ìdáràn, bíi àdírẹ̀sì IP tàbí orukọ́ ojú-ìwé. Àwọn àtòjọ-ìwé kò ní àwọn
ttl integer Bẹ́ẹ̀ni Àkóónú ìgbà ìrànwọ́ nínú àwọn ìsàlẹ̀-ilà
priority integer MX ati SRV nikan Tí a fẹ̀ fún àwọn àkọlé MX àti SRV àti àwọn àwọn àkọlé tí a kò fi pamọ́ fún àwọn ìṣàmúlò-ètò àti àwọn ìṣàmúlò-ètò mìíràn. Fún SRV, fi àwọn ààyè, àwọn ìpàtì àti àwọn ààyè inú fálù náà.

Àpẹẹrẹ Ìbéèrè

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

Àpẹẹrẹ Ìdáhùn

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

Àwọn Ààyè Ìdáhùn

Àwọn Ààyè-iṣẹ́ Irú Àwọn Àkọlé
uuid string Àtòjọ-ìdàkọ́ àwọn àkọ́lé, tí a lò láti inú àwọn ààtò àtòjọ-ẹ̀yàn /api/v1/dns-records/
priority integer | null Àwọn ìṣàmúlò-ètò fún àwọn àkọlé MX àti SRV, tí a kò bá jẹ́ bẹ́ẹ̀
created_at date Àwọn àwọn àkóónú ìṣàfarawélẹ̀ (Y-MM-DD) nípa àwọn àkóónú àìṣe

Àwọn Kóòdù Ipò Ìdáhùn

200 GET: àwọn àkọlé ààyè-iṣẹ́ ìsàlẹ̀-ilà
201 Àwọn àtòjọ-ẹ̀yàn àìṣàmúlò-ètò
400 Àṣìṣe ìṣàmúlò-ètò, bíi àwọn ààtò àìṣàmúlò-ètò àìdálẹ̀ àìdálẹ̀, ttl tí kò wa, àti àtòjọ-ẹ̀yàn MX tàbí SRV tí kò ní ìjánu-ìjánu
404 Kò rí, tàbí ò jẹ́ àwọn
Àwọn Àkọlé /api/v1/dns-zones/{uuid}/sync/

Fi àwọn ààyè-iṣẹ́ pamọ́

Fi ààyè àti àwọn àkọ́lé rẹ̀ gbogbo lọ́wọ́lọ́wọ́ sí àwọn sáà àti àwọn ààyè àti àwọn àkọ́lé. Àwọn ìṣàmúlò-ètò àwọn àkọ́lé tí a fi kọ́ nípa ìṣàfarawé, àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò àwọn àkókò

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"
}
GBÀ Àwọn Àkọlé /api/v1/dns-records/

Àtòjọ àti àtòjọ-ẹ̀yàn àwọn ààtò àwọn ààtò

GET yi àwọn àkọlé àwọn ààyè-iṣẹ́ rẹ pada, 25 ni ojú-ìwé kan, àwọn ààyè-iṣẹ́ àwọn dómén, irúfẹ̀ àti àwọn

Àwọn Ìbéèrè Pàtàkì

Àwọn Àtòjọ-ẹ̀yàn Irú Ti a nilo Àwọn Àkọlé
zone string _Kò Àwọn àtòjọ-ẹ̀yàn tí a bá jẹ́ ààyè-iṣẹ́ nípa uuid yìí
record_type string _Kò Àwọn àtòjọ-ẹ̀yàn tí irúfẹ́ yìí níwọ̀n, àwọn àtòjọ-ẹ̀yàn MX (kò ní àwọn à
page integer _Kò Page number, starting at 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"
    }
  ]
}

Àwọn Kóòdù Ipò Ìdáhùn

200 Ìjánu-ìtàn
201 Àwọn àtòjọ-ẹ̀yàn àìṣàmúlò-ètò
400 Àṣìṣe ìṣàfarawé ìṣàmúlò-ètò, tàbí àwọn ààyè-iṣẹ́_uuid tí kò wà tàbí kò jẹ́ àwọn ààyè-iṣẹ́ rẹ
GBÀ PUT PATCH PARÍPÁRÁ /api/v1/dns-records/{uuid}/

Gba, Ṣàfikún àti Pa Àkọlé

GET returns one record. PUT replaces it and needs record_type, name, value and ttl. PATCH changes only the fields you send. DELETE removes the record and returns 204 with no body. Changes are published straight away. The NS records created with the zone are system records: updating or deleting them returns 403.

Tó bá jẹ́ pé o tí pàtó ìjánu-ìfàmúlò-ètò MX tàbí àtòjọ-ẹ̀yàn SRV, fi àwọn ààtò_ìjánu-ìfàmúlò-ètò pamọ́ sínú ìtàn. Àwọn ààtò PATCH tí àwọn ìjánu-ìfàmúlò-ètò tí kò ní àwọn àtòjọ-ìjánu-ìfàmúlò-ètò náà ń pàtó ìjánu-ìfàmúlò-ètò náà.
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}'

Àwọn Kóòdù Ipò Ìdáhùn

200 GET, PUT tabi PATCH: àkọlé
204 Paṣẹ. Àwọn ìsàlẹ̀-ilà kò ní ẹ̀yàn.
400 Àṣìṣe ìṣàfarawé ìṣàmúlò-ètò
403 Àkọ́lé ní àkọ́lé ìpéwọ̀n, tàbí àtòjọ-ẹ̀yàn kò ní ìṣẹ̀dà tí a fẹ́
404 Kò rí, tàbí ò jẹ́ àwọn

Ìṣàmúlò-ètò Àṣìṣe

Àwọn àṣìṣe ìṣàfarawé ìṣàmúlò-ètò náà ń gbọ́wọ́ 400 láti inú àwọn àkóónú àwọn ààyè-iṣẹ́:

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

Àwọn Àyipada DNS

Query the VPS.org nameservers directly to confirm a change is live before your registrar delegation or resolver caches catch up:

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