FastDDNS クライアントAPI

IPアドレスが変わるたびに動的DNSホスト名を自動的に更新してください。

概要

FastDDNSクライアントAPIは、HTTP対応デバイス(ルーター、IPカメラ、スクリプト、専用のアップデータソフトウェアなど)が、あなたのDNSホスト名を現在のIPアドレスに割り当てることを可能にします。 APIはシンプルなGETリクエスト設計に従っています。クライアントが認証情報とホスト名を送信し、サーバーは結果を示す短いステータスコードを返します。

サーバーは、着信接続からクライアントのパブリックIPアドレスを自動的に検出します。IPを指定するために追加のパラメータは必要ありません。

i️ HTTPHTTPSの両方がサポートされています。HTTPSは、輸送中の認証情報を保護するために強く推奨されます。

認証

APIは2つの認証方法をサポートしています。どちらも同じように受け入れられます。デバイスやルーターで設定しやすい方を選んでください。

🔑 ホスト名ごとの認証情報:FastDDNSで作成する各ホスト名には専用のuser_nameuser_passが割り当てられます。これらの資格はただ その特定のホスト名を更新し、FastDDNS管理ダッシュボードへのログインには使えません。この設計により、デバイスの認証情報が侵害された場合の影響を抑えます。

方法1 — HTTP基本認証(URL埋め込み)

認証情報は標準のuser:password@host形式でURLに埋め込まれます。これはルーター、カメラ、HTTPクライアントライブラリで広くサポートされています。ダッシュボードのUpdater Client Keyをパスワードとして使ってください。

https://{user_name}:{user_pass}@client.fastddns.net/?hostname={hostname}


フィールド 概要 場所
{user_name} ユーザー名は作成時にこの特定のホスト名に割り当てられました。 FastDDNS ダッシュボード →ホスト名 →詳細
{user_pass} この特定のホスト名に作成時に割り当てられたパスワードです。 FastDDNS ダッシュボード →ホスト名 →詳細
{hostname} 更新すべき完全限定ホスト名、例えばtesthost.fastddns.org FastDDNS ダッシュボード →ホスト名 →詳細

方法2 — クエリ文字列パラメータ

認証情報はhostnameと一緒にプレーンクエリパラメータとして渡されます。これは、HTTPのBasic Authヘッダーを設定できないが、完全にカスタムURLの文字列を許可するデバイスやファームウェアに有用です。

https://client.fastddns.net/?hostname={hostname}&user_name={user_name}&user_pass={user_pass}
パラメータ 種類 概要
{user_name}


string このホスト名は作成時に割り当てられたユーザー名です。
{user_pass} string このホスト名が作成された際に割り当てられたパスワードです。
{hostname} string 更新すべき完全限定ホスト名、例:testhost.fastddns.org

クエリ文字列認証の例:

https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=fastddnstest&user_pass=569832
⚠️ クエリ文字列認証を使用する場合は、認証情報が平文で送信されないように常にHTTPSを優先してください。 HTTP 利用可能ですが、信頼できるローカルネットワーク上やテスト用にのみ使用してください。

アップデートを実行する

アカウントに登録されているホスト名のIPアドレスを更新するための単一のGETリクエストを送信します。各リクエストは一度に1つのホスト名を更新します

終着点

GET https://client.fastddns.net/
また、単純なHTTP経由でアクセスできます — httpshttpに置き換えてください。

URLフォーマット — 方法1:HTTP基本認証

https://{user_name}:{user_pass}@client.fastddns.net/?hostname={hostname}

URLフォーマット — 方法2:クエリ文字列

https://client.fastddns.net/?hostname={hostname}&user_name={user_name}&user_pass={user_pass}

クエリパラメータ

パラメータ 種類 概要
hostname 必須 string 更新する完全限定ホスト名(FQDN)、例:myhome.fastddns.net または testhost.fastddns.org。リクエストごとにホスト名は1つのみ対応されています。
user_name 方法2 string このホスト名のユーザー名です。クエリ文字列認証(方法2)を使用する際に必要です。HTTP Basic Auth(メソッド1)を使う場合は不要です。
user_pass 方法2 string このホスト名のパスワードです。クエリ文字列認証(方法2)を使用する際に必要です。HTTP Basic Auth(メソッド1)を使う場合は不要です。
IP自動検出:サーバーは、受信したTCP接続の送信元IPを使って、あなたのパブリックIPアドレスを特定します。myipパラメータを指定する必要はありません。

例示リクエスト

方法1 — HTTPSによるHTTP基本認証:

https://fastddnstest:569832@client.fastddns.net/?hostname=testhost.fastddns.org

方法2 — HTTPS上のクエリ文字列:

https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=fastddnstest&user_pass=569832

