AceDataCloud 类型脚本 SDK
官方类型脚本/ Node.js 客户端 AceDataCloud API 密码。 。 。 .
要求节点.js 18+(使用本地 fetch) (中文(简体) ).
获取您的 Ace 数据云 API 密钥
- 打开 Ace 数据云 — 应用中,或先注册账户.
- 查找 一般应用中选择 初始化一般应用程序。普通密钥可以使用您账户可用的服务;专用应用程序的密钥仅限于其服务。 检查所需的服务/模式访问和 当前定价。 。 。 .
- 复制 API 密钥 从申请卡,或打开 密钥/ 管理密钥 – 创建 为这种整合创建一个单独的密钥。 给它一个可识别的名称,这样你就可以独立地撤销或旋转.
- 在创建密钥时, 检查 过期时间, (中文(简体) ), 设置使用限制,以及 允许的 API,然后单击 创建 并复制密钥列表中的令牌。 任务搜索不允许提交一个世代 。 确认申请的余额可以满足您的第一个请求;任何审判津贴都是您账户目前显示的.
- 仅复制符号值,没有引号、空格或
Bearer。一个 API 密钥/ API Token 字段期望此原始值; 只有手动配置的 HTTPAuthorization标题需要Bearer前缀。 A 类platform-...账户管理符不能替换一代 API 密钥.


