API клиента FastDDNS

Автоматически обновляйте hostname в DDNS при каждом изменении IP-адреса.

Обзор

API клиента FastDDNS позволяет любому устройству с поддержкой HTTP — роутеру, IP-камере, скрипту или специальному программному обеспечению для обновления — поддерживать привязку вашего hostname к текущему IP-адресу. API использует простую схему GET-запросов: клиент отправляет учётные данные и hostname, а сервер отвечает коротким кодом состояния, указывающим результат.

Сервер автоматически определяет публичный IP-адрес клиента по входящему соединению. Дополнительные параметры для указания IP не требуются.

ℹ️ Поддерживаются и HTTP и HTTPS. Для защиты учётных данных при передаче настоятельно рекомендуется использовать HTTPS.

Аутентификация

API поддерживает два метода аутентификации. Оба принимаются в равной степени — выберите тот, который проще настроить на вашем устройстве или роутере.

🔑 Учётные данные для каждого hostname: Каждый созданный вами на FastDDNS hostname получает отдельные имя пользователяuser_name и парольuser_pass. Эти учётные данные могут только обновлять этот конкретный hostname и не могут использоваться для входа в панель управления FastDDNS. Такая схема ограничивает последствия возможной компрометации учётных данных устройства.

Метод 1 — HTTP Basic Auth (встроенные в URL)

Учётные данные встраиваются в URL в стандартном формате user:password@hostформат. Это широко поддерживается маршрутизаторами, камерами и библиотеками HTTP-клиентов. Используйте Updater Client Key из вашей панели в качестве пароля.

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

Поле Описание Где найти
{user_name} Имя пользователя, присвоенное этому hostname при его создании. Dashboard FastDDNS → названия хостов → детали
{user_pass} Пароль, присвоенный этому hostname при его создании. Dashboard FastDDNS → названия хостов → детали
{hostname} Полностью квалифицированный hostname для обновления, например, testhost.fastddns.org. Dashboard FastDDNS → названия хостов → детали

Метод 2 — параметры строки запроса

Учетные данные передаются в виде обычных параметров запроса вместе с hostname. Это полезно для устройств и firmware, которые не могут настроить заголовки HTTP Basic Auth, но позволяют указать полностью настраиваемую строку URL.

https://client.fastddns.net/?hostname={hostname}&user_name={user_name}&user_pass={user_pass}
Параметр Тип Описание
{user_name}
 
string Имя пользователя, присвоенное этому hostname при его создании.
{user_pass} string Пароль, присвоенный этому hostname при его создании.
{hostname} string Полностью квалифицированный hostname для обновления, например, testhost.fastddns.org.

Пример аутентификации с использованием строки запроса:

https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=YOUR_UPDATE_USERNAME&user_pass=YOUR_UPDATE_PASSWORD
⚠️ При использовании аутентификации через строку запроса всегда предпочитайте HTTPS, чтобы учетные данные не передавались в открытом виде. HTTP доступна, но должна использоваться только в доверенных локальных сетях или для тестирования.

Выполнить обновление

Отправьте один GET-запрос, чтобы обновить IP-адрес hostname, зарегистрированного в вашей учётной записи. Каждый запрос обновляет по одному имени хоста за раз.

Конечная точка

GET https://client.fastddns.net/
Также доступна через обычный HTTP — замените https на http.

Формат URL — метод 1: HTTP Basic Auth

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. В одном запросе можно указать только один hostname.
user_name Метод 2 string Имя пользователя для этого hostname. Требуется при использовании аутентификации через строку запроса (метод 2). Не требуется при использовании HTTP Basic Auth (метод 1).
user_pass Метод 2 string Пароль для этого hostname. Требуется при использовании аутентификации через строку запроса (метод 2). Не требуется при использовании HTTP Basic Auth (метод 1).
Автоопределение IP: Сервер использует исходный IP входящего TCP-соединения, чтобы определить ваш публичный IP-адрес. Вам не нужно указывать параметр myip.

Примеры запросов

Метод 1 — HTTP Basic Auth через HTTPS:

https://YOUR_UPDATE_USERNAME:YOUR_UPDATE_PASSWORD@client.fastddns.net/?hostname=testhost.fastddns.org

Метод 2 — строка запроса через HTTPS:

https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=YOUR_UPDATE_USERNAME&user_pass=YOUR_UPDATE_PASSWORD

Использование обычного HTTP (только для тестирования и доверенных сетей):

http://YOUR_UPDATE_USERNAME:YOUR_UPDATE_PASSWORD@client.fastddns.net/?hostname=testhost.fastddns.org

Коды возврата

Все ответы на обновление возвращают статус HTTP 200 ОК с простым текстовым содержимым. Ваш клиент должен проанализировать это содержимое, чтобы определить фактический результат обновления.

good {ip}

Обновление выполнено

Запись hostname обновлена с использованием обнаруженного IP-адреса. Фактический IP указан в ответе, например, good 203.0.113.45. Это ожидаемый ответ, когда ваш IP изменился.

nochg {ip}

Обновление не требуется

hostname уже указывает на обнаруженный IP-адрес — обновление не требовалось. Текущий IP указан в ответе, например, nochg 203.0.113.45. Это обычный ответ, не являющийся ошибкой.

badauth

Ошибка аутентификации