プレーンHTTPの使用(テスト/信頼されたネットワークのみ):

http://fastddnstest:569832@client.fastddns.net/?hostname=testhost.fastddns.org

返送コード

すべての更新応答はHTTPステータスを返します200 OK 本文はプレーンテキストで。 クライアントはこのテキスト本文を解析し、更新の実際の結果を判断する必要があります。

good {ip}

アップデート成功

ホスト名の記録は検出されたIPアドレスに更新されています。実際のIPアドレスは応答に含まれており、例:good 203.0.113.45。これはIPが変わったときに期待される反応です。

nochg {ip}

変更は不要です

ホスト名はすでに検出されたIPアドレスを指しており、更新は必要ありませんでした。現在のIPは含まれており、例:nochg 203.0.113.45。これは通常のエラーなしの応答です。

badauth

認証失敗

ユーザー名やアップデーターのクライアントキーが間違っているか、取り消されています。FastDDNSダッシュボードで認証情報を確認してください。自動で再試行せず、まず認証情報を修正してください。

nohost

ホスト名が見つかりません

指定されたホスト名はアカウントに存在しないか、動的更新の対象外です。ホスト名のスペルを確認し、あなたのアカウントに登録されているか確認してください。

911

サーバーエラー

FastDDNSサーバー側で内部エラーが発生しました。再挑戦する前に少なくとも5分は待ってください。問題が続く場合は、FastDDNSのステータスページを確認するかサポートに連絡してください。

回答概要

回答本文 HTTPステータス 意味 必要な行動
good {ip} 200 IPが正常に更新されました なし — 更新完了
nochg {ip} 200 IPアドレスは変更せず、更新もありません ありません — すでに最新
badauth 200 無効な資格情報 ユーザー名/クライアントキーを確認してください
nohost 200 ホスト名は登録されていません ダッシュボードでホスト名を検証してください
911 200 サーバーサイドエラー 5+分後に再挑戦
⚠️ 自動化にとって重要:常に解析してください回答本文 単なるHTTPステータスコードではありません。APIは常に200を返します — テキスト本文は更新が実際に成功したかどうかを示します。

クライアントIPを取得する

FastDDNSは、サーバーが認識したパブリックIPアドレスを返すシンプルなユーティリティエンドポイントを提供します。 これはデバッグや、デバイスがどのIPから送信しているかの確認、またはアップデートエンドポイントを呼び出す前のカスタムスクリプトで使うのに便利です。

終着点

GET https://client.fastddns.net/dyndns/getip
認証は不要です。また、単なるHTTP経由でアクセス可能です。

反応

HTTPを返す200 OK 検出されたパブリックIPアドレスはレスポンス本文の平文として表示されます。

# Example response body
203.0.113.45RESPONSE

例示リクエスト

https://client.fastddns.net/dyndns/getip
http://client.fastddns.net/dyndns/getip

curl の使用:

curl https://client.fastddns.net/dyndns/getipSHELL

コード例

シェル / 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

パイソン

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 / ルータースクリプト)

#!/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

トラブルシューティング

私はbadauthを受け取っています。

提供されたuser_nameまたはuser_passは、そのホスト名に割り当てられた認証情報と一致しません。 各ホスト名には独立した認証情報があり、ダッシュボードで以下の項目で見つけてくださいホスト名→詳細 . これらの認証情報はホスト名に特有であり、FastDDNS管理ポータルへのログインには使用できません。 もし最近認証情報をリセットしたなら、そのホスト名を使うすべてのデバイスを更新してください。

受け取る nohost

hostnameパラメータのホスト名は存在しないか、提供された認証情報で特定されたアカウントに属していません。 ホスト名のタイプミスを確認し、ダッシュボードに記載されているか確認し、user_nameuser_passが一致しているか確認してくださいその特定のホスト名 .

サーバーが間違ったIPを検出しています

サーバーはTCP接続の送信元IPを使用します。デバイスがNATルーターの背後にある場合、ルーターのパブリックIPが検出されます。これは通常望ましい動作です。VPNやプロキシに接続している場合、サーバーはVPNやプロキシの出口IPを認識します。 getip endpointを使って、サーバーがあなたのデバイスからどのIPを認識しているか確認してください。

私は911を受け取っています。

これは一時的なサーバー側の問題を示しています。再挑戦する前に少なくとも5分は待ってください。リクエストを高速でループさせないでください。これによりレート制限が発生します。FastDDNSのステータスページでアクティブなインシデントがないか確認してください。

アップデートエンドポイントはどのくらいの頻度でポーリングすべきでしょうか?

IPの変更は5分ごとに確認することをおすすめします。IPが変わらなければサーバーはnochgを返しますが、これは軽量なノーオペレーションです。1分に1回以上の投票は推奨されず、速度制限につながる可能性があります。