Ikhtisar
FastDDNS Client API memungkinkan perangkat berkemampuan HTTP apa pun — router, kamera IP, skrip, atau perangkat lunak pembaruan khusus — untuk menjaga nama host DNS Anda tetap mengarah ke alamat IP Anda saat ini. API mengikuti desain permintaan GET sederhana: klien Anda mengirim kredensial dan nama host, dan server merespons dengan kode status pendek yang menunjukkan hasilnya.
Server secara otomatis mendeteksi alamat IP publik klien dari koneksi masuk. Tidak diperlukan parameter tambahan untuk menentukan IP Anda.
Otentikasi
API mendukung dua metode autentikasi. Keduanya diterima sama — pilih mana yang lebih mudah dikonfigurasi di perangkat atau router Anda.
user_name dan user_pass khususnya sendiri. Kredensial ini dapat hanya
perbarui nama host tertentu dan tidak dapat digunakan untuk masuk ke dasbor manajemen FastDDNS. Desain ini membatasi dampak jika kredensial perangkat pernah disusupi.
Metode 1 — Autentikasi Dasar HTTP (disematkan URL)
Kredensial disematkan dalam URL menggunakan format standar user:password@host. Ini didukung secara luas oleh router, kamera, dan pustaka klien HTTP. Gunakan Kunci Klien Updater dari dasbor Anda sebagai kata sandi.
| Bidang | Deskripsi | Di mana menemukannya |
|---|---|---|
| {user_name} | Nama pengguna yang ditetapkan ke nama host tertentu ini pada waktu pembuatan. | Dasbor FastDDNS → Nama Host → Detail |
| {user_pass} | Kata sandi yang ditetapkan ke nama host tertentu ini pada waktu pembuatan. | Dasbor FastDDNS → Nama Host → Detail |
| {hostname} | Nama host yang sepenuhnya memenuhi syarat untuk diperbarui, misalnya testhost.fastddns.org. |
Dasbor FastDDNS → Nama Host → Detail |
Metode 2 — Parameter String Kueri
Kredensial diteruskan sebagai parameter kueri biasa bersama hostname. Ini berguna untuk perangkat dan firmware yang tidak dapat mengonfigurasi header HTTP Basic Auth tetapi mengizinkan string URL yang sepenuhnya disesuaikan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
| {user_name} |
string | Nama pengguna yang ditetapkan ke nama host ini saat dibuat. |
| {user_pass} | string | Kata sandi yang ditetapkan ke nama host ini saat dibuat. |
| {hostname} | string | Nama host yang memenuhi syarat untuk diperbarui, misalnya testhost.fastddns.org. |
Contoh menggunakan autentikasi string kueri:
Lakukan Pembaruan
Kirim satu permintaan GET untuk memperbarui alamat IP nama host yang terdaftar di akun Anda. Setiap permintaan memperbarui satu nama host pada satu waktu.
Titik akhir
https dengan http.Format URL — Metode 1: Autentikasi Dasar HTTP
Format URL — Metode 2: String Kueri
Parameter Kueri
| Parameter | Tipe | Deskripsi |
|---|---|---|
| hostname Diperlukan | string | Nama host yang memenuhi syarat sepenuhnya (FQDN) untuk diperbarui, misalnya myhome.fastddns.net atau testhost.fastddns.org. Hanya satu nama host per permintaan yang didukung. |
| user_name Metode 2 | string | Nama pengguna untuk nama host ini. Diperlukan saat menggunakan autentikasi string kueri (Metode 2). Tidak diperlukan saat menggunakan HTTP Basic Auth (Metode 1). |
| user_pass Metode 2 | string | Kata sandi untuk nama host ini. Diperlukan saat menggunakan autentikasi string kueri (Metode 2). Tidak diperlukan saat menggunakan HTTP Basic Auth (Metode 1). |
myip.
Contoh Permintaan
Metode 1 — Autentikasi Dasar HTTP melalui HTTPS:
Metode 2 — String kueri melalui HTTPS:
Menggunakan HTTP biasa (hanya pengujian / jaringan tepercaya):
Kode Pengembalian
Semua respons pembaruan mengembalikan status HTTP 200 OK dengan isi teks biasa. Klien Anda harus mengurai isi teks ini untuk menentukan hasil pembaruan yang sebenarnya.
Pembaruan Berhasil
Catatan nama host telah diperbarui ke alamat IP yang terdeteksi. IP aktual disertakan dalam respons, misalnya good 203.0.113.45. Ini adalah respons yang diharapkan ketika IP Anda telah berubah.
Tidak Perlu Perubahan
Nama host sudah menunjuk ke alamat IP yang terdeteksi — tidak ada pembaruan yang diperlukan. IP saat ini disertakan, misalnya nochg 203.0.113.45. Ini adalah respons normal tanpa kesalahan.
Otentikasi Gagal
Nama pengguna atau kunci klien pembaharuan salah atau telah dicabut. Verifikasi kredensial Anda di dasbor FastDDNS. Jangan coba lagi secara otomatis — perbaiki kredensial terlebih dahulu.
Nama Host Tidak Ditemukan
Nama host yang ditentukan tidak ada di akun Anda atau tidak memenuhi syarat untuk pembaruan dinamis. Periksa ejaan nama host dan konfirmasikan bahwa itu terdaftar di akun Anda.
Kesalahan Server
Kesalahan internal terjadi di sisi server FastDDNS. Tunggu setidaknya 5 menit sebelum mencoba lagi. Jika masalah berlanjut, periksa halaman status FastDDNS atau hubungi dukungan.
Ringkasan Tanggapan
| Teks Tanggapan | HTTP Status | Arti | Tindakan yang Diperlukan |
|---|---|---|---|
| good {ip} | 200 | IP berhasil diperbarui | Tidak ada — pembaruan selesai |
| nochg {ip} | 200 | IP tidak berubah, tidak ada pembaruan yang dilakukan | Tidak ada — sudah terkini |
| badauth | 200 | Kredensial tidak valid | Periksa nama pengguna / kunci klien |
| nohost | 200 | Nama host tidak terdaftar | Memverifikasi nama host di dasbor |
| 911 | 200 | Kesalahan sisi server | Coba lagi setelah 5+ menit |
200 — isi teks memberi tahu Anda apakah pembaruan benar-benar berhasil.
Dapatkan IP Klien
FastDDNS menyediakan titik akhir utilitas sederhana yang mengembalikan alamat IP publik seperti yang dilihat oleh server. Ini berguna untuk penelusuran kesalahan, untuk memverifikasi IP mana yang dikirim perangkat Anda, atau untuk digunakan dalam skrip kustom sebelum memanggil titik akhir pembaruan.
Titik akhir
tanggapan
Mengembalikan HTTP 200 OK dengan alamat IP publik yang terdeteksi sebagai teks biasa di isi respons.
# Example response body
203.0.113.45RESPONSE
Contoh Permintaan
Menggunakan curl:
curl https://client.fastddns.net/dyndns/getipSHELL
Contoh Kode
Shell / cURL
# Method 1: HTTP Basic Auth (HTTPS, IP auto-detected)
curl "https://fastddnstest:[email protected]/?hostname=testhost.fastddns.org"
# Method 2: Query string credentials
curl "https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=fastddnstest&user_pass=569832"
# Check what IP the server sees from your device
curl "https://client.fastddns.net/dyndns/getip"SHELL
Python
import requests
HOSTNAME = "testhost.fastddns.org"
USER_NAME = "fastddnstest"
USER_PASS = "569832"
# Method 1: HTTP Basic Auth
resp = requests.get(
"https://client.fastddns.net/",
auth=(USER_NAME, USER_PASS),
params={"hostname": HOSTNAME}
)
# Method 2: Query string
# resp = requests.get("https://client.fastddns.net/", params={
# "hostname": HOSTNAME, "user_name": USER_NAME, "user_pass": USER_PASS
# })
body = resp.text.strip()
if body.startswith("good"):
print(f"Updated successfully: {body}")
elif body.startswith("nochg"):
print(f"No change needed: {body}")
elif body == "badauth":
print("Authentication failed. Check credentials.")
elif body == "nohost":
print("Hostname not found.")
elif body == "911":
print("Server error. Try again later.")PYTHON
PHP
<?php
$hostname = 'testhost.fastddns.org';
$user_name = 'fastddnstest';
$user_pass = '569832';
// Method 1: HTTP Basic Auth embedded in URL
$url = "https://{$user_name}:{$user_pass}@client.fastddns.net/?hostname=" . urlencode($hostname);
// Method 2: Query string credentials
// $url = "https://client.fastddns.net/?hostname=" . urlencode($hostname)
// . "&user_name=" . urlencode($user_name)
// . "&user_pass=" . urlencode($user_pass);
$ctx = stream_context_create(['http' => ['timeout' => 10]]);
$body = trim(file_get_contents($url, false, $ctx));
switch (true) {
case str_starts_with($body, 'good'):
echo "Updated: {$body}\n"; break;
case str_starts_with($body, 'nochg'):
echo "No change: {$body}\n"; break;
case $body === 'badauth':
echo "Auth failed. Check hostname credentials.\n"; break;
case $body === 'nohost':
echo "Hostname not found.\n"; break;
case $body === '911':
echo "Server error, retry later.\n"; break;
}PHP
Bash (Cron / Skrip Router)
#!/bin/bash
HOSTNAME="testhost.fastddns.org"
USER_NAME="fastddnstest"
USER_PASS="569832"
# Method 1: HTTP Basic Auth
RESULT=$(curl -s "https://${USER_NAME}:${USER_PASS}@client.fastddns.net/?hostname=${HOSTNAME}")
# Method 2: Query string (uncomment to use instead)
# RESULT=$(curl -s "https://client.fastddns.net/?hostname=${HOSTNAME}&user_name=${USER_NAME}&user_pass=${USER_PASS}")
case "$RESULT" in
good*) echo "[OK] $RESULT" ;;
nochg*) echo "[OK] $RESULT" ;;
badauth) echo "[ERR] Bad credentials — check hostname user/pass"; exit 1 ;;
nohost) echo "[ERR] Hostname not found"; exit 1 ;;
911) echo "[ERR] Server error, retry later"; exit 1 ;;
*) echo "[WARN] Unknown response: $RESULT" ;;
esacBASH
Penyelesaian masalah
Saya menerima badauth
user_name atau user_pass yang disediakan tidak cocok dengan kredensial yang ditetapkan ke nama host tersebut.
Setiap nama host memiliki kredensial independennya sendiri — temukan di dasbor Anda di bawah Nama host → Detail
.
Perhatikan bahwa kredensial ini khusus untuk nama host dan tidak dapat digunakan untuk masuk ke portal manajemen FastDDNS.
Jika Anda baru saja mengatur ulang kredensial, perbarui semua perangkat menggunakan nama host tersebut.
Saya menerima nohost
Nama host dalam parameter hostname tidak ada atau bukan milik akun yang diidentifikasi oleh kredensial yang disediakan.
Periksa kesalahan ketik di nama host, konfirmasikan bahwa nama tersebut tercantum di dasbor Anda, dan verifikasi bahwa user_name dan user_pass cocok nama host tertentu
.
Server mendeteksi IP yang salah
Server menggunakan IP sumber koneksi TCP. Jika perangkat Anda berada di belakang router NAT, IP publik router akan terdeteksi — yang biasanya merupakan perilaku yang diinginkan. Jika Anda menggunakan VPN atau proxy, server akan melihat IP keluar VPN/proxy sebagai gantinya. Gunakan getip endpoint untuk memverifikasi IP mana yang dilihat server dari perangkat Anda.
Saya menerima 911
Ini menunjukkan masalah sisi server sementara. Tunggu setidaknya 5 menit sebelum mencoba lagi. Jangan mengulang permintaan dengan cepat — ini dapat memicu pembatasan kecepatan. Periksa halaman status FastDDNS untuk insiden aktif apa pun.
Seberapa sering saya harus melakukan polling pada titik akhir pembaruan?
Sebaiknya periksa perubahan IP setiap 5 menit. Ketika IP Anda tidak berubah, server mengembalikan nochg, yang merupakan no-op yang ringan. Polling lebih sering dari sekali per menit tidak dianjurkan dan dapat mengakibatkan pembatasan laju.