Обзор
API клиента FastDDNS позволяет любому устройству с поддержкой HTTP — роутерам, IP-камерам, скриптам или специальному программному обеспечению для обновления — держать ваше DNS-имя на текущем IP-адресе. API работает по простой схеме GET-запроса: ваш клиент отправляет учетные данные и имя хоста, а сервер отвечает коротким статус-кодом с указанием результата.
Сервер автоматически обнаруживает публичный IP-адрес клиента от входящего соединения. Дополнительные параметры не требуются для указания вашего IP.
Аутентификация
API поддерживает два метода аутентификации. Оба варианта принимаются одинаково — выбирайте то, что проще настроить на вашем устройстве или роутере.
user_name и user_pass. Эти квалификации могут только
обновить это конкретное имя хоста и не может быть использован для входа в панель управления FastDDNS. Такая конструкция ограничивает последствия в случае компрометации учетных данных устройства.
Метод 1 — HTTP Basic Auth (встроен в URL)
Учетные данные встроены в URL в стандартном формате user:password@host. Это широко поддерживается маршрутизаторами, камерами и библиотеками HTTP-клиентов. Используйте Updater Client Key из вашей панели в качестве пароля.
| Поле | Описание | Где его найти |
|---|---|---|
| {user_name} | Имя пользователя, присвоенное этому конкретному имени хоста на момент создания. | Dashboard FastDDNS → названия хостов → детали |
| {user_pass} | Пароль, назначенный этому конкретному имени хоста при создании. | Dashboard FastDDNS → названия хостов → детали |
| {hostname} | Полностью квалифицированное имя хоста для обновления, например, testhost.fastddns.org. |
Dashboard FastDDNS → названия хостов → детали |
Метод 2 — параметры строк запроса
Учетные данные передаются в виде простых параметров запроса вместе с hostname. Это полезно для устройств и прошивки, которые не могут настроить заголовки HTTP Basic Auth, но позволяют полностью использовать строку URL.
| Параметр | Тип | Описание |
|---|---|---|
| {user_name} |
string | Имя пользователя, присвоенное этому хосту при его создании. |
| {user_pass} | string | Пароль, назначенный этому имени хоста при его создании. |
| {hostname} | string | Полностью квалифицированное имя хоста для обновления, например, testhost.fastddns.org. |
Пример с использованием аутентификации строки запроса:
Выполнить обновление
Отправьте один GET запрос на обновление IP-адреса хоста, зарегистрированного на ваш аккаунт. Каждый запрос обновляет по одному имени хоста за раз.
Конечная точка
https на http.Формат URL — Метод 1: HTTP Basic Auth
Формат URL — Метод 2: Строка запроса
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
| 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). |
myip.
Примеры запросов
Метод 1 — HTTP Basic Auth по HTTPS:
Метод 2 — Запрос строки по HTTPS:
Использование простого HTTP (тестирование / только доверенные сети):
Коды возврата
Все ответы на обновления возвращают статус HTTP 200 ОК с простым текстом. Ваш клиент должен проанализировать этот текст, чтобы определить фактический результат обновления.
Обновление успешно
Запись имени хоста была обновлена до обнаруженного IP-адреса. В ответ включен фактический IP (IP), например, good 203.0.113.45. Это ожидаемая реакция, когда ваш IP изменился.
Изменения не требуются
Имя хоста уже указывает на обнаруженный IP-адрес — обновление не требовалось. Включен текущий IP, например, nochg 203.0.113.45. Это обычная, не ошибочная реакция.
Аутентификация не прошла
Имя пользователя или клиентский ключ обновления неверны или были отозваны. Проверьте свои учетные данные в панели управления FastDDNS. Не повторяйте автоматически — сначала исправьте учетные данные.
Имя хозяина не найдено
Указанное имя хоста отсутствует в вашей учётной записи или не подходит для динамических обновлений. Проверьте написание имени хозяина и убедитесь, что он зарегистрирован на ваш аккаунт.
Ошибка сервера
На стороне сервера FastDDNS произошла внутренняя ошибка. Подождите минимум 5 минут, прежде чем пробовать снова. Если проблема сохраняется, проверьте страницу статуса FastDDNS или обратитесь в службу поддержки.
Краткое содержание ответа
| Текст ответа | Статус HTTP | Значение | Требуемые действия |
|---|---|---|---|
| good {ip} | 200 | IP успешно обновился | Нет — обновление завершено |
| nochg {ip} | 200 | IP без изменений, обновлений не было | Нет — это уже актуально |
| badauth | 200 | Недействительные учетные данные | Проверьте имя пользователя / ключ клиента |
| nohost | 200 | Имя хозяина не зарегистрировано | Проверьте имя hosta в панели управления |
| 911 | 200 | Ошибка на стороне сервера | Повтор через 5+ минут |
200 — текстовое тело сообщает, действительно ли обновление прошло успешно.
Получить IP клиента
FastDDNS предоставляет простую утилиту и конечную точку, которая возвращает публичный IP-адрес, видимый сервером. Это полезно для отладки, для проверки, с какого IP отправляется ваше устройство, или для использования в пользовательских скриптах перед вызовом конечной точки обновления.
Конечная точка
Реакция
Возвращает HTTP 200 ОК с обнаруженным публичным IP-адресом в виде простого текста в теле ответа.
# Example response body
203.0.113.45RESPONSE
Примеры запросов
Использование 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, что является лёгким вариантом без операции. Опросы чаще, чем один раз в минуту, не рекомендуется и могут привести к ограничению скорости.