Crea zone DNS e gestisci i loro record. Le zone sono servite da ns1.vps.org, ns2.vps.org e ns3.vps.org.
Una zona contiene i record di un dominio. Ogni modifica che si effettua attraverso l'API viene spinta ai nameserver VPS.org immediatamente. Per servire un dominio da queste zone, impostare i nameserver al tuo registrar a ns1.vps.org, ns2.vps.org e ns3.vps.org.
Le modifiche vengono salvate e pubblicate in un solo passaggio: se i nameserver rifiutano una modifica, la richiesta restituisce 502 e nulla viene salvato. Una zona non può essere creata per un dominio che un altro account gestisce già, un genitore o un figlio di un'altra zona di account, o un nome riservato VPS.org.
Autorizzazione richiesta:
dns:list (GET), dns:create (POST), dns:update (PUT, PATCH, sync), dns:delete (DELETE), dns:*
Restituisce le zone, le più recenti, 25 per pagina. I record non sono inclusi qui; prendere una singola zona per ottenerli.
| Parametro | Tipo | Necessario | Designazione delle merci |
|---|---|---|---|
domain |
string | No. | Restituisce solo la zona con esattamente questo nome di dominio |
page |
integer | No. | Numero di pagina, a partire da 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
}
]
}
| Campo | Tipo | Designazione delle merci |
|---|---|---|
uuid |
string | Viene utilizzato il metodo di prova descritto al punto 1.1. |
domain |
string | Nome dominio, memorizzato in minuscolo |
created_at |
datetime | Tempo di creazione (ISO 8601, UTC) |
record_count |
integer | Numero di registrazioni nella zona, compresi i tre record NS |
| 200 | Successo |
| 403 | Token API mancante o non valido, o il token non ha il permesso richiesto |
Crea una zona e la pubblica. La zona inizia con tre record NS per ns1, ns2 e ns3.vps.org, che sono record di sistema e non possono essere modificati o cancellati.
| Parametro | Tipo | Necessario | Designazione delle merci |
|---|---|---|---|
domain |
string | SÌ | Il nome di dominio, per esempio.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 | Zona creata |
| 400 | Nome di dominio mancante o non valido |
Restituisce una zona con tutti i suoi record in un array di record. La risposta ha la stessa forma della risposta creata sopra.
curl -X GET "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 200 | Successo |
| 404 | Non trovato, o appartiene ad un altro account |
Rimuove la zona da tutti e tre i nameserver, controlla che nessuno di essi la serva ancora, e poi cancella la zona e i suoi record. Se un nameserver risponde ancora per la zona, la richiesta fallisce e la zona viene mantenuta in modo da poter riprovare.
curl -X DELETE "https://admin.vps.org/api/v1/dns-zones/c7a1e3f0-2b4d-4e6a-9c8b-0d1f2e3a4b5c/" \
-H "Authorization: Bearer YOUR_API_TOKEN"
| 204 | Cancellato. La risposta non ha corpo. |
| 400 | Un nameserver serve ancora la zona. La zona non è stata eliminata; il campo dettagli elenca gli errori. |
| 404 | Non trovato, o appartiene ad un altro account |
GET restituisce ogni record nella zona come un array semplice (non immaginato), ordinato per tipo e nome. POST aggiunge un record alla zona e lo pubblica.
| Parametro | Tipo | Necessario | Designazione delle merci |
|---|---|---|---|
record_type |
string | SÌ | A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, SOA, CAA |
name |
string | SÌ | @ per il dominio stesso, o un'etichetta come www. Names sono memorizzati in minuscolo. |
value |
string | SÌ | I dati di registrazione, ad esempio un indirizzo IP o un nome host. I nomi host non hanno bisogno di un punto di fine e i valori TXT non hanno bisogno di citazioni; entrambi vengono aggiunti quando il record viene pubblicato. |
ttl |
integer | SÌ | Tempo di vivere in secondi |
priority |
integer | Solo MX e SRV | Richiesto per MX e SRV registra e ignorato per ogni altro tipo. Per SRV, mettere peso, porta e target di valore. |
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"
}
| Campo | Tipo | Designazione delle merci |
|---|---|---|
uuid |
string | identificatore di registrazione, utilizzato dagli endpoint /api/v1/dns-records/endpoints |
priority |
integer | null | Priorità per i record MX e SRV, altrimenti nulla |
created_at |
date | Data di creazione (A-MM-GG), senza orario |
| 200 | GET: i registri della zona |
| 201 | POST: registrazione creata |
| 400 | Errore di convalida, ad esempio un tipo di record sconosciuto, un ttl mancante o un record MX o SRV senza priorità |
| 404 | Non trovato, o appartiene ad un altro account |
Spinge nuovamente la zona e tutti i suoi record ai nameserver. Le modifiche di registrazione vengono pubblicate automaticamente, ma la pubblicazione è uno sforzo migliore e un fallimento non fallisce la richiesta originale, quindi usalo quando una modifica non compare nelle ricerche DNS. Non è necessario alcun corpo di richiesta.
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"
}
GET restituisce i record di tutte le zone, 25 per pagina, ordinati per dominio, tipo e nome. POST crea un record come l'endpoint di zone record, ma prende la zona nel corpo come zone_uuid.
| Parametro | Tipo | Necessario | Designazione delle merci |
|---|---|---|---|
zone |
string | No. | Solo i registri della zona con questo uuid |
record_type |
string | No. | Solo registrazioni di questo tipo, per esempio MX (caso insensibile) |
page |
integer | No. | Numero di pagina, a partire da 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: successo |
| 201 | POST: registrazione creata |
| 400 | Errore di convalida, o zone_uuid manca o non è una delle tue zone |
GET restituisce un record. PUT lo sostituisce e necessita di record_type, nome, valore e ttl. PATCH cambia solo i campi che invii. DELETE rimuove il record e restituisce 204 senza corpo. Le modifiche vengono pubblicate immediatamente. I record NS creati con la zona sono record di sistema: l'aggiornamento o l'eliminazione di essi restituisce 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 | GET, PUT o PATCH: il record |
| 204 | Cancellato. La risposta non ha corpo. |
| 400 | Errore di convalida |
| 403 | Il record è un record di sistema, o il token non ha il permesso richiesto |
| 404 | Non trovato, o appartiene ad un altro account |
Gli errori di validazione restituiscono 400 con il problema impostato dal nome del campo:
{
"priority": ["MX records require a priority value"]
}
Interroga direttamente i nameserver VPS.org per confermare che una modifica è in diretta prima che la tua delega di registrar o cache risolutore raggiungano:
dig @ns1.vps.org example.com A
dig @ns2.vps.org example.com MX
dig @ns3.vps.org www.example.com