Skip to main content
POST
创建场景
提交 JSON 请求体,包含 sessionId,以及 prompt 或 panoramaUri 二者之一。传 prompt 时,场景模型先生成一张 360° 全景图(可用参考图引导),再据此构建场景;传 panoramaUri 时,直接用你的全景图构建场景。接口是异步的:立即返回 processing 状态、ID 以 scn_ 开头的场景任务,之后用查询场景任务轮询,直到任务结束。 pano 任务就绪后,你会得到 .spz 格式的高斯泼溅场景、全景图,以及一个由带位姿视图组成的 initial 图像批次。把该批次的 batchId 传给生成场景视图和重建场景,即可扩展场景。
计费:场景任务目前不消耗积分。

会话

每个场景请求都要指定一个由你自定的 sessionId。一个会话包含一个场景,以及为它生成的所有图像批次:
  • sessionId 为 1–128 个 ASCII 字母、数字、下划线或连字符。它的作用域是你的账号,不会与其他客户冲突。
  • 一个会话同一时间只运行一个任务。若仍有任务处于 processing,再提交会返回 409,该任务的 ID 在 error.details.running_task_id 中,请先轮询它结束后再提交。
  • generate 和 reconstruct 的 referenceBatchIds 只接受同一会话中生成的批次;传入其他会话的批次会使任务以 INVALID_REQUEST 失败。

请求参数

使用 application/json,最大 1 MiB。不接受未知字段。

URL 规则

panoramaUri、referenceImages、spzOutputUrl 和 outputUris 由 Viggle 服务器读取或写入,因此每个地址都必须:
  • 使用 http 或 https,不含用户名或密码,如指定端口则端口必须有效;
  • 主机只解析到公网地址。私有地址、回环地址、链路本地地址和运营商级 NAT 地址会被拒绝,返回 400。

上传到自己的存储

spzOutputUrl,或 outputUris.spz / outputUris.preview / outputUris.panorama,是 Viggle 以 HTTP PUT 上传成品文件的地址,通常是 S3、R2 或 GCS 的预签名上传链接。它们是可选的;不传时,请在任务可读期间从任务结果中下载文件。
  • spzOutputUrl 等同于 outputUris.spz,二者只传其一。
  • 上传到你地址的 .spz 不会由 Viggle 保留:结果中的 spz.url 就是你的地址。
  • 上传到你地址的预览图或全景图 Viggle 也会保留一份,结果中仍链接到 Viggle 的签名副本。
  • outputUris 中值为 null 的项会被忽略。所有场景操作都接受这些字段。

响应参数

返回 200 OK 和 processing 状态的场景任务,结构与查询场景任务返回的相同:

常见错误

任务开始后仍可能失败,见查询场景任务中的“状态与错误码”。

示例

使用现有全景图

如需把全景图放到你自己世界中的已知位置和比例,请改用从自定义全景图创建场景。

带参考图并上传到自己的存储

下一步

查询场景任务

轮询任务并读取结果。

快速入门:场景模型

完整的构建、生成和重建流程。

授权

Authorization
string
header
必填

服务端 SDK 使用项目 API 密钥,Remote MCP 使用 OAuth 访问令牌。不要在浏览器代码中暴露项目密钥。

请求头

X-Request-Id
string

可选的调用者自定义关联 ID,最长 128 字符。服务会在响应头返回实际使用的值,便于追踪和支持排查。

Required string length: 1 - 128
X-Viggle-Source
string

可选来源标签,最长 128 字符,用于识别 SDK、集成、产品入口或内部工作流。

Required string length: 1 - 128

请求体

application/json

POST /v1/scenes/pano 的请求体。prompt(可带 referenceImages 与 quality)和 panoramaUri 二选一;spzOutputUrl 与 outputUris 不能同时使用。输入 URL 必须是 http(s)、不含账号密码、且主机只解析到公网地址。

sessionId
string
必填

调用方自定的会话 ID,按账户隔离。一个会话对应一个场景及其全部图像批次,同一时间只运行一个任务;已有任务 processing 时再提交会返回 409,error.details.running_task_id 为正在运行的任务。

Required string length: 1 - 128
Pattern: ^[A-Za-z0-9_-]+$
示例:

"living-room-01"

prompt
string

场景描述,先据此生成 360° 全景图。不能为空白。

Required string length: 1 - 1000
referenceImages
string<uri>[]

引导全景图生成的图片 URL,仅与 prompt 一起使用。

Maximum array length: 8
quality
enum<string>
默认值:low

全景图生成质量,仅与 prompt 一起使用。

可用选项:
fast,
low,
medium,
high
panoramaUri
string<uri>

已有 360° 全景图的 URL,直接据此构建场景;不能与 prompt、referenceImages、quality 同时使用。

spzOutputUrl
string<uri>

等同于 outputUris.spz。

outputUris
object

调用方自己的上传地址,Viggle 完成后用 PUT 把对应文件上传过去;值为 null 的项会被忽略。上传到这里的 .spz Viggle 不再保留,结果中的 spz.url 即该地址;预览图和全景图上传后 Viggle 仍保留一份,结果中链接指向 Viggle 的副本。每个地址必须是 http(s)、不含账号密码、且主机只解析到公网地址。

响应

场景任务已启动。

场景任务(以 scn_ 开头),所有 /v1/scenes 提交接口和 GET /v1/scenes/{task_id} 都返回它。ready、failed、cancelled 为终态。任务结束后约 72 小时内可查询。

id
string
必填

任务 ID,格式为 scn_{runId}.{sessionId}。

sessionId
string
必填
operation
enum<string>
必填

custom-pano 任务也返回 pano。

可用选项:
pano,
generate,
reconstruct
status
enum<string>
必填
可用选项:
processing,
ready,
failed,
cancelled
createdAt
integer<int64> | null
必填

开始时间,Unix 毫秒。

completedAt
integer<int64> | null
必填

结束时间,Unix 毫秒;processing 时为 null。

result
object | null
必填

只在 ready 时有值。

error
object | null
必填

只在 failed 时有值。code 为 INVALID_REQUEST(不可重试,模型拒绝了输入,例如引用了其他会话的批次)或 PROCESSING_FAILED(可重试)。