Dynadot API 常用命令速查——从注册到竞价的实战清单
命令格式
所有请求都发到同一个端点,通过 command 参数区分操作:
GET https://api.dynadot.com/api3.json?key=API_KEY&command=命令名&参数1=值&参数2=值...
POST 可以用 application/x-www-form-urlencoded 格式提交大量参数(如批量设置 DNS)。
常用命令清单
查询类(只读,不花钱)
| 命令 | 说明 | 示例 |
|---|---|---|
search | 查询单域名可用性 | command=search&domain=example.com |
list_domain | 列出账户所有域名 | command=list_domain |
domain_info | 获取单个域名详情 | command=domain_info&domain=example.com |
get_whois | 查询域名 Whois(含隐私状态) | command=get_whois&domain=example.com |
list_folder | 列出所有 Smart Folders | command=list_folder |
balance | 查询账户余额 | command=balance |
管理类(修改配置,不花钱)
| 命令 | 说明 | 关键参数 |
|---|---|---|
set_dns | 设置 DNS | domain / ns1 / ns2 或 folder_name + ns* |
set_whois | 修改 Whois 联系人 | domain + 各联系人字段 |
lock_domain | 锁定域名(防转移) | domain |
unlock_domain | 解锁域名 | domain |
set_privacy | 设置隐私级别 | domain&privacy_level=full |
set_renew_option | 设置自动续费 | domain&renew_option=auto |
create_folder | 创建 Smart Folder | folder_name=my-folder |
move_domain_to_folder | 移动域名到文件夹 | domain&folder_name=my-folder |
生产类(花钱操作)
| 命令 | 说明 | 关键参数 |
|---|---|---|
register | 注册域名 | domain&years=1 |
renew | 续费域名 | domain&years=1 |
transfer | 转入域名 | domain&auth=EPP码 |
set_hosting | 停放 / 建站 | domain&hosting_type=advanced |
市场类
| 命令 | 说明 | 关键参数 |
|---|---|---|
place_auction_bid | 拍卖竞价 | auction_id&bid_amount |
add_backorder | 下 Backorder 单 | domain |
list_domain_for_sale | 挂牌出售 | domain&buy_now_price |
offer_to_buy | 发报价 | domain&offer_amount |
Python 调用示例
示例一:批量查询账户域名到期时间
import requests
import os
API_KEY = os.environ["DYNADOT_API_KEY"]
BASE = "https://api.dynadot.com/api3.json"
resp = requests.get(BASE, params={
"key": API_KEY,
"command": "list_domain",
})
data = resp.json()
for domain in data.get("ResponseContent", {}).get("Domains", []):
print(f"{domain['DomainName']:20s} 到期: {domain['Expiration']}")
示例二:给文件夹内所有域名改 DNS
resp = requests.post(BASE, data={
"key": API_KEY,
"command": "set_dns",
"folder_name": "production",
"ns": ["ns1.cloudflare.com", "ns2.cloudflare.com"],
"test": 1, # 先 Sandbox 测试
})
print(resp.json())
# 确认没问题后去掉 test 参数
示例三:批量注册域名
domains_to_register = ["example1.com", "example2.com", "example3.com"]
for d in domains_to_register:
resp = requests.get(BASE, params={
"key": API_KEY,
"command": "register",
"domain": d,
"years": 1,
"test": 1, # Sandbox
})
print(f"{d}: {resp.json().get('ResponseCode')}")
速率限制
API 请求速率限制取决于账户层级:
- 基础账户:每分钟约 100~200 次请求
- Reseller 账户:更高
- Sandbox:通常无严格限制
如果碰到 429 或限流错误,给请求加随机延迟(如每次 0.1~0.3 秒)。
错误码速查
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 参数错误 |
| 2 | 域名不存在 |
| 3 | 余额不足 |
| 4 | 域名已被锁定 |
| 5 | API Key 无效 |
| 6 | 速率限制 |
| 99 | 其他未知错误 |
完整错误码列表见 Dynadot API 文档。