SFX v3 API 指南:认证、请求与音频结果

区分 ElevenLabs 官方音效 API 与本站目录驱动的任务式 API,了解认证、报价、参数、任务查询、音频下载和错误处理。

最近更新: 2026-11-09

先选择要使用的 API

存在两条不同路径:ElevenLabs 提供官方 SFX v3 接口,本站则有自己的模型目录、用户密钥、积分与异步任务。两者的密钥、模型标识、请求字段和响应格式不能互换。

通过本站接入时,从当前音频目录选择适合任务的模型,并使用目录返回的标识与参数。下方平台示例介绍本站接口约定;直接接入 ElevenLabs 则使用其独立账号。

路径 A:直接调用 ElevenLabs

将 ElevenLabs 密钥通过服务端环境变量 ELEVENLABS_API_KEY 提供。下列请求使用官方模型 ID,并将成功返回的音频保存到文件:

curl --fail --silent --show-error \
  --request POST \
  'https://api.elevenlabs.io/v1/sound-generation?output_format=mp3_44100_128' \
  --header "xi-api-key: ${ELEVENLABS_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
    "text": "A small wooden drawer closes once with a soft tap.",
    "model_id": "eleven_text_to_sound_v3",
    "duration_seconds": 4,
    "prompt_influence": 0.3
  }' \
  --output sfx-v3.mp3

使用文件前检查命令退出状态,不要把失败响应当成可播放音频。

官方接口文档定义 text、model_id、duration_seconds、prompt_influence 和查询参数 output_format。指定时长范围为 0.5–30 秒,提示词影响程度范围为 0–1;部分格式权限取决于 ElevenLabs 方案。这些是直接接口规则,不代表本站提供完全相同的控件。

当前模型文档列出 SFX v3 可通过 loop: true 请求循环。使用前核对当前约定,并试听接点。上游信息核查日期:2026 年 11 月 9 日。

路径 B:先查看本站模型目录

将 SFX_BASE_URL 设置为你的部署源站,例如 https://your-site.example。公开目录可以作为只读起点:

curl --fail --silent --show-error \
  "${SFX_BASE_URL}/api/ai/router01/models?type=audio"

先判断 JSON code。成功时,data 包含 slug、name、type、params 和目录报价信息。使用返回的模型 slug 与字段定义,不要假设它等于 ElevenLabs 模型 ID。

也可以在音频工作台中选择模型、填写提示词并查看参数和积分预估。音乐、语音与音效模型的用途不同,请根据任务选择。

本站生成与任务请求如何认证

登录后,在设置 → API 密钥创建用户密钥,通过服务端环境变量 SFX_API_KEY 提供。生成和任务查询使用 Authorization: Bearer …,ElevenLabs 密钥不能认证本站请求。

两项服务的密钥均不要放进浏览器代码或公开仓库。用户 API 密钥与管理凭证不同;显式提供无效密钥时,本站不会回退到浏览器登录态。

准备受支持输入并获取报价

从目录中选择适合任务的模型,将下面占位符替换为其 slug,并将 JSON 保存为 request.json:

{
  "mediaType": "music",
  "model": "REPLACE_WITH_AVAILABLE_SFX_SLUG",
  "prompt": "A small wooden drawer closes once with a soft tap.",
  "options": {
    "params": {}
  }
}

本站当前生成约定使用 mediaType: "music" 表示音频请求,包括兼容音效模型;公开目录的分类则是 audio。当前生成解析器不接受 mediaType: "audio"。

提示词使用顶层 prompt。模型专属选项放在 options.params 中,字段名、类型和值必须与所选模型声明一致。不要直接复制官方 API 字段。本站不使用顶层 duration_seconds,且音频请求的 options.duration 会被移除;受支持的时长字段需要通过模型声明的动态参数传入。

用同一个请求体获取报价:

curl --fail --silent --show-error \
  --request POST \
  "${SFX_BASE_URL}/api/ai/router01/quote" \
  --header 'Content-Type: application/json' \
  --data-binary @request.json

报价成功时查看 data.credits。报价本身不创建生成;提交前应让使用者确认消耗。生成服务端会重新计算价格,不信任客户端传来的金额。

提交本站生成任务

下面请求会创建任务,并可能消耗账号积分:

curl --fail --silent --show-error \
  --request POST \
  "${SFX_BASE_URL}/api/ai/generate" \
  --header "Authorization: Bearer ${SFX_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data-binary @request.json

成功 JSON 包含 data.id、data.taskId、data.taskStatus、data.costCredits 和 data.remainingBalance。保存本站 data.id,用于持续查询同一个任务。初始状态为 queued,响应并非音频,不要将其保存成 MP3。

本文没有提供生成幂等键。如果 POST 超时,先查看已有任务或作品,再决定是否重提。重复提交可能创建另一个单独计费的任务。

查询任务并取得结果

将 SFX_TASK_ID 设置为成功提交后返回的本站任务 ID:

curl --fail --silent --show-error \
  "${SFX_BASE_URL}/api/ai/task?taskId=${SFX_TASK_ID}" \
  --header "Authorization: Bearer ${SFX_API_KEY}"

data.taskStatus 为 queued、pending、processing 时,采用有上限、逐步增加间隔的等待,继续查询同一 ID;遇到 success、failed、canceled 后停止。

成功音频任务的标准化响应在 data.taskInfo.songs[].audioUrl 中提供音频地址。songs 是本站现有音频容器名称,不代表内容必须是音乐。再单独下载返回文件,并检查实际格式。失败或取消时,查看 data.taskInfo.userErrorCode,不要假设一定存在输出地址。

错误与预算处理

本站使用 JSON 包装响应:code: 0 表示成功,code: -1 表示带 message 的应用错误。即使 HTTP 为 200 也要判断此字段;HTTP 请求失败同样需要处理。

模型或参数不支持时应修正输入,而不是盲目重试;认证失败应核对账号、密钥与域名;服务繁忙则增加等待,避免紧密重提。成功但不采用的输出,与失败任务不同,详见价格、条款和故障排查。

延伸阅读与支持

创作输入可参考提示词指南、游戏流程和视频流程。发布素材前阅读商用说明。

已经审核的一组官方请求可配合 Python 批量教程与下载文件。需要把脚本整理为有限计划并加入试听步骤时,参考 AI 音效工作流;切换版本前阅读 v3 与 v2 对比指南。

本站问题可提交支持工单,或联系 support@sfxv3.com,附接口、大致请求时间、任务 ID 和去除敏感信息的错误。不要附密钥或认证请求头。直接调用 ElevenLabs 则使用其支持与协议。