Skip to content


Repository files navigation


Manipulate DNS records on various DNS providers in a standardized/agnostic way.

build_status coverage_status docker_pulls pypy_version pypy_python_support github_license

Why using Lexicon?

Lexicon provides a way to manipulate DNS records on multiple DNS providers in a standardized way.

Lexicon can be used as:

  • a CLI tool:
# Create a TXT entry in zone hosted by CloudFlare
lexicon cloudflare create TXT --name foo --content bar
  • or a Python library:
# Create a TXT entry in zone hosted by CloudFlare
from lexicon.client import Client
from lexicon.config import ConfigResolver

config = ConfigResolver().with_env().with_dict({
    "provider_name" : "cloudflare",
    "domain": "",

with Client(config) as operations:
    operations.create_record("TXT", "foo", "bar")

Lexicon was designed to be used in automation, specifically letsencrypt.

Supported providers

Only DNS providers who have an API can be supported by lexicon.

The current supported providers are:

aliyun aurora azure cloudflare cloudns
cloudxns conoha constellix ddns digitalocean
dinahosting directadmin dnsimple dnsmadeeasy dnspark
dnspod dnsservices dreamhost duckdns dynu
easydns easyname euserv exoscale flexibleengine
gandi gehirn glesys godaddy googleclouddns
gransy gratisdns henet hetzner hostingde
hover infoblox infomaniak internetbs inwx
joker linode linode4 localzone luadns
memset misaka mythicbeasts namecheap namecom
namesilo netcup nfsn njalla nsone
oci onapp online ovh plesk
pointhq porkbun powerdns rackspace rage4
rcodezero route53 safedns sakuracloud softlayer
transip ultradns valuedomain vercel vultr
webgo wedos yandex yandexcloud zeit
zilore zonomi      


Online documentation (user guide, configuration reference) is available in the Lexicon documentation.

For a quick start, please have a look in particular at the User guide.


If you want to help in the Lexicon development, you are welcome!

Please have a look at the Developer guide page to know how to start.


  • MIT
  • Logo: transform by Mike Rowe from the Noun Project