curl --request POST 'https://api.voicecheap.ai/v1/actions/translations_dub' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"projectId":"project_launch_2026","targetLanguage":"english","voiceMode":"cloning","keepBackgroundMusic":true,"requestId":"41321bda-e243-4b6f-96a4-622cd047c991","translatedSrt":"1\n00:00:00,000 --> 00:00:02,000\nWelcome to the product launch.\n","subtitles":true,"subtitlesSource":"translated"}'
const input = {
projectId: 'project_launch_2026',
targetLanguage: 'english',
voiceMode: 'cloning',
keepBackgroundMusic: true,
requestId: '41321bda-e243-4b6f-96a4-622cd047c991',
translatedSrt: '1\n00:00:00,000 --> 00:00:02,000\nWelcome to the product launch.\n',
subtitles: true,
subtitlesSource: 'translated',
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/translations_dub', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/translations_dub",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"projectId": "project_launch_2026", "targetLanguage": "english", "voiceMode": "cloning", "keepBackgroundMusic": True, "requestId": "41321bda-e243-4b6f-96a4-622cd047c991", "translatedSrt": "1\n00:00:00,000 --> 00:00:02,000\nWelcome to the product launch.\n", "subtitles": True, "subtitlesSource": "translated"},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"success": true,
"message": "Dubbing started successfully from the provided translation. Use the status endpoint to track progress.",
"projectId": "project_launch_2026",
"estimatedDuration": 10,
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24"
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "translations_dub",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "running",
"pollAfterSeconds": 5
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "translations_dub",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "completed",
"resultStored": false,
"message": "The action completed. Retrieve its output from the corresponding history or resource action."
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
翻译和配音
为提供的翻译配音
在现有的已转写项目中,为目标语言 SRT 生成语音。语音和可选的口型同步消耗常规媒体额度。请轮询 projects_status。
POST
/
v1
/
actions
/
translations_dub
curl --request POST 'https://api.voicecheap.ai/v1/actions/translations_dub' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"projectId":"project_launch_2026","targetLanguage":"english","voiceMode":"cloning","keepBackgroundMusic":true,"requestId":"41321bda-e243-4b6f-96a4-622cd047c991","translatedSrt":"1\n00:00:00,000 --> 00:00:02,000\nWelcome to the product launch.\n","subtitles":true,"subtitlesSource":"translated"}'
const input = {
projectId: 'project_launch_2026',
targetLanguage: 'english',
voiceMode: 'cloning',
keepBackgroundMusic: true,
requestId: '41321bda-e243-4b6f-96a4-622cd047c991',
translatedSrt: '1\n00:00:00,000 --> 00:00:02,000\nWelcome to the product launch.\n',
subtitles: true,
subtitlesSource: 'translated',
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/translations_dub', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/translations_dub",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"projectId": "project_launch_2026", "targetLanguage": "english", "voiceMode": "cloning", "keepBackgroundMusic": True, "requestId": "41321bda-e243-4b6f-96a4-622cd047c991", "translatedSrt": "1\n00:00:00,000 --> 00:00:02,000\nWelcome to the product launch.\n", "subtitles": True, "subtitlesSource": "translated"},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"success": true,
"message": "Dubbing started successfully from the provided translation. Use the status endpoint to track progress.",
"projectId": "project_launch_2026",
"estimatedDuration": 10,
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24"
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "translations_dub",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "running",
"pollAfterSeconds": 5
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "translations_dub",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "completed",
"resultStored": false,
"message": "The action completed. Retrieve its output from the corresponding history or resource action."
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
在现有的已转写项目中,为目标语言 SRT 生成语音。语音和可选的口型同步消耗常规媒体额度。请轮询 projects_status。
所需权限:
POST https://api.voicecheap.ai/v1/actions/translations_dub
身份验证和权限
string
必填
在此请求头中发送 VoiceCheap API 密钥。也支持通过 Authorization: Bearer 发送同一 API 密钥。OAuth 访问令牌仅适用于 MCP,此 REST 端点不接受 OAuth
访问令牌。
translations:write.
需要有效的付费订阅。权限不会改变团队角色、资源归属、媒体额度或套餐限制。
参数
string
必填
文本值。最小长度: 1. 最大长度: 200. 匹配模式:
^[^/\\]+$.boolean
布尔值。
boolean
布尔值。
number
数值。最小值: 1. 最大值: 70.
string
文本值。允许的值: “cloning”, “custom”.
string
文本值。最小长度: 1. 最大长度: 128.
boolean
布尔值。
string
文本值。允许的值: “translated”, “original”.
string
文本值。允许的值: “studio”, “realistic”.
string
文本值。允许的值: “standard”, “pro”, “studio”.
boolean
布尔值。
object
JSON 对象。嵌套字段请参阅完整输入架构。
array
值列表。项目结构请参阅完整输入架构。最多项目数: 100.
string
必填
文本值。允许的值: “afrikaans”, “albanian”, “amharic”, “arabic”, “armenian”, “assamese”, “azerbaijani”, “basque”, “belarusian”, “bengali”, “bosnian”, “bulgarian”, “catalan”, “croatian”, “czech”, “danish”, “dutch”, “english”, “british english”, “estonian”, “finnish”, “french”, “french canadian”, “galician”, “german”, “greek”, “gujarati”, “hebrew”, “hindi”, “hungarian”, “icelandic”, “indonesian”, “irish”, “italian”, “japanese”, “kannada”, “kazakh”, “khmer”, “korean”, “lao”, “latvian”, “lithuanian”, “macedonian”, “malay”, “malayalam”, “mandarin”, “marathi”, “mongolian”, “nepali”, “norwegian”, “persian”, “polish”, “portuguese”, “brazilian portuguese”, “pt_brazil”, “punjabi”, “romanian”, “russian”, “serbian”, “slovak”, “slovenian”, “spanish”, “swahili”, “swedish”, “tagalog”, “tamil”, “telugu”, “thai”, “turkish”, “ukrainian”, “urdu”, “vietnamese”, “welsh”, “yoruba”, “zulu”.
string
必填
文本值。最小长度: 1. 最大长度: 1000000.
string
在传输层可选:如果省略,服务器会在验证前注入标识符。请自行提供稳定的 UUID v4,以便在响应丢失后安全恢复。格式: “uuid”. 匹配模式:
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$.完整输入架构
完整输入架构
以下 JSON Schema 保留了发现接口公开的确切字段名、嵌套类型、默认值、范围和可接受值。其他跨字段规则列于操作说明中。
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[^/\\\\]+$"
},
"keepBackgroundMusic": {
"type": "boolean"
},
"keepOriginalVoice": {
"type": "boolean"
},
"originalVoiceVolume": {
"type": "number",
"minimum": 1,
"maximum": 70
},
"voiceMode": {
"type": "string",
"enum": ["cloning", "custom"]
},
"voiceId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"subtitles": {
"type": "boolean"
},
"subtitlesSource": {
"type": "string",
"enum": ["translated", "original"]
},
"voiceIsolatorOption": {
"type": "string",
"enum": ["studio", "realistic"]
},
"lipSyncMode": {
"type": "string",
"enum": ["standard", "pro", "studio"]
},
"activeSpeakerDetectionEnabled": {
"type": "boolean"
},
"voiceCloningSettings": {
"type": "object",
"properties": {
"stability": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"similarity": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": ["stability", "similarity"],
"additionalProperties": false
},
"translationTimeSkips": {
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"startTime": {
"type": "number",
"minimum": 0
},
"endTime": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": ["startTime", "endTime"],
"additionalProperties": false
}
},
"targetLanguage": {
"type": "string",
"enum": [
"afrikaans",
"albanian",
"amharic",
"arabic",
"armenian",
"assamese",
"azerbaijani",
"basque",
"belarusian",
"bengali",
"bosnian",
"bulgarian",
"catalan",
"croatian",
"czech",
"danish",
"dutch",
"english",
"british english",
"estonian",
"finnish",
"french",
"french canadian",
"galician",
"german",
"greek",
"gujarati",
"hebrew",
"hindi",
"hungarian",
"icelandic",
"indonesian",
"irish",
"italian",
"japanese",
"kannada",
"kazakh",
"khmer",
"korean",
"lao",
"latvian",
"lithuanian",
"macedonian",
"malay",
"malayalam",
"mandarin",
"marathi",
"mongolian",
"nepali",
"norwegian",
"persian",
"polish",
"portuguese",
"brazilian portuguese",
"pt_brazil",
"punjabi",
"romanian",
"russian",
"serbian",
"slovak",
"slovenian",
"spanish",
"swahili",
"swedish",
"tagalog",
"tamil",
"telugu",
"thai",
"turkish",
"ukrainian",
"urdu",
"vietnamese",
"welsh",
"yoruba",
"zulu"
]
},
"translatedSrt": {
"type": "string",
"minLength": 1,
"maxLength": 1000000
},
"requestId": {
"type": "string",
"format": "uuid",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "UUID v4 for this action. Reuse the same ID with identical arguments on retries."
}
},
"required": ["projectId", "targetLanguage", "translatedSrt"],
"additionalProperties": false
}
幂等性
为每次修改操作在 requestId 或 Idempotency-Key HTTP 请求头中提供 UUID v4。网络故障后,请使用相同标识符和完全相同的参数重试。如果同时提供这两个值,它们必须一致。重放已保存的请求不会重复执行操作,也不会再次扣除月度调用次数。失败或中断的请求不会自动重新执行。 对于每次修改操作,如果重试时发现同一请求仍在运行,即使首次执行通常为同步操作,也可能返回 HTTP 202。如果执行已完成但 resultStored 为 false,重试会返回 HTTP 200 和已保存的请求状态,而非原始结果。请通过对应领域的历史记录、结果或下载操作获取输出。请求示例
请将示例资源标识符和媒体键替换为账户返回的值。重试同一次修改操作时,请保持请求标识符不变。curl --request POST 'https://api.voicecheap.ai/v1/actions/translations_dub' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"projectId":"project_launch_2026","targetLanguage":"english","voiceMode":"cloning","keepBackgroundMusic":true,"requestId":"41321bda-e243-4b6f-96a4-622cd047c991","translatedSrt":"1\n00:00:00,000 --> 00:00:02,000\nWelcome to the product launch.\n","subtitles":true,"subtitlesSource":"translated"}'
const input = {
projectId: 'project_launch_2026',
targetLanguage: 'english',
voiceMode: 'cloning',
keepBackgroundMusic: true,
requestId: '41321bda-e243-4b6f-96a4-622cd047c991',
translatedSrt: '1\n00:00:00,000 --> 00:00:02,000\nWelcome to the product launch.\n',
subtitles: true,
subtitlesSource: 'translated',
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/translations_dub', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/translations_dub",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"projectId": "project_launch_2026", "targetLanguage": "english", "voiceMode": "cloning", "keepBackgroundMusic": True, "requestId": "41321bda-e243-4b6f-96a4-622cd047c991", "translatedSrt": "1\n00:00:00,000 --> 00:00:02,000\nWelcome to the product launch.\n", "subtitles": True, "subtitlesSource": "translated"},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
响应
首次执行成功时返回 HTTP 200,操作结果位于 data 下。重放请求时可能改为返回已保存的请求状态。示例展示了一种支持的响应,并未包含所有可选字段。 受理根据调用方提供的目标语言 SRT 生成语音后,返回项目和语言内容的标识符。{
"data": {
"success": true,
"message": "Dubbing started successfully from the provided translation. Use the status endpoint to track progress.",
"projectId": "project_launch_2026",
"estimatedDuration": 10,
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24"
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "translations_dub",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "running",
"pollAfterSeconds": 5
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "translations_dub",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "completed",
"resultStored": false,
"message": "The action completed. Retrieve its output from the corresponding history or resource action."
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
结果字段
| 字段 | 说明 |
|---|---|
data.success | 后台工作流已获准执行时为 true;这不表示媒体处理已完成。 |
data.message | 翻译或根据所提供译文进行配音的确认。 |
data.projectId | 父项目标识符。 |
data.estimatedDuration | 粗略处理时长估计,单位为分钟:ceil(source duration in seconds / 60) * 5。 |
data.workId | 现有或新创建的目标语言内容标识符。 |
恢复并轮询此请求
即使连接丢失,也应使用同一标识符。如果 resultStored 为 false,请通过相应的历史记录、结果或下载操作获取输出。切勿仅为查看进度而启动第二次生成。curl --request POST 'https://api.voicecheap.ai/v1/actions/action_request_get' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"requestId":"41321bda-e243-4b6f-96a4-622cd047c991","operation":"translations_dub"}'
HTTP 200
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "translations_dub",
"status": "completed",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"resultStored": true,
"result": {
"success": true,
"message": "Dubbing started successfully from the provided translation. Use the status endpoint to track progress.",
"projectId": "project_launch_2026",
"estimatedDuration": 10,
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24"
}
}
}
操作说明
- translatedSrt 为必填,且须包含有效的 SRT 字幕条目。此操作要求原始转写文本已完成。字幕条目根据开始时间与现有源片段匹配,容差为 0.05 秒;无法匹配时改用时间重叠最多的片段。输出时间始终使用原始片段时间轴。
- 复用或创建目标语言内容。直接为提供的文本配音,不自动翻译或执行 SmartSync。
- 不会重新上传源媒体。已存储的项目提供时长和音频/视频类型。
- 此操作不接受 sourceSrt、fileKey、媒体 URL 或 webhookUrl。
- voiceMode 默认为 cloning。使用 voiceMode custom 时,请选择目录中的音色或经过身份验证的账户保存的自定义音色,不要提供 voiceCloningSettings。团队计费不会授予访问其他成员已保存音色的权限。
- 可选的 subtitles、lipSyncMode 和 translationTimeSkips 需要视频输入。跳过区间必须位于媒体时长范围内,keepBackgroundMusic 必须为 true,keepOriginalVoice 必须为 false。
- lipSyncMode 接受 standard、pro 或 studio,取决于套餐并须通过常规媒体额度检查。每月 API 调用不限量并不意味着语音和口型同步免费。
- 轮询 projects_status 跟踪媒体工作流;使用 projects_get 获取所有语言版本。
- 字幕条目没有匹配的源片段,或源片段未提供文本,都可能导致后台流程失败;受理后请检查 projects_status.error 或 projects_get 中的翻译。
用量
每次成功调用消耗一次月度 API/MCP 调用额度。媒体额度和操作本身的生成限额也适用。错误
| HTTP 状态 | 代码 | 含义或恢复方式 |
|---|---|---|
| 400 | CREDENTIAL_IN_QUERY | 凭证通过 access_token 或 api_key 查询参数提供。请在标头中发送凭证。 |
| 400 | DURATION_DETECTION_FAILED | 无法获取已存储项目媒体的时长。 |
| 400 | IDEMPOTENCY_CONFLICT | Idempotency-Key 请求头必须与请求体中的 requestId 字段一致。 |
| 400 | INVALID_REQUEST_ID | 请在 requestId 或 Idempotency-Key 中提供 UUID v4。 |
| 400 | INVALID_TRANSLATED_SRT | 提供的目标语言 SRT 格式错误。 |
| 400 | LIPSYNC_NOT_AVAILABLE_FOR_AUDIO | 口型同步需要视频输入。 |
| 400 | LIPSYNC_VIDEO_TOO_LONG | 视频超出了所选口型同步模式的时长限制。 |
| 400 | SUBTITLES_NOT_AVAILABLE_FOR_AUDIO | 烧录字幕需要视频输入。 |
| 400 | TRANSLATION_TIME_SKIP_CONFLICT | 翻译时间跳过设置不能与 keepOriginalVoice 为 true 同时使用。 |
| 400 | TRANSLATION_TIME_SKIP_NOT_AVAILABLE_FOR_AUDIO | 翻译跳过时段需要视频输入。 |
| 400 | TRANSLATION_TIME_SKIP_OUT_OF_RANGE | 某个跳过区间超出了媒体时长。 |
| 400 | TRANSLATION_TIME_SKIP_REQUIRES_BACKGROUND | 翻译跳过时段需要将 keepBackgroundMusic 设为 true。 |
| 400 | VALIDATION_ERROR | 请根据架构更正输入。无效或不一致的值会在执行前被拒绝。 |
| 400 | VOICE_CLONING_SETTINGS_NOT_ALLOWED | voiceCloningSettings 仅在 voiceMode 为 cloning 时适用。 |
| 400 | VOICE_ID_NOT_ALLOWED_WITH_CLONING | voiceId 不能与值为 cloning 的 voiceMode 同时使用。 |
| 400 | VOICE_ID_REQUIRED | voiceMode 为 custom 时必须提供 voiceId。 |
| 401 | API_KEY_EXPIRED | API 密钥已过期。 |
| 401 | INVALID_API_KEY | 请提供有效且未过期的 API 密钥。 |
| 401 | INVALID_CREDENTIAL | Authorization 标头格式错误或与 x-api-key 冲突。 |
| 401 | MISSING_CREDENTIAL | 未提供可用的请求头凭据,或其长度超过 4096 个字符。 |
| 401 | USER_NOT_FOUND | 该凭据对应的账户已不存在。 |
| 403 | ACCOUNT_UNAVAILABLE | 调用者账户或计费账户不可用,或正在删除。 |
| 403 | AMBIGUOUS_TEAM_API_KEY | 此凭据对应的用户属于多个团队,因此计费上下文不明确。 |
| 403 | CUSTOM_VOICE_ACCESS_DENIED | 所选音色既不是目录中的音色,也不是经过身份验证的账户保存的自定义音色。 |
| 403 | FORBIDDEN | 通过身份验证的调用者无权访问此项目。 |
| 403 | INSUFFICIENT_CREDITS | 账户媒体额度不足,无法使用所选语音设置和可选的口型同步设置。 |
| 403 | INSUFFICIENT_SCOPE | 请授予全部所需权限,或选择其他凭据。 |
| 403 | INTEGRATION_PLAN_UNSUPPORTED | 无法验证该账户的集成限制。 |
| 403 | LIPSYNC_MODE_ACCESS_DENIED | 当前套餐不支持所选的可选口型同步模式。 |
| 403 | SUBSCRIPTION_REQUIRED | 请使用有效的付费订阅。 |
| 403 | TEAM_OWNER_NOT_FOUND | 找不到实际生效的团队所有者账户。 |
| 404 | PROJECT_NOT_FOUND | 可访问的账户中不存在此项目。 |
| 409 | CONCURRENT_ACTION_LIMIT_REACHED | 此账户已有 10 个集成操作正在运行。请先轮询现有请求,再启动另一个操作。 |
| 409 | DUB_ONLY_REQUIRES_TRANSCRIPTION | 请等待原始转写完成且非空后,再开始此操作。 |
| 409 | IDEMPOTENCY_CONFLICT | 只有操作和参数完全相同时,才能复用标识符。 |
| 409 | TRANSLATION_ALREADY_IN_PROGRESS | 此目标语言已有配音任务正在进行。 |
| 429 | CONCURRENT_TRANSLATION_LIMIT_REACHED | 账户已达到并发翻译限额。 |
| 429 | INTEGRATION_MONTHLY_LIMIT_REACHED | 请等待月度额度重置,或更改套餐。 |
| 429 | INTEGRATION_RATE_LIMIT_REACHED | 如果提供了 Retry-After,请等待其指定的时间,并采用退避重试。 |
| 500 | INTERNAL_ERROR | 在决定是否重试修改操作前,请检查已保存的请求状态和资源历史记录。 |
| 503 | ACTION_RESULT_UNAVAILABLE | 操作已执行,但未能保存结果。在启动新的生成前,请检查已保存的请求状态和资源历史记录。 |
| 503 | SERVER_RESTARTING | 服务器正在重启。请稍后重试;对于修改操作,请保持请求标识符不变。 |
{
"code": "INSUFFICIENT_SCOPE",
"message": "This credential does not permit the requested action.",
"status": 403,
"details": {
"requiredScopes": ["translations:write"]
}
}
此页面对您有帮助吗?

