Dynamic DNS Quickstart

  1. Audience
  2. Create a No-IP API key
  3. Create a Zone
  4. Create a Hostname
  5. Create a DDNS Key
  6. Issue an Update

Audience

This guide is for new users that need to set up a hostname and manage its
address via an update device such as a camera, router, or software updater. In this guide you will create API and DDNS keys, bootstrap a new zone and hostname, then update that name's address via Dynamic DNS Integration API. You will use both the No-IP API and the Dynamic DNS Integration API.

Create a No-IP API key

First, sign into your No-IP account and navigate to the
API Key management page. Here you will create your first No-IP API Key.

# Assign the API key you just generated. It should begin with 'sk_'
export API_KEY="sk_..."

Note: The API Key will only be shown once. If you lose it, you will have to generate a new one. No-IP does not store the original key.

Create a Zone

First, we will create a new zone. We'll use example.com in this guide. Replace it with your own domain name.

curl --user ":${API_KEY}" \
    --json '{ "name": "example.com" }' \
    "https://api.noip.com/v1/dns/zones"

Verify the Zone

List the zones in the account to see the new zone.

curl --user ":${API_KEY}" "https://api.noip.com/v1/dns/zones"
{
  "page": {
    "offset": 0,
    "limit": 50,
    "total": 1
  },
  "data": [
    {
      "name": "example.com",
      "zone_type": "primary",
      "nx_ttl": 1800,
      "is_shared": false,
      "is_owner": true,
      "publication_state": "publishrequested",
      "is_write_prohibited": false,
      "created_at": "2024-03-28T21:50:59Z",
      "updated_at": "2024-03-28T21:50:59Z"
    }
  ]
}

Create a Hostname

Create a record for myhost.example.com.

Note that in this example you will replace example.com in the URL path.

curl --user ":$API_KEY" \
    --json '{ "name": "myhost", "rrsets": [{ "dns_type": "A", "rdata": [{ "value": "0.0.0.0" }]}] }' \
    "https://api.noip.com/v1/dns/records/example.com"

Verify the Record

View the RRSet you just created. An RRSet is the values that are served for a DNS record name and type.

Note that in this example you will replace example.com in the URL path.

curl --user ":$API_KEY" \
    "https://api.noip.com/v1/dns/records/example.com/myhost/rrsets"
{
  "page": {
    "offset": 0,
    "limit": 50,
    "total": 1
  },
  "data": [
    {
      "name": "myhost",
      "dns_type": "A",
      "ttl": 1800,
      "metadata": {},
      "rdata": [
        {
          "value": "0.0.0.0",
          "label": "gwoNEVtjNU3n"
        }
      ],
      "updated_at": "2024-03-28T22:07:53Z"
    }
  ]
}

Create a DDNS Key

Create a DDNS key. A DDNS key has a username and password which is used to authenticate with the Dynamic DNS Integration API.

curl --user ":$API_KEY" \
    --json '{ "description": "northeast-office" }' \
    "https://api.noip.com/v1/account/ddns-keys"
{
  "credentials": {
    "username": "5fqy9st",
    "password": "xxxxxxxxxxxx"
  }
}

This response is the only time the password will be visible!

# assign the output of the previous command to a variable in this format for later use.
export DDNS_KEY="5fqy9st:xxxxxxxxxxxx"

Verify Your DDNS Key

Note: When using DDNS Keys, you will set your hostname to "all.ddnskey.com". You can read more details about DDNS Keys in the No-IP knowledgebase.

The credential can be verified directly with the Dynamic DNS Integration API.

curl --user "${DDNS_KEY}" \
    --header "User-Agent: DDNSQuickstartGuide" \
    "https://dynupdate.no-ip.com/nic/update?hostname=all.ddnskey.com"

Example response:

nochg 0.0.0.0

Add the Hostname to the DDNS Key

In the previous command, we verified the DDNS key credentials, but did not issue an IP update to the hostname we created earlier.

In order to issue an IP address update the hostname, add the hostname target(s) to the DDNS key.

Note that in this example you will replace the example username 5fqy9st with your own DDNS key username.

curl --user ":$API_KEY" \
    -X PUT \
    --json '{ "targets": [{"name": "myhost", "zone_name": "example.com"}] }' \
    "https://api.noip.com/v1/account/ddns-keys/5fqy9st"

Issue an Update

Option 1: Integrated Software

The DDNS key credentials can be used with any software or device that integrates with No-IP, such as No-IP's update clients, cameras, routers, and more. Your chosen software will issue IP updates automatically!

Option 2: Directly with the Dynamic DNS Integration API

You can issue an update to a specific IP address using the ip query parameter.

curl --user "${DDNS_KEY}" \
    --header "User-Agent: DDNSQuickstartGuide" \
    "https://dynupdate.no-ip.com/nic/update?hostname=all.ddnskey.com&myip=2.3.5.8"

Example response:

good 2.3.5.8