有道翻译 API(有道智云翻译服务)面向开发者提供机器翻译相关接口,常见用途包括文本翻译、图片识别翻译、语音或文档处理等。具体能力、开通条件和计费方式会随控制台调整,接入前应先查看有道智云当前文档。
API 接入时重点核对三件事:当前支持的语言方向、接口调用方式、以及控制台显示的免费额度和超额计费。不要按旧文章里的语种数、免费字符数或单价做预算,开发前先用测试应用跑一小批真实文本。
🔑 注册与获取 API 密钥
使用有道翻译 API 前,需要先在有道智云平台注册并创建应用以获取 API 密钥:
1
注册有道智云账号
访问有道智云官网(ai.youdao.com),使用手机号或邮箱注册账号。已有网易账号的用户可直接登录。
2
创建应用
登录后进入控制台,点击「创建应用」,填写应用名称和描述,选择需要的服务类型(文本翻译、语音翻译等)。
3
获取密钥
应用创建成功后,系统会自动生成 App ID 和 App Key(密钥),在应用详情页面可以查看。请妥善保管密钥,不要泄露。
4
开始调用
使用 App ID 和 App Key 按照 API 文档的签名规则构造请求参数,即可开始调用翻译接口。
💻 API 调用方法
请求参数说明
有道翻译 API 的核心接口为文本翻译接口,请求地址为 https://openapi.youdao.com/api。主要请求参数包括:
q— 待翻译的文本内容(UTF-8 编码)from— 源语言代码(如 zh-CHS 代表简体中文,en 代表英文,auto 代表自动检测)to— 目标语言代码appKey— 应用 IDsalt— 随机数(UUID 即可)sign— 签名(使用 SHA-256 算法对 appKey+input+salt+curtime+密钥 进行哈希)signType— 签名类型,固定为 v3curtime— 当前 UTC 时间戳(秒级)
Python 调用示例
以下是使用 Python 调用有道翻译 API 的完整代码示例:
import hashlib
import uuid
import time
import requests
YOUDAO_URL = 'https://openapi.youdao.com/api'
APP_KEY = '你的AppKey'
APP_SECRET = '你的AppSecret'
def translate(text, from_lang='auto', to_lang='zh-tw'):
salt = str(uuid.uuid4())
curtime = str(int(time.time()))
sign_str = APP_KEY + truncate(text) + salt + curtime + APP_SECRET
sign = hashlib.sha256(sign_str.encode('utf-8')).hexdigest()
params = {
'q': text,
'from': from_lang,
'to': to_lang,
'appKey': APP_KEY,
'salt': salt,
'sign': sign,
'signType': 'v3',
'curtime': curtime,
}
response = requests.post(YOUDAO_URL, data=params)
return response.json()
def truncate(text):
if len(text) <= 20:
return text
return text[:10] + str(len(text)) + text[-10:]
result = translate('有道翻译是一款很好用的翻译软件')
print(result['translation']) Node.js 调用示例
const crypto = require('crypto');
const axios = require('axios');
const { v4: uuidv4 } = require('uuid');
const APP_KEY = '你的AppKey';
const APP_SECRET = '你的AppSecret';
const API_URL = 'https://openapi.youdao.com/api';
function truncate(q) {
if (q.length <= 20) return q;
return q.substring(0, 10) + q.length + q.substring(q.length - 10);
}
async function translate(text, from = 'auto', to = 'en') {
const salt = uuidv4();
const curtime = Math.round(Date.now() / 1000).toString();
const signStr = APP_KEY + truncate(text) + salt + curtime + APP_SECRET;
const sign = crypto.createHash('sha256').update(signStr).digest('hex');
const { data } = await axios.post(API_URL, null, {
params: { q: text, from, to, appKey: APP_KEY, salt, sign, signType: 'v3', curtime }
});
return data;
}
translate('有道翻译API测试').then(res => console.log(res.translation)); 💰 计费与套餐
有道翻译 API 的计费方式、免费额度和套餐价格会随产品策略调整。下面只保留开发者做预算时应该核对的项目,具体数字以有道智云当前文档和控制台显示为准:
- 免费额度:是否仍提供试用额度,以及额度适用于哪些接口
- 按量计费:文本、图片、语音和文档接口是否分开计费
- 预购套餐:套餐是否有有效期、调用范围和超额计费规则
- 企业定制:大批量调用时是否需要单独申请商务报价或 SLA
语音翻译、图片翻译和文档翻译的计费方式有所不同,具体可参考有道智云官方文档。API 控制台提供了详细的用量统计和费用明细,方便开发者监控和管理用量。
💡 开发者建议
- 密钥安全:不要将 App Key 和 App Secret 硬编码在前端代码或公开仓库中,建议使用环境变量或密钥管理服务
- 请求限流:以当前控制台和 API 文档显示为准,建议在客户端添加请求队列和重试机制
- 缓存策略:对于重复翻译的内容,建议在本地缓存翻译结果以减少 API 调用和费用
- 错误处理:务必处理 API 返回的错误码(如 101 缺少参数、108 超频等),确保应用的稳定性
- 批量翻译:如需翻译大量文本,建议合并请求(以当前 API 文档限制为准)以提高效率
❓ 常见问题
有道翻译 API 的响应速度如何?
响应速度取决于文本长度、网络环境、接口类型和调用区域。正式接入前,建议用自己的文本长度和并发量做压测,并查看有道智云当前文档中的服务等级和限流说明。
API 支持哪些编程语言?
有道翻译 API 是 HTTP 接口,常见后端语言通常都可以调用。SDK、示例代码和签名规则是否更新,应以有道智云当前文档中心为准。非官方示例只适合参考,不建议直接用于生产环境。
签名验证失败怎么排查?
签名验证失败(错误码 202)通常由以下原因导致:1)App Key 或 App Secret 复制时包含了多余的空格;2)签名字符串的拼接顺序不正确(正确顺序为 appKey + input + salt + curtime + appSecret);3)input 的 truncate 函数实现有误(当文本长度 > 20 时,取前10位 + 长度 + 后10位);4)curtime 不是当前时间戳。建议使用官方 SDK 中的签名函数进行验证。