Create DNS zones and manage their records. Zones are served by ns1.vps.org, ns2.vps.org and ns3.vps.org.
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.
Changes are saved and published in one step: if the nameservers refuse a change, the request returns 502 and nothing is saved. A zone cannot be created for a domain another account already manages, a parent or child of another account's zone, or a VPS.org reserved name.
Ruhusa ya Kuruhusiwa:
dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*
Returns your zones, newest first, 25 per page. Records are not included here; fetch a single zone to get them.
| Penseli | Aina | Inahitajika | Maelezo |
|---|---|---|---|
domain |
string | Hapana | Rudia eneo hilo tu ukiwa na jina hili la eneo |
page |
integer | Hapana | Page number, starting at 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
}
]
}
| Field | Aina | Maelezo |
|---|---|---|
uuid |
string | Zonepser |
domain |
string | Jina la Domain, lililowekwa katika ghala la chini |
created_at |
datetime | Creation time (ISO 8601, UTC) |
record_count |
integer | Idadi ya rekodi katika eneo hilo, kutia ndani rekodi tatu za NS |
| 200 | Mafanikio |
| 403 | Ishara hiyo ikikosekana au yenye kasoro, au ile ishara haina ruhusa inayohitajiwa |
Eneo hilo lina eneo na linachapisha. Eneo hilo linaanza kwa kurekodi rekodi tatu za NS kwa ajili ya ns1, n2 na ns3.vps.org, ambazo ni rekodi za mfumo wa kompyuta na haziwezi kuhaririwa au kufutwa.
| Penseli | Aina | Inahitajika | Maelezo |
|---|---|---|---|
domain |
string | Ndiyo | Kwa mfano, jina la eneo hilo lina maana ya kuwa na jina la Kigiriki.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 imeundwa |
| 400 | Jina la eneo hilo halijapatikana au halina uwezo |
Sehemu moja ina historia nyingi na ina umbo lilelile ambalo linatokezwa na mwitikio ulio juu.
curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 200 | Mafanikio |
| 404 | Si wapatikanao, wala si wa Akaunti jingine |
Removes the zone from all three nameservers, checks that none of them still serves it, and then deletes the zone and its records. If a nameserver still answers for the zone, the request fails and the zone is kept so you can retry.
curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 204 | Jibu lake halina mwili. |
| 400 | Eneo hilo bado linaitwa eneo la dunia, lakini eneo hilo halikufutwa; habari hizo zinaorodhesha makosa. |
| 404 | Si wapatikanao, wala si wa Akaunti jingine |
TOKEA kila rekodi katika eneo hilo ikiwa ni safu iliyo wazi (bila kuchujwa), iliyogawanywa kwa herufi na jina.
| Penseli | Aina | Inahitajika | Maelezo |
|---|---|---|---|
record_type |
string | Ndiyo | A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA |
name |
string | Ndiyo | @ for the creact, or a ploo kama www.Bible bes in claft. |
value |
string | Ndiyo | Kwa mfano, taarifa za rekodi, anwani ya IP au jina la mtu mmoja. Jina la cheo la mahali hapo halihitaji kuwekwa alama na thamani za ki - siku - hizi hazihitaji kunukuliwa; zote mbili zinaongezwa wakati rekodi inapochapishwa. |
ttl |
integer | Ndiyo | Wakati wa kuishi kwa sekunde chache |
priority |
integer | MX na SRV pekee | Rekodi za MX na SRV zilihitajika na kupuuzwa kwa kila aina. |
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"
}
| Field | Aina | Maelezo |
|---|---|---|
uuid |
string | Msajili, anayetumiwa na /api/v1/dns-records/ retents |
priority |
integer | null | Kabla ya rekodi za MX na SRV, nyingine zikiwa zimebatilishwa |
created_at |
date | Hakika Mimi ni mwenye hikima, na Mwenye kujua. |
| 200 | TOKEA: Rekodi za eneo hilo |
| 201 | PONT: rekodi imefanyizwa |
| 400 | Kwa mfano, kosa la kuficha habari, kutopatikana kwa tatl, au rekodi ya MX au SRV bila kipaumbele |
| 404 | Si wapatikanao, wala si wa Akaunti jingine |
Mabadiliko katika rekodi huchapishwa moja kwa moja, lakini kuchapisha ni jitihada bora na kushindwa hakukosi ombi la awali, kwa hiyo tumia hili wakati badiliko halipo katika viungo vya DNS.
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"
}
TOKEA rekodi za kanda zako zote, 25 kwa kila ukurasa, ukiagizwa na utawala, aina na jina. PSTE hufanyiza rekodi kama rekodi za kanda za dunia ambazo zimeisha, lakini huchukua eneo la mwili kuwa eneo la dunia_uuid.
| Penseli | Aina | Inahitajika | Maelezo |
|---|---|---|---|
zone |
string | Hapana | Ni rekodi tu za eneo hilo zenye picha hii |
record_type |
string | Hapana | Kwa mfano, ni rekodi za aina hii tu, MX (kutohisi lolote) |
page |
integer | Hapana | 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"
}
]
}
| 200 | JIJUHAMU: fanikio |
| 201 | PONT: rekodi imefanyizwa |
| 400 | Kosa la kihalo, au eneo_uid linakosekana au halipo katika eneo lenu |
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.
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 | TOKEA, TAT au PATCH: rekodi |
| 204 | Jibu lake halina mwili. |
| 400 | Kosa la utakasaji |
| 403 | Rekodi ni rekodi ya mfumo, au ishara hiyo haina ruhusa inayohitajiwa |
| 404 | Si wapatikanao, wala si wa Akaunti jingine |
Makosa ya uhasibu hurudi mara 400 yakiwa na tatizo lililokaziwa kwa jina la shambani:
{
"priority": ["MX records require a priority value"]
}
Janga hili la VPS.org linafahamika moja kwa moja kwa kuwa na alama za kuonyesha mabadiliko fulani ni moja kwa moja kabla ya wajumbe wa kusajili au watatua maeneo yaliyojificha kuingia:
dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com