必须先获取api密钥、构造签名请求头并序列化请求体,否则返回401或400错误;注册火山引擎账号→创建带豆包权限的api密钥→保存ak/sk至.env→安装axios/crypto-js/dotenv→用hmac-sha256生成authorization头→调用/v1/chat/completions接口。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Node.js项目中调用火山引擎豆包大模型API完成文本生成,必须先获取有效API密钥、构造符合签名规范的HTTP请求头,并正确序列化请求体。缺少任一环节都会返回401或400错误。
注册账号并获取API Key和Secret
访问火山引擎豆包控制台,使用手机号注册企业或个人账号→登录后进入「API密钥管理」→点击「创建API密钥」→填写名称(如nodejs-prod)→勾选「豆包大模型」权限→点击确定→页面立即显示Access Key ID和Secret Access Key。
【务必立即复制Secret Access Key,关闭页面后无法再次查看】
将Access Key ID和Secret Access Key保存为环境变量,例如在项目根目录下新建.env文件:
DOUBAO_ACCESS_KEY=AKLTxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DOUBAO_SECRET_KEY=SKLTxxxxxxxxxxxxxxxxxxxxxxxxxxxx
安装依赖并初始化HTTP客户端
执行命令安装axios和crypto-js:
npm install axios crypto-js dotenv
在项目入口文件(如index.js)顶部加载环境变量和依赖:
require('dotenv').config();
const axios = require('axios');
const crypto = require('crypto-js');
构造带签名的请求头
豆包API要求所有请求必须携带Authorization签名头,不能仅靠API Key裸传。
方法一:使用官方推荐的HMAC-SHA256签名算法
第一步:拼接待签名字符串。格式为GET\n\napplication/json\n${timestamp}\n/(注意换行符是\n,不是\r\n;时间戳为毫秒级Unix时间,精确到秒即可)。
第二步:用Secret Access Key对上述字符串做HMAC-SHA256哈希,再Base64编码。
第三步:组合Authorization头值:HMAC-SHA256 Credential=${AccessKeyID}/${timestamp}/cn-north-1/ark/Request, SignedHeaders=host;date, Signature=${base64签名结果}。
注意:host必须小写,date字段必须与timestamp一致且格式为RFC3339(如2024-06-15T12:34:56+08:00),否则403拒绝。
发送文本生成请求
调用豆包API的/v1/chat/completions接口,POST请求体必须包含model、messages字段:
const response = await axios.post('https://ark.cn-north-1.volces.com/api/v1/chat/completions', {
model: 'doubao-pro-32k',
messages: [{ role: 'user', content: '你好,请用中文简单介绍你自己' }],
temperature: 0.7
}, {
headers: {
'Content-Type': 'application/json',
'Authorization': authHeader,
'Date': dateHeader,
'Host': 'ark.cn-north-1.volces.com'
}
});
成功响应体中,response.data.choices[0].message.content即为模型返回的文本内容。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!