Имя пользователя или ключ клиента обновления неверны либо были отозваны. Проверьте учетные данные в панели управления FastDDNS. Не повторяйте запрос автоматически — сначала исправьте учетные данные.

nohost

Имя хозяина не найдено

Указанный hostname не существует в вашей учетной записи или не поддерживает динамические обновления. Проверьте написание hostname и убедитесь, что он зарегистрирован в вашей учетной записи.

911

Ошибка сервера

На стороне сервера FastDDNS произошла внутренняя ошибка. Подождите не менее 5 минут, прежде чем повторить запрос. Если проблема сохраняется, проверьте страницу состояния FastDDNS или обратитесь в службу поддержки.

Сводка ответа

Текст ответа Статус HTTP Значение Требуемое действие
good {ip} 200 IP успешно обновлен Нет — обновление завершено
nochg {ip} 200 IP не изменился, обновление не выполнено Нет — данные уже актуальны
badauth 200 Недействительные учетные данные Проверьте имя пользователя / ключ клиента
nohost 200 Имя хозяина не зарегистрировано Проверьте hostname в панели управления
911 200 Ошибка на стороне сервера Повторите попытку через 5+ минут
⚠️ Важно для автоматизации: Всегда анализируйте текст тела ответа, а не только код состояния HTTP. API всегда возвращает 200 — текстовое тело показывает, действительно ли обновление прошло успешно.

Получить IP клиента

FastDDNS предоставляет простую конечную точку, которая возвращает публичный IP-адрес, видимый сервером. Это полезно для отладки, проверки IP-адреса, с которого отправляет запрос ваше устройство, а также для использования в пользовательских скриптах перед вызовом конечной точки обновления.

Конечная точка

GET https://client.fastddns.net/dyndns/getip
Аутентификация не требуется. Также доступна через обычный HTTP.

Ответ

Возвращает HTTP 200 ОК с обнаруженным публичным 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

Примеры кода

Shell / cURL

# Recommended: let curl build the Authorization header (-u), so the
# credentials never appear in the URL.
HOSTNAME="myhome.fastddns.org"
USER_NAME="YOUR_UPDATE_USERNAME"
USER_PASS="YOUR_UPDATE_PASSWORD"
curl -s -u "${USER_NAME}:${USER_PASS}" "https://client.fastddns.net/?hostname=${HOSTNAME}"
# Legacy form, for devices that can only be given one URL field:
curl -s "https://client.fastddns.net/?hostname=${HOSTNAME}&user_name=${USER_NAME}&user_pass=${USER_PASS}"
# Check what IP the server sees from your device
curl -s "https://client.fastddns.net/dyndns/getip"SHELL

Python

import requests
HOSTNAME  = "testhost.fastddns.org"
USER_NAME = "YOUR_UPDATE_USERNAME"
USER_PASS = "YOUR_UPDATE_PASSWORD"
# 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 = 'YOUR_UPDATE_USERNAME';
$user_pass = 'YOUR_UPDATE_PASSWORD';
// Recommended: Basic Auth in a request header, so the password is not
// part of the URL and cannot leak through logs or error messages.
$url = "https://client.fastddns.net/?hostname=" . urlencode($hostname);
$auth = 'Basic ' . base64_encode($user_name . ':' . $user_pass);
// 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,
    'header'  => "Authorization: {$auth}\r\n",
]]);
$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 / скрипт router)

#!/bin/bash
HOSTNAME="testhost.fastddns.org"
USER_NAME="YOUR_UPDATE_USERNAME"
USER_PASS="YOUR_UPDATE_PASSWORD"
# Method 1: HTTP Basic Auth
RESULT=$(curl -s -u "${USER_NAME}:${USER_PASS}" "https://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 не совпадают с учётными данными, назначенными этому hostname. У каждого hostname есть отдельные учётные данные — найдите их в панели управления в разделе Имена хозяев → подробности. Обратите внимание: эти учётные данные предназначены только для этого hostname и не могут использоваться для входа в портал управления FastDDNS. Если вы недавно сбросили учётные данные, обновите их на всех устройствах, использующих этот hostname.

Я получаю nohost

Имя хоста в параметре hostname отсутствует или не принадлежит аккаунту, указанному в предоставленных учётных данных. Проверьте hostname на наличие опечаток, убедитесь, что он указан в панели управления, и проверьте, что user_name и user_pass соответствуют Это конкретное имя хозяина.

Сервер обнаруживает неправильный IP

Сервер использует исходный IP-адрес TCP-соединения. Если устройство находится за NAT-router, сервер обнаружит публичный IP-адрес router — обычно это и требуется. Если вы используете VPN или прокси, сервер увидит внешний IP-адрес VPN или прокси. Используйте getip endpoint, чтобы проверить, какой IP-адрес сервер видит с вашего устройства.

Я получаю 911

Это указывает на временную проблему на стороне сервера. Подождите не менее 5 минут перед повторной попыткой. Не отправляйте запросы в быстром цикле — это может привести к ограничению частоты запросов. Проверьте страницу статуса FastDDNS на наличие активных инцидентов.

Как часто следует опрашивать endpoint обновления?

Рекомендуем проверять изменения IP каждые 5 минут. Если IP-адрес не изменился, сервер возвращает nochg, что представляет собой лёгкую операцию без изменений. Не рекомендуется выполнять опрос чаще одного раза в минуту: это может привести к ограничению частоты запросов.