VPS.org API

Dokumentasi API REST

API Manajemen DNS

Kelola zona dan catatan DNS secara terprogram untuk domain Anda.

Titik akhir 4 titik akhir
Jalur Dasar /api/v1/dns-zones
Autentikasi Token Pembawa Diperlukan

Ringkasan

The DNS API provides full management of DNS zones and records. All zones are hosted on VPS.org's authoritative nameservers with automatic BIND9 zone file generation and deployment.

Infrastruktur Nameserver

Fitur Kunci

Autentikasi

Semua permintaan API DNS memerlukan otentikasi token Pembawa. Hasilkan token API dari dashboard akun Anda di /account/developers/ dengan izin berikut:

Contoh

Authorization: Bearer vps_abc123def456...
Penting: Token API ditampilkan hanya sekali selama penciptaan. Simpan dengan aman. Jika Anda kehilangan token, Anda mesti membuat yang baru.
MENDAPATKAN /api/v1/dns-zones/

Daftar Semua Zona DNS

Ambil daftar paginated dari seluruh zona DNS yang dimiliki oleh pengguna terotentikasi. Mendukung penyaringan dengan nama domain.

Parameter Kueri

Parameter Jenis Diperlukan Deskripsi
domain string Tidak Filter zones by exact domain name (e.g., example.com)

Contoh Permintaan

cURL
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/dns-zones/" \
  -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)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
  headers: {'Authorization': 'Bearer YOUR_API_TOKEN'}
});

const zones = await response.json();
console.log(zones);

Contoh Jawaban

[
  {
    "uuid": "abc123-def456-ghi789",
    "domain": "example.com",
    "created_at": "2024-01-15T10:30:00Z",
    "record_count": 12
  },
  {
    "uuid": "xyz789-uvw456-rst123",
    "domain": "myapp.io",
    "created_at": "2024-06-20T14:15:00Z",
    "record_count": 8
  }
]

Kolom Respons

Ruas Jenis Deskripsi
uuid string Unique zone identifier (used in API requests)
domain string Domain name for this DNS zone
created_at datetime Zone creation timestamp (ISO 8601 format)
record_count integer Total number of DNS records in this zone

Kode Status Respons

200 Successfully retrieved DNS zones list
401 Unauthorized - Invalid or missing API token
403 Forbidden - Token lacks dns:list permission
MENDAPATKAN /api/v1/dns-zones/{uuid}/

Dapatkan Rincian Zona DNS

Ambil informasi rinci tentang zona DNS tertentu, termasuk semua catatan.

Parameter Jalur

Parameter Jenis Diperlukan Deskripsi
uuid string Ya Unique zone identifier

Contoh Jawaban

{
  "uuid": "abc123-def456-ghi789",
  "domain": "example.com",
  "created_at": "2024-01-15T10:30:00Z",
  "record_count": 5,
  "records": [
    {
      "uuid": "rec-001",
      "record_type": "A",
      "name": "@",
      "value": "192.0.2.1",
      "ttl": 3600,
      "priority": null,
      "created_at": "2024-01-15T10:30:00Z"
    },
    {
      "uuid": "rec-002",
      "record_type": "MX",
      "name": "@",
      "value": "mail.example.com",
      "ttl": 3600,
      "priority": 10,
      "created_at": "2024-01-15T10:32:00Z"
    }
  ]
}

Kode Status Respons

200 Successfully retrieved zone details
404 Zone not found or not owned by user
POST /api/v1/dns-zones/

Buat Zona DNS

Create a new DNS zone for a domain. The zone will be immediately deployed to VPS.org nameservers.

Parameter Badan Permintaan

Parameter Jenis Diperlukan Deskripsi
domain string Ya Domain name (e.g., example.com)

Contoh Permintaan

cURL
Python
JavaScript
curl -X POST "https://admin.vps.org/api/v1/dns-zones/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain": "newdomain.com"}'
import requests

url = "https://admin.vps.org/api/v1/dns-zones/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
data = {"domain": "newdomain.com"}

response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/dns-zones/', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({domain: 'newdomain.com'})
});

const zone = await response.json();
console.log(zone);

Contoh Jawaban

{
  "uuid": "new-zone-uuid",
  "domain": "newdomain.com",
  "created_at": "2026-01-18T16:45:00Z",
  "record_count": 0,
  "records": []
}

Kode Status Respons

201 DNS zone created successfully
400 Bad Request - Invalid domain name or zone already exists
403 Forbidden - Token lacks dns:create permission
MENGHAPUS /api/v1/dns-zones/{uuid}/

Hapus Zona DNS

