API клиента FastDDNS

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

Обзор

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

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

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

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

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

🔑 Учётные данные по имени хоста: Каждое имя хоста, которое вы создаёте на FastDDNS, получает отдельные user_name и user_pass. Эти квалификации могут только обновить это конкретное имя хоста и не может быть использован для входа в панель управления 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} Имя пользователя, присвоенное этому конкретному имени хоста на момент создания. Dashboard FastDDNS → названия хостов → детали
{user_pass} Пароль, назначенный этому конкретному имени хоста при создании. Dashboard FastDDNS → названия хостов → детали
{hostname} Полностью квалифицированное имя хоста для обновления, например, testhost.fastddns.org. Dashboard 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 доступна, но должна использоваться только в доверенных локальных сетях или для тестирования.

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

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

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

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

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

Метод 1 — HTTP Basic Auth по HTTPS:

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 ОК с простым текстом. Ваш клиент должен проанализировать этот текст, чтобы определить фактический результат обновления.

good {ip}

Обновление успешно

Запись имени хоста была обновлена до обнаруженного 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 Имя хозяина не зарегистрировано Проверьте имя hosta в панели управления
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

# 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 / скрипт роутера)

#!/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_name и user_pass совпадают Это конкретное имя хозяина .

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

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

Я получаю 911

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

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

Рекомендуем проверять изменения IP каждые 5 минут. Когда ваш IP не изменился, сервер возвращает nochg, что является лёгким вариантом без операции. Опросы чаще, чем один раз в минуту, не рекомендуется и могут привести к ограничению скорости.