Cloud 公共 API 预览
尚未发布的 Cloud 开发者 API,以 Artifact 为输入,生成持久 Job。
Cloud API 尚未发布
这是契约预览,不是发送生产流量的服务。OpenAPI 文档没有服务器,示例使用占位符 $VOICESTUDIO_CLOUD_ORIGIN。
| 来源 | 值 |
|---|---|
| 产品 | VoiceStudio Cloud 公共开发者 API |
| 受众 | 仅限公共开发者凭证 |
| 契约版本 | 1.0.0 |
| 生成的契约版本 | 1.0.0 |
| 源代码仓库 | debpalash/vssaas |
| 源代码提交 | c48c41f8fe5bb4496a9d218c513fd91fe827c0b5 |
| 原始公共投影 | /cloud-openapi.json |
其中包含 34 个开发者操作。仪表板、操作员和内部操作及其专用架构均被排除。
工作如何运行
Cloud 工作不是直接调用。输入先变为不可变 Artifact,经过身份验证的请求接纳一个持久 Job 并立即返回。每次变更都使用调用方创建的 Idempotency-Key:相同密钥和请求体返回相同结果,请求体改变则产生冲突。
不可执行的预览,不包含生产主机:
export VOICESTUDIO_CLOUD_ORIGIN="https://unreleased.invalid"
export VOICESTUDIO_API_KEY="vs_preview_only"
# 1. Ask to upload the exact text bytes.
curl "$VOICESTUDIO_CLOUD_ORIGIN/v1/artifacts/upload-authorizations" \
-H "Authorization: Bearer $VOICESTUDIO_API_KEY" \
-H "Idempotency-Key: 018f-example-upload-key" \
-H "Content-Type: application/json" \
-d '{
"project_id": "replace-with-project-id",
"purpose": "tts_text",
"media_type": "text/plain; charset=utf-8",
"size_bytes": 24,
"sha256": "replace-with-64-lowercase-hex-characters"
}'
# 2. PUT the bytes to the returned short-lived URL, then complete the Artifact.
curl "$VOICESTUDIO_CLOUD_ORIGIN/v1/artifacts/ARTIFACT_ID/complete" \
-H "Authorization: Bearer $VOICESTUDIO_API_KEY" \
-H "Idempotency-Key: 018f-example-complete-key" \
-H "Content-Type: application/json" \
-d '{ "size_bytes": 24, "sha256": "replace-with-64-lowercase-hex-characters" }'
# 3. Admit a Job. Success is 202 Accepted, not audio.
curl "$VOICESTUDIO_CLOUD_ORIGIN/v1/jobs" \
-H "Authorization: Bearer $VOICESTUDIO_API_KEY" \
-H "Idempotency-Key: 018f-example-job-key" \
-H "Content-Type: application/json" \
-d '{
"project_id": "replace-with-project-id",
"workflow": "tts",
"model": { "id": "replace-with-model-id", "version": "replace-with-version" },
"input": { "text_artifact_id": "replace-with-artifact-id" },
"configuration": { "voice_id": "replace-with-voice-id", "output_format": "wav" }
}'202 Accepted 响应体包含 Job 的标识和状态。轮询 GET /v1/jobs/{job_id} 或恢复 GET /v1/jobs/{job_id}/events,然后通过 Artifact 下载授权获取输出。访问权限始终来自凭证和租户成员身份;请求中的 ID 绝不会授予权限。
准确架构: Cloud API 参考。