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