DNSHE免费域名API使用文档(V2.0)
基本信息
API地址:`https://api005.dnshe.com/index.php?m=domain_hub`
认证方式:API Key + API Secret
支持格式:JSON
速率限制:默认 30 请求/分钟
认证:获取API密钥
- 登录客户区
- 进入"免费域名管理"页面
- 在左侧导航栏找到"API管理"
- 点击"创建API密钥"
认证方式
方式1:HTTP Header(推荐)
|
bash |
方式2:URL/Body 参数(已禁用)
出于安全原因,`api_key` / `api_secret` 不再支持通过 URL Query 或请求体传递。请仅使用 `X-API-Key` 和 `X-API-Secret` 请求头认证。
API端点
- 子域名管理
1.1 列出子域名
端点:`subdomains`
操作:`list`
方法:`GET`
查询参数:
|
参数 |
类型 |
必填 |
默认值 |
说明 |
|
page |
integer |
否 |
1 |
页码(从1开始) |
|
per_page |
integer |
否 |
200 |
每页数量(1-500) |
|
include_total |
boolean |
否 |
false |
是否返回总数(大数据量时较慢) |
|
search |
string |
否 |
- |
搜索关键词(匹配subdomain或rootdomain) |
|
rootdomain |
string |
否 |
- |
按根域名过滤 |
|
status |
string |
否 |
- |
按状态过滤(active/suspended/expired) |
|
created_from |
string |
否 |
- |
创建时间起始(YYYY-MM-DD) |
|
created_to |
string |
否 |
- |
创建时间结束(YYYY-MM-DD) |
|
sort_by |
string |
否 |
id |
排序字段(id/created_at/updated_at/expires_at/subdomain) |
|
sort_dir |
string |
否 |
desc |
排序方向(asc/desc) |
|
fields |
string |
否 |
all |
返回字段(逗号分隔)。可选:id,subdomain,rootdomain,full_domain,status,created_at,updated_at,expires_at,never_expires,cloudflare_zone_id,provider_account_id;自定义 fields 时会自动补充 id |
基础请求示例:
|
bash |
分页请求示例:
|
bash |
搜索和过滤示例:
|
bash |
基础响应示例:
|
json |
分页响应示例:
|
json |
性能优化建议:
- 默认每页200条,建议根据需求调整`per_page`(推荐50-100)
- `include_total=1`会执行COUNT查询,数据量大时可能较慢,仅在必要时使用
- 通过`pagination.has_more`判断是否有下一页,比依赖`total`更高效
- 使用`fields`参数可以显著减少数据传输量
- 最大`per_page=500`,超过会自动限制为500
- 对于1万+域名,建议使用搜索和过滤功能精确定位目标域名
1.2 注册子域名
端点:`subdomains`
操作:`register`
方法:`POST`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
subdomain |
string |
是 |
子域名前缀 |
|
rootdomain |
string |
是 |
根域名 |
请求示例:
|
bash |
响应示例:
|
json |
1.3 获取子域名详情
端点:`subdomains`
操作:`get`
方法:`GET`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
subdomain_id |
integer |
是 |
子域名ID |
请求示例:
|
bash |
响应示例:
|
json |
1.4 删除子域名
端点:`subdomains`
操作:`delete`
方法:`POST` 或 `DELETE`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
subdomain_id |
integer |
是 |
子域名ID |
请求示例:
|
bash |
响应示例:
|
json |
1.5 续期子域名
端点:`subdomains`
操作:`renew`
方法:`POST` 或 `PUT`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
subdomain_id |
integer |
是 |
子域名ID |
请求示例:
|
bash |
响应示例:
|
json |
说明:
- `charged_amount` 表示本次续期从用户账户余额中扣除的金额。免费续期或扣费金额为 0 时,该字段值为 `0`。
可能的错误:
- `403 renewal disabled`:后台未配置有效的注册年限。
- `422 renewal not yet available`:尚未进入免费续期窗口(同时返回 `error_code=renewal_not_yet_available` 与剩余时间字段)。
- `403 redemption period requires administrator`:域名处于赎回期且后台配置为人工处理。
- `403 renewal window expired`:已超过续期宽限期。
- `402 insufficient balance for redemption renewal`:赎回期设置为自动扣费,但账户余额不足。
- `404 subdomain not found`:找不到对应子域名或不属于当前 API Key。
- DNS记录管理
2.1 列出DNS记录
端点:`dns_records`
操作:`list`
方法:`GET`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
subdomain_id |
integer |
是 |
子域名ID |
请求示例:
|
bash |
响应示例:
|
json |
|
提示:列表同时返回模块内部 `id` 和云解析服务商 `record_id`。`update`/`delete` 可使用任意一个字段定位记录(推荐优先使用 `id`)。 |
2.2 创建DNS记录
端点:`dns_records`
操作:`create`
方法:`POST`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
subdomain_id |
integer |
是 |
子域名ID |
|
type |
string |
是 |
记录类型(A/AAAA/CNAME/MX/TXT/NS/SRV/CAA) |
|
name |
string |
否 |
记录名称(`@` 或留空=当前子域本身;支持完整域名) |
|
content |
string |
条件必填 |
记录值(SRV/CAA 可由结构化参数自动组装) |
|
ttl |
integer |
否 |
TTL值(默认600) |
|
priority |
integer |
否 |
MX优先级(MX默认10)/SRV优先级(默认0) |
|
line |
string |
否 |
解析线路(us.ci/cn.mt可用,其他域名自动忽略) |
|
record_weight / weight |
integer |
否 |
SRV 权重 |
|
record_port / port |
integer |
否 |
SRV 端口(1-65535) |
|
record_target / target |
string |
否 |
SRV 目标主机 |
|
caa_flag |
integer |
否 |
CAA flag(默认0) |
|
caa_tag |
string |
否 |
CAA tag(默认 issue) |
|
caa_value |
string |
否 |
CAA value |
|
说明:DNS 管理(`disable_ns_management`)为禁用状态,则 `NS` 类型写入会被拒绝。 |
请求示例:
|
bash |
响应示例:
|
json |
2.3 更新DNS记录
端点:`dns_records`
操作:`update`
方法:`POST` 或 `PUT` 或 `PATCH`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
record_id |
string |
否 |
记录定位ID(可传模块 `id` 或供应商 `record_id`) |
|
id |
integer |
否 |
模块内部记录ID(推荐) |
|
type |
string |
否 |
新类型(A/AAAA/CNAME/MX/TXT/NS/SRV/CAA) |
|
name |
string |
否 |
新名称(`@` 或留空=当前子域本身) |
|
content |
string |
否 |
新记录值 |
|
ttl |
integer |
否 |
新TTL值 |
|
priority |
integer |
否 |
MX/SRV优先级 |
|
line |
string |
否 |
解析线路 |
|
record_weight / weight |
integer |
否 |
SRV 权重 |
|
record_port / port |
integer |
否 |
SRV 端口 |
|
record_target / target |
string |
否 |
SRV 目标主机 |
|
caa_flag / caa_tag / caa_value |
mixed |
否 |
CAA结构化参数 |
|
至少提供 `record_id` 或 `id` 其中之一。 |
请求示例:
|
bash |
响应示例:
|
json |
2.4 删除DNS记录
端点:`dns_records`
操作:`delete`
方法:`POST` 或 `DELETE`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
record_id |
string |
否 |
云解析服务商返回的记录ID。若提供,将首先按该字段匹配。 |
|
id |
integer |
否 |
模块内部记录ID,可直接使用 `list` 接口返回的 `id` 值。 |
|
至少提供 `record_id` 或 `id` 其中之一。 |
请求示例:
|
bash |
|
bash |
响应示例:
|
json |
- API密钥管理
3.1 列出API密钥
端点:`keys`
操作:`list`
方法:`GET`
请求示例:
|
bash |
响应示例:
|
json |
DNSHE 免费域名 API 文档
3.2 创建API密钥
端点:`keys`
操作:`create`
方法:`POST`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
key_name |
string |
是 |
密钥名称 |
|
ip_whitelist |
string |
否 |
IP白名单(逗号/换行/分号分隔,支持单IP或CIDR;需后台开启“启用API IP白名单”) |
请求示例:
|
bash |
响应示例:
|
json |
|
重要: `api_secret` 只显示一次,请妥善保存! |
3.3 删除API密钥
端点:`keys`
操作:`delete`
方法:`POST` 或 `DELETE`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
key_id |
integer |
是 |
密钥ID |
请求示例:
|
bash |
响应示例:
|
json |
3.4 重新生成API密钥
端点:`keys`
操作:`regenerate`
方法:`POST`
请求参数:
|
参数 |
类型 |
必填 |
说明 |
|
key_id |
integer |
是 |
密钥ID |
请求示例:
|
bash |
响应示例:
|
json |
- 配额查询
4.1 查询配额
端点:`quota`
方法:`GET`
请求示例:
|
bash |
响应示例:
|
json |
错误代码与统一错误结构
从当前版本开始,所有 API 错误响应统一为以下结构:
|
json |
字段说明:
|
字段 |
类型 |
说明 |
|
success |
boolean |
固定为 false |
|
error_code |
string |
稳定错误码(建议业务侧按此字段处理) |
|
message |
string |
人类可读错误描述 |
|
details |
object |
可选,附加上下文(如 limit/remaining/reset_at) |
|
error |
string |
兼容旧版客户端(等同 message) |
常见错误码:
|
error_code |
HTTP状态码 |
说明 |
|
bad_request |
400 |
请求参数错误 |
|
auth_invalid_credentials |
401 |
API Key/Secret 无效或缺失 |
|
auth_ip_not_allowed |
403 |
请求 IP 不在白名单 |
|
api_access_disabled |
403 |
后台关闭了 API 访问 |
|
not_found / subdomain_not_found / dns_record_not_found |
404 |
资源不存在 |
|
quota_exceeded |
429 |
额度不足 |
|
rate_limit_exceeded |
429 |
请求频率超限 |
|
provider_operation_failed |
502 |
上游 DNS 提供商执行失败 |
|
internal_error |
500 |
服务内部异常 |
速率限制
默认限制: 60 请求/分钟
响应头:
- 请求响应中会包含速率限制信息
超限响应示例:
|
json |
SDK示例
PHP示例
|
php |
Python示例
|
python |
JavaScript示例
|
javascript |
- WHOIS 查询(公开接口)
该接口用于对外查询 WHOIS 信息,支持系统内二级域名与外部域名。默认无需 API Key,系统会基于访问 IP 做速率限制(默认 2 次/分钟,可在后台“WHOIS 每分钟查询上限”中调整)。如需强制使用 API Key,可在后台开启“WHOIS 查询需要 API Key”开关。
- 端点: `whois`
- 方法: `GET`
- 参数:
|
参数 |
类型 |
必填 |
说明 |
|
domain |
string |
是 |
完整子域名,例如 `foo.example.com` |
请求示例(公共模式):
|
bash |
请求示例(要求 API Key 时):
|
bash |
响应示例(已注册):
|
json |
响应示例(未注册):
|
json |
|
说明: - `registrant_email` 的内容取决于是否开启域名隐私保护。 - 同时会返回 `name_servers` 字段,内容与 `nameservers` 一致,便于不同 SDK 兼容。 - 未注册域名会返回 `registered=false` 与 `status=unregistered`,同时附带查询的完整域名。 - 当未启用 API Key 模式时,返回体中的 `rate_limit` 字段展示当前 IP 的剩余额度。 |