在客户端的证书存储或下面显示的环境变量中保存密钥. 永远不要把它放在一个迅速,共享的工作流程,截图,或者Git承诺. 如果认证失败, 请在创建另一个密钥前检查全部复制的值、 应用程序/ 服务访问、 过期、 使用限制和平衡 .
对 API 请求使用此应用程序密钥 。 SDK账户管理方法需要在其管理文件中描述的单独证书;不与API密钥相交换. 下面的可选x402支付流量是支付支持请求的单独方式.
安装
npm install @acedatacloud/sdk
快速启动
import { AceDataCloud } from '@acedatacloud/sdk';
const client = new AceDataCloud({ apiToken: 'your-token' });
// OpenAI-compatible chat completions
const response = await client.openai.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(response.choices[0].message.content);
流线
const stream = await client.openai.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Tell me a story' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices?.[0]?.delta?.content ?? '');
}
资源
| 资源 | 说明 |
|---|---|
client.openai | OpenAI 兼容聊天完成和回复 |
client.chat | 本地聊天信息 |
client.images | 图像生成(花花,种子梦,纳米香蕉等) |
client.audio | 音乐生成 (Suno) |
client.video | 视频生成(Luma、Sora、Veo等) |
client.search | 网络搜索( Google SERP) |
client.face | 面部分析与变相( 擦拭、 美化、 年龄、 漫画) |
client.shorturl | 简短的 URL 创建 |
client.tasks | 跨服务任务投票 |
client.files | 文件上传 |
client.platform | 申请、全权证书、模型管理 |
聊天和计费
通过聊天补全、回复和信件接受模式请求
按选定模型的输入、输出和缓存用途计费,而不是固定收费
每个请求。 将协议格式切换为每笔帐单
或保证模型接受该格式。 咨询当前模型价格和
usage.cost (c) SDK保留报告的用途,而不重新计算.
- 聊天补全
prompt_tokens包括已报告的缓存符. - 回应
input_tokens包括已报告的缓存符. - 信件
input_tokens不包括单独报告cache_read_input_tokens财务报告和审定财务报表cache_creation_input_tokens这些维度是分开的.
不为 Chat 补全再次在输入总量中添加缓存的符号或 回复,或将信件输入单独作为全部输入/缓存使用.
公共聊天补全模式
把这些公共身份证发给 client.openai.chat.completions.create({ model, messages })· ;
使用情况 stream: true 为了流出。 SDK通过模型特定字段
无需重写模式标识或执行目录.
gpt-6.1-terra: 支持文本/图像输入、流出、函数工具,以及 结构化输出。 使用reasoning_effort: 'low'初始; 支持的级别为low, (中文(简体) ),medium, (中文(简体) ),high, (中文(简体) ),xhigh,以及max没有none或者说minimal. 反应用途reasoning: { effort: 'low' }换句话说 超过 272,000 个令牌的输入使用长文 定价;参考当前价格和报告使用情况.claude-opus-5-5: 支持文本并用n: 1。 。 。 . 奥米temperature财务报告和审定财务报表top_p; 不要将温度设置在下方 1或非默认上-p. 使用tool_choice: 'auto',而不是强制工具。 为本地人 思维块、签名和本地工具语义,使用client.chat.messages。 。 。 .gemini-4-argon: 支持文本并流出聊天补全. 思考会 消耗产出预算; Google 至少推荐max_tokens: 32768普通项目 任务。 这不会暴露出“互动”背景长期输出功能.kimi-k3.1-pro: 总是理由;通过reasoning_effort: 'low', (中文(简体) ),'high',或'max'。 。 。 . 不要禁用推理 。 保留完整的助理消息,包括reasoning_content财务报告和审定财务报表tool_calls,在多转和工具调用的历史. 现有kimi-k3别名仍然可用; 使用reasoning_effort: 'max'对于它.
请在通话前检查往来账户的存取和价格 。 模特儿的广告 上下文大小并不能保证平台的每个请求限制.
原始 Claude 信件
对结构化输出, 通过
output_config: { format: { type: 'json_schema', schema: yourSchema } } 改为
client.chat.messages.create(...)从信件读取生成的 JSON content
文本块; 这不会改变响应信封或增加 maxTokens。 。 。 .
思维和输出配置在没有SDK模型特定的情况下通过
enum或组合检查。 选定的模型决定它接受的值 .
对于β display: 'updates' 模式,将所需的信头设置在一个专用
客户端( 客户头适用于每个请求):
const claude = new AceDataCloud({
apiToken: 'your-token',
headers: { 'anthropic-beta': 'thinking-display-updates-2026-08-18' },
});
const response = await claude.chat.messages.create({
model: 'claude-sonnet-5-5',
messages: [{ role: 'user', content: 'Explain this code.' }],
thinking: { type: 'adaptive', display: 'updates' },
output_config: { effort: 'high' },
});
流动和 claude.chat.messages.countTokens(...) 也保持思维
配置 。 参数通过不保证模型支持; API 错误
通过 SDK 的正常错误处理返回.
OpenAI 嵌入
const embeddings = await client.openai.embeddings.create({
model: 'text-embedding-3-small',
input: 'The food was delicious and the waiter...',
});
支持的模型是 text-embedding-3-small 财务报告和审定财务报表 text-embedding-3-large。 。 。 .
text-embedding-ada-002 已无法使用。 当迁移一个现有的指数时,
重新生成其向量并重建索引;不混合新旧模式向量.
图像生成( 带有任务投票)
// Default provider (nano-banana)
const task = await client.images.generate({ prompt: 'A sunset over mountains' });
const result = await task.wait();
console.log(result.image_url);
// Use a specific provider
const fluxTask = await client.images.generate({
prompt: 'A sunset over mountains',
provider: 'flux',
});
纳米香蕉2.1
选择 model: 'nano-banana-2.1' 用于生成或编辑
1K, 2K, 或4K, (中文(简体) ). 选择 model 仍在使用 nano-banana;没有
nano-banana-2.1:official 变种.
const task = await client.nanobanana.generate({
action: 'generate',
model: 'nano-banana-2.1',
prompt: 'A blue ceramic vase on a cream background',
resolution: '2K',
aspectRatio: '1:1',
});
await task.wait();
const imageUrls = task.urls();
const editTask = await client.nanobanana.generate({
action: 'edit',
model: 'nano-banana-2.1',
prompt: 'Change the vase to green; preserve the background',
imageUrls,
resolution: '4K',
});
await editTask.wait();
公共型号ID也与 client.openai.images.generate(...) 财务报告和审定财务报表
client.openai.images.edit(...); 使用 OpenAI 兼容字段
(单位:千美元)image 用于编辑)和返回回复对象,而不是任务处理.
GPT 图像 2.5 / 2.6 质量
client.openai.images.generate(...) 财务报告和审定财务报表 .edit(...) 通过 quality 结束
不变。 常规 图像模型接受 auto, (中文(简体) ), low, (中文(简体) ), medium,以及 high· ;
2.5和2.6 平板/起爆模型(包括 :reverse 财务报告和审定财务报表 :official
备选案文) xhigh 财务报告和审定财务报表 max。 。 。 .
对于这两种方法, :reverse 是相应的明确别名
无后缀的Flare/Sunburst模型. 传递完整的型号ID 不变,例如
gpt-image-2.6-flare 或者说 gpt-image-2.6-sunburst:reverse; 不使用
不完整 gpt-image-2.6。SDK不选择后退.
服务器可能使用 GPT 图像 2.5 2.0 / 2.5自动回收过程中的火焰
反向模型,同时保留请求的模型和每成功图像
计费; 2.6 不配置跨模型替换.
gpt-image-2,以及它们的 :reverse 别名有底价
联 合 国 每个成功图像的功劳2.6 火焰/太阳爆发模型及其
:reverse 别名的基价为: 0.22 每个成功图像的功劳。 。 。 .
官方渠道的请求按实际象征性用途记帐,而不是按每笔固定收费
图像; 2.6 使用与 2.5 相同的官方率. 检查活期账户定价和
最后费用使用记录.
2.6模型都使用现有的光栅参数: outputFormat 实值 png, (中文(简体) ),
jpeg,或 webp (GPT 图像 2.6 加GIF; SVG 不支持),以及 size 实值 auto 或者说 WIDTHxHEIGHT。 。 。 .
明确维度必须是16倍数,最多最长的一面
3840, 655,360–8,294,400总像素,外观比最多为3:1.
通过 SDK 的 JSON 接口编辑图像 URL; 后端多部分
文件上传支持不会被这些助手所曝光.
大师录像制作
使用提供者客户端请求使用一种语言完成的视频 :
const task = await client.maestro.generate({
prompt: 'Explain vector databases to beginners in 20 seconds',
langs: ['en'],
aspect: '9:16',
duration: 20,
scenario: 'narrated',
});
const result = await task.wait();
langs 默认为 ['zh-cn'] 并且必须包含完全一种语言; 创建
用于其他语言的单独任务。 完成的结果包含一个视频
response.data.variants修改视频,使用 action: 'remix', (中文(简体) ), 'edit',或
'extend' 与 refTaskId: task.id。 。 。 .
没有质量等级:所有视频都使用 1080p/30fps 和目标持续时间
5 -300秒 5 -300秒 5 -300 seconds. 成功任务成本 0.7 每次实际交付的信贷, (中文(简体) ),
以整数计费的秒封在请求的持续时间(返回到
如果无法读取,则该期限)。 所有情景、行动和语言都有
相同的比率; 失败的任务和 /maestro/tasks 投票是免费的.
style 接受自由形式视觉提示以及命名预设. voice 接受
已命名的语音预设或32个特征的十六进制语音 reference_id;通过不变.
生产者具体行动投入
await client.producer.generate({ action: 'generate', prompt: 'A jazz song' })
使用启发模式( e)custom: false (默认情况下). 对于定制相声,设置
custom: true 和提供 lyric; 用于自定义工具音乐, 设定
custom: true, instrumental: true 没有发明歌词 或一个提示.
需要扩展 audioId,正数 continueAt (分数,包括分数),
财务报告和审定财务报表 lyric 除非有帮助。 封面、变异、替换、,
相声/仪器交换,并需要源头 audioId。 。 。 . lyric 财务报告和审定财务报表 prompt
不再需要每个动作; 世代仍然返回任务手柄.
WebExtrator 导航和缓存
client.webextrator.extract(...) 财务报告和审定财务报表 .render(...) 接受 cookies, (中文(简体) ),
bypassCache,以及 cacheTtlSeconds,映射到 API 的蛇 case 缓存字段.
每块饼干都要求 name, (中文(简体) ), value,以及 domain; 可选字段为 path, (中文(简体) ),
expires (Unix seconds), (Unix seconds), (英语), httpOnly, (中文(简体) ), secure,以及 sameSite (单位:千美元)Strict, (中文(简体) ), Lax, (中文(简体) ),
或者说 None) (中文(简体) ). 保持 cookie 值远离日志和 Git .
服务器默认 waitUntil 改为 load导航 timeout 至30秒钟,
和缓存 TTL 到3600秒. timeout 必须是正整数; delay 财务报告和审定财务报表
cacheTtlSeconds 必须是非负整数. bypassCache: true 跳过缓存
读取但仍可缓存新结果; cacheTtlSeconds: 0 禁用缓存
结果。 禁用选项仍为省略.
Kling 参考视频计费
过 videoList: [{ videoUrl: referenceUrl, referType: 'feature' }]
改为 client.kling.generate 与 model: 'kling-o1' 或者说 'kling-v3-omni'。 。 。 .
参考影片使用单独的计费级: 1.202 信贷/第二笔 内 std
模式和模式 1.602 信贷/第二笔 内 pro 模式。 对于5秒O1结果,
std 编号 : pro 费用 4.005 / 5.340 贷方 没有参考视频,或
6.010 / 8.010 信贷 一个.
referType: 'base' (默认)编辑可能跟随参考视频的长度;
计费使用以四舍五入为最接近的整数秒的实际输出时间.
referType: 'feature' 使用请求 duration读取
response.usage.reference_video_seconds 最后计费秒;
请求时间估计数可能与最终收费不同。 这是回应
使用,而不是请求参数。 仅图像参考和第一/最后一帧
没有触发参考视频计费。 不要合并 videoList 与
generateAudio: true。 。 。 .
Suno 音乐处理
对于一个私人的声音 由 client.suno.voices(...),上传原件
歌曲为 await client.suno.upload({ audioUrl: sourceUrl, personaId })。 。 。 .
此字段仅用于标准上传( 默认) , 而非
mode: 'enhanced'。上传成功后,使用返回的 data.audio_id 作为
audioId 和同样的 personaId 内
await client.suno.generate({ action: 'upload_cover', audioId, personaId })。 。 。 .
不使用此语音关联, 不要重复上传的歌曲 ID 。 有声创作,
上传,封面必须使用相同的服务通道. vocalGender 没有
需要且不能替换 personaId。 。 。 .
在封面或扩展之前,可选择调用
await client.suno.availability({ audioId })用这首歌 audio_id 从a
已完成的任务,而不是 task_id。这是一个同步的 API 调试认证
检查, 目前不收取信用费; 它返回响应对象
直接,不是一个任务处理 投票. result.data.available 仅是 true 打开
成功:这是当前频道上的积极证据,不能保证
接下来的操作将会成功。 未确定检查返回错误,
包括 503 availability_unknown; 决不将错误转换为 false。 。 。 .
保存出错代码并跟踪ID.
使用 client.suno.generate({ custom: true, lyric, style, negativeTags }) 页:1
定制音乐. negativeTags 描述要排除的样式或流派; 有
目前没有固定字符限制,但过长的输入可能仍然失败,
所以,保持简洁。 SDK送来的 negative_tags 没有截断.
可下载音频文件不能保证其 audio_id 仍然可用
用于被子,扩展或干线分离. 如果处理返回
suno_processing_unavailable,保留原件 task_id (任务处理器)
id当可用时)和错误的 traceId 请求支持。 相关代码
suno_model_unavailable 财务报告和审定财务报表 suno_processing_failed 表示选中的模型是
无法进行操作或处理时,没有回音.
苏诺也可以回来 api_error 带消息
the account may have been offline; 这是服务器错误, 不是 SDK
认证错误 .
这些 HTTP 500 错误保留其 code, (中文(简体) ), traceId 财务报告和审定财务报表 body 打开 APIError。 。 。 .
获取现有任务,而不是仅仅提交替换生成
检查结果.
鱼声模型
client.fish.model({ title, voices: audioUrl }) 从一个
单个可公开下载的音频 URL 字符串, 而不是数组或多部分
上传. 偏好直接 URL 结束于 .mp3 或者说 .wav成功创建
直接返回模型对象(HTTP 201) _id 可用于
referenceId 内 client.fish.generate。 。 。 .
创建的声音被公开长期存储,可能被搜索和使用
其他用户。 奥米 visibility: 通过 private 或者说 unlist 没有使
声入人心 对于临时引用音频而不创建保存的模型,
使用情况 client.fish.generate({ text, references: [{ audio: audioUrl, text: transcript }] })。 。 。 .
client.audio.listFishModels({ selfOnly: true, pageSize: 20, pageNumber: 1 })
列出由调用账户创建和保存的语音,
包括以其其他 API 符号创建的声音。 仅过滤列表;
它并不限制公众使用。 结果按反向生成顺序分解;
sortBy 支持 created_at 财务报告和审定财务报表 task_count,以及 authorId 可进一步过滤
他们。 不要合并 selfOnly: true 与 titleLanguage; 过滤器用于
公共图书馆。 答复载有 total, (中文(简体) ), items,以及 has_more· ;
has_more 用于自我查询的布尔值,并且可能是 null 用于公共图书馆查询.
文件上传
client.files.upload(fileBytes, { filename: 'photo.jpg' }) 使用该
管理-平面账户符号,而不是一代 API 密钥。 使用单独的客户端
用那个符号配置的 上传返回 file_url 财务报告和审定财务报表 mime; 使用返回的
URL 而不是构建一个 。 平台指定一个 uploads/<uuid> 路径
并保存安全的文件名扩展名。 提供匹配实际的文件名
内容: 文件名的 MIME 推论不会转换文件 。 默认
单文件限制为100 MB.
多服务支持
图像、视频和音频资源支持a provider 在服务间切换的参数 :
// Video — default is 'sora'
await client.video.generate({ prompt: 'A cat playing piano', provider: 'kling' });
await client.video.generate({ prompt: 'Ocean waves', provider: 'luma' });
// Audio — default is 'suno'
await client.audio.generate({ prompt: 'A jazz song', provider: 'producer' });
可用的提供者 :
| 资源 | 供应商 |
|---|---|
client.images | nano-banana (违约), flux, (中文(简体) ), seedream |
client.video | sora (违约), luma, (中文(简体) ), veo, (中文(简体) ), kling, (中文(简体) ), hailuo, (中文(简体) ), seedance, (中文(简体) ), wan, (中文(简体) ), pika, (中文(简体) ), pixverse |
client.audio | suno (违约), producer, (中文(简体) ), fish |
处理错误
import { AceDataCloud, AuthenticationError, RateLimitError } from '@acedatacloud/sdk';
const client = new AceDataCloud({ apiToken: 'your-token' });
try {
await client.search.google({ query: 'test' });
} catch (err) {
if (err instanceof AuthenticationError) {
console.error('Invalid or expired token');
} else if (err instanceof RateLimitError) {
console.error('Too many requests');
}
}
配置
const client = new AceDataCloud({
apiToken: 'your-token',
baseURL: 'https://x402.acedata.cloud',
platformBaseURL: 'https://platform.acedata.cloud',
timeout: 300000, // ms
maxRetries: 2,
});
也可以通过 ACEDATACLOUD_API_TOKEN 环境变量.
await client.platform.config.get() 返回时 features 财务报告和审定财务报表 region。 。 。 . region
是从请求IP中检测到的小写国家/区域代码,或 null
当未知。 终点不接受任何国家/地区推翻。 保留任何
用户在您自己的应用程序中选择的显示区域; 不更改
服务器侧可用性或安全政策。 特性密钥可能改变; 使用
缺少密钥的安全默认值, 不在用户之间共享缓存配置 .
使用 X402 而不是一个 Bearer Token 支付
SDK 支持可插件 paymentHandler 当
API 返回 402 Payment Required组合起来
@acedatacloud/x402-client
(Base、Solana、SKALE)而不是使用
借记符 :
npm install @acedatacloud/sdk @acedatacloud/x402-client
import { AceDataCloud } from '@acedatacloud/sdk';
import { createX402PaymentHandler } from '@acedatacloud/x402-client';
const client = new AceDataCloud({
// No apiToken needed — the x402 handler pays per request.
paymentHandler: createX402PaymentHandler({
network: 'base', // or 'solana' | 'skale'
evmProvider: window.ethereum,
evmAddress: '0xYourAddress...',
}),
});
const result = await client.openai.chat.completions.create({
model: 'gpt-4o-mini',
messages: [{ role: 'user', content: 'Say hi in 3 words' }],
max_tokens: 10,
});
在每次API通话中,SDK首先发送请求未经认证. 若为
服务器的回复 402SDK通过 accepts 列表为
处理器,用于标记并返回一个 X-Payment 头曰. SDK这个
用那个信头重复请求一次。 其他一切——任务
投票、流线、重试、误差绘图——继续准确工作
一样.
如果你想要一个,你还可以在操作员旁边通过一个"熊"符号
混合模式(一些端点通过订阅,另一些通过x402)-
SDK只在操作器实际看到时才引用 402。 。 。 .
同伴 TypeScript/ Python 签名人也支持Arbitrum One
(单位:千美元)network: 'arbitrum' 或者说 'eip155:42161'用于 exact 使用当地USDC支付的款项
(小数点后6分),未连接USDC. 每个网络都推出可用性:
当服务器当前时选择参数 accepts 提供它。 一个配置
签名器无法启用服务器上的网络 。 使用返回的付款
金额; SDK 转发
accepts 处理器不变。 钱包必须支持和持有资金
目标链.
许可证
麻省理工学院
GPT 图像 2.6 本地 GIF
GIF 生成和编辑可用以 gpt-image-2.6-flare页:1 :reverse编号 ::official 变体,以及所有 gpt-image-2.6-sunburst 变相. 使用 output_format="gif" 在蟒蛇中, outputFormat: "gif" 类型脚本,或 OutputFormat: "gif" 框控件为 frame_count编号 :frame_duration_ms (毕通), frameCount编号 :frameDurationMs (编),并 FrameCount编号 :FrameDurationMS (前进).
GIF默认为512x512预览,每帧9帧和200ms;实际尺寸可能由模型来调整. 静态 4K 预设( S)3840x2160, (中文(简体) ), 2160x3840)继续支持PNG/JPEG/WebP生成并编辑所有2.6个变体. 全球投资框架有单独的大小/框架限制.
GPT 图像 2.6 支持 complexity="low"|"medium"|"high" (输入:模型默认高). 接受静态编辑 markup: a PNG 有透明的像素,匹配方向后的第一个参考,每个图像最高可达16,777,216像素,注释为40MB. JSON 接受 HTTPS URL, PNG 数据 URL 或只包含对象 image_url;多部分接受注释文件。 不将标记与口罩、 GIF 或 power rewriter 合并 。 GIF帧数为2–16;帧持续时间为20–655350ms,四舍五入为10ms. GIF拒绝口罩,自定义压缩和部分流线. 定价不变.