Hapus secara permanen suatu zona DNS dan semua catatan yang terkait. Aksi ini tidak dapat dibatalkan.

Parameter Jalur

Parameter Jenis Diperlukan Deskripsi
uuid string Ya Unique zone identifier

Kode Status Respons

204 Zone deleted successfully (no response body)
403 Forbidden - Token lacks dns:delete permission
404 Zone not found
MENDAPATKAN /api/v1/dns-zones/{uuid}/records/

Daftar DNS Records di Zona

Ambil semua catatan DNS untuk zona tertentu (jalan darat).

Parameter Jalur

Parameter Jenis Diperlukan Deskripsi
uuid string Ya Zone UUID

Contoh Permintaan

curl -X GET "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Contoh Jawaban

[
  {
    "uuid": "rec-001",
    "record_type": "A",
    "name": "@",
    "value": "192.0.2.1",
    "ttl": 3600,
    "priority": null,
    "created_at": "2024-01-15T10:30:00Z"
  },
  {
    "uuid": "rec-002",
    "record_type": "MX",
    "name": "@",
    "value": "mail.example.com",
    "ttl": 3600,
    "priority": 10,
    "created_at": "2024-01-15T10:32:00Z"
  }
]
POST /api/v1/dns-zones/{uuid}/records/

Buat Catatan DNS dalam Zona

Tambahkan rekor DNS baru ke zona tertentu (jalan angin).

Parameter Badan Permintaan

Parameter Jenis Diperlukan Deskripsi
record_type string Ya Record type: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA
name string Ya Record name (@ for root, subdomain, or FQDN)
value string Ya Record value (IP address, hostname, text)
ttl integer No Time to live in seconds (default: 3600)
priority integer For MX/SRV Priority (required for MX and SRV records)

Contoh Permintaan

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/dns-zones/{uuid}/records/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "record_type": "A",
    "name": "www",
    "value": "192.0.2.1",
    "ttl": 3600
  }'
import requests

url = f"https://admin.vps.org/api/v1/dns-zones/{zone_uuid}/records/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
data = {
    "record_type": "A",
    "name": "www",
    "value": "192.0.2.1",
    "ttl": 3600
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

Kode Status Respons

201 DNS record created successfully
400 Bad Request - Invalid parameters or validation error (e.g., MX record missing priority)
GET PUT PATCH DELETE /api/v1/dns-records/{uuid}/

Kelola DNS Records (Akses Direct)

Operasi CRUD penuh pada catatan DNS individu menggunakan UUID rekaman.

Operasi Tersedia

Parameter Kuiri (untuk GET /api/v1/dns-records/)

Parameter Jenis Deskripsi
zone string Filter records by zone UUID
record_type string Filter by record type (A, AAAA, MX, etc.)

Contoh: Update TTL of a Record

curl -X PATCH "https://admin.vps.org/api/v1/dns-records/{rec-uuid}/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ttl": 1800}'

Supported DNS Record Types

Jenis Purpose Example Value Priority Required
A Maps domain to IPv4 address 192.0.2.1 Tidak
AAAA Maps domain to IPv6 address 2001:0db8::1 Tidak
CNAME Creates alias to another domain example.com Tidak
MX Mail server for domain mail.example.com Ya
TXT Text record (SPF, DKIM, verification) v=spf1 include:_spf.google.com ~all Tidak
NS Nameserver delegation ns1.example.com Tidak
SRV Service location record 10 5060 sip.example.com Ya
CAA Certificate authority authorization 0 issue "letsencrypt.org" Tidak

Latihan Terbaik

Konfigurasi TTL

Pola Umum

Keamanan

Kesalahan Menangani

Kesalahan Umum

Kode Status Galat Solusi
400 Nama domain tidak valid Pastikan domain mengikuti konvensi penamaan DNS
400 Catatan MX membutuhkan prioritas Sertakan priority daerah untuk catatan MX dan SRV
401 Token API tak valid Periksa format token (harus mulai dengan vps_)
403 Hak akses tak ada Buat token baru dengan kebutuhan dns:* ijin
404 Zona/record tidak ditemukan Verifikasi UUID dan pastikan sumber daya milik akun Anda

Contoh Respon Galat

{
  "detail": "MX records require a priority value",
  "error_code": "validation_error",
  "field": "priority"
}

Menguji Perubahan DNS

Memverifikasi Propagasi Catatan

# Query A record
dig example.com A

# Query specific nameserver
dig @ns1.vps.org example.com

# Query MX records
dig example.com MX

# Check all records
dig example.com ANY

Menggunakan Perkakas Daring