Simply.com API documentation

This document describes the Simply.com RESTful JSON API.

API endpoint

You can find the HTTP endpoint at https://api.simply.com/2/ - prefix your requests with this.

Example: https://api.simply.com/2/my/products/

Authentication

Authentication is done with HTTP Basic Authentication.

Password is the API key for the specific account.

Username can be anything, as the API key alone identifies the account.

Alternatively, the API key can be sent as a Bearer token in the Authorization header:

Authorization: Bearer APIKEY

API keys are created in the Simply.com control panel under Account, API keys.

OpenApi Spec / Documentation

You can find the interactive API documentation here: https://api.simply.com/2/doc/

Or download the OpenAPI specification as JSON: https://api.simply.com/2/doc.json

Rate limits

API is subject to rate limits, solely to prevent misuse.

When exceeded, the API responds with 429 and indicates the wait time in Retry-After.

Library implementations

The following libraries are available for use.

ACME implementations

acme.sh https://github.com/acmesh-official/acme.sh/
Posh-ACME https://github.com/rmbolger/Posh-ACME/
cert-manager service https://github.com/RunnerM/simply-dns-webhook/
Certbot plugin https://github.com/JohNan/certbot-dns-simply/
Webhook provider for ExternalDNS https://github.com/uozalp/external-dns-simply-webhook

API implementations

PHP https://github.com/simplycom/api-php/

ddns.simply.com (DynDNS2)

Routers and DDNS clients that support the DynDNS2 protocol can use the host ddns.simply.com directly.

For scripts and other DNS automation we recommend the REST API, which can create, modify and delete DNS records.

https://ddns.simply.com/nic/update?hostname=home.example.com&domain=example.com&myip=1.2.3.4

Authentication is performed using HTTP Basic Authentication, where the password is the API key for the account. The username can be anything, e.g. the account name.

If myip is omitted, the IP address that the request comes from is used. Updates must be done over HTTPS.

The record must be found in the DNS zone before it can be updated: an A record for IPv4 and an AAAA record for IPv6. If it does not exist, nohost is returned, so create the record in the control panel first.

The parameter domain specifies the domain. It must be included when the domain itself is updated, e.g. hostname=example.com&domain=example.com, and can be used when the domain cannot be derived from hostname.

The responses follow the DynDNS2 protocol, e.g. good on an update and nochg when the IP address is unchanged.

The address https://ddns.simply.com/myip returns the public IP address that the request comes from, and does not require authentication.

ddclient

protocol=dyndns2
ssl=yes
server=ddns.simply.com
login=ACCOUNTNAME
password=APIKEY
home.example.com

Curl example (Recommended)

Use the following Curl command to set home.example.com to the external IP of the requesting client:

curl -s -u "ACCOUNTNAME:APIKEY" "https://ddns.simply.com/nic/update?hostname=home.example.com"

You can set this command to run in a crontab, on a local machine, every 15 minutes or so.

Synology

On Synology, you can use the following syntax as a Custom DDNS Provider

https://ddns.simply.com/nic/update?hostname=__HOSTNAME__&myip=__MYIP__

hostname should then be specified as the fully qualified domain name you wish to update, e.g. home.example.com.

Home Assistant

The sensor fetches the public IP address every 5 minutes, and the automation only updates DNS when the address changes, and when Home Assistant starts. The API key is stored in secrets.yaml.

# configuration.yaml
sensor:
  - platform: rest
    name: Public IP
    resource: https://ddns.simply.com/myip
    value_template: "{{ value | trim }}"
    scan_interval: 300

rest_command:
  simplycom_ddns:
    url: "https://ddns.simply.com/nic/update?hostname=home.example.com"
    username: "ACCOUNTNAME"
    password: !secret simply_api_key
# secrets.yaml
simply_api_key: "APIKEY"
# Automation
alias: Simply.com DDNS
triggers:
  - trigger: state
    entity_id: sensor.public_ip
  - trigger: homeassistant
    event: start
actions:
  - action: rest_command.simplycom_ddns

Unifi

In UniFi OS, you need to set up a Custom Dynamic DNS provider and enter the following string in the "Server" field.

ddns.simply.com/nic/update?hostname=%h&myip=%i