Skip to main content
POST
Generate scene views
Generate new views of a session’s scene from a camera you place. The model reads the image batches you list in referenceBatchIds and renders new images as seen from targetC2w, which become a new generated batch in the session. Use them to fill in parts of the scene the existing views don’t cover, then pass the new batchId, together with the earlier ones, to Reconstruct Scene for an updated .spz. The request is asynchronous: it answers with a processing Scene Task; poll it until it finishes.
Pricing: scene tasks don’t currently consume credits.

Request parameters

Send application/json, up to 1 MiB. Unknown fields are rejected.
The easiest way to get a valid targetC2w is to start from a view’s c2w in a batch you already have and move or turn it. A camera close to the existing views gives the most consistent images.

Response parameters

Returns 200 OK with a Scene Task in processing state:
When it’s ready, result.outputBatch is the new generated batch, with every new image and its camera in views, and result.newViewCount is how many there are. result.spz is null — run Reconstruct Scene to fold the new views into the scene.

Common errors

A batch ID that’s well-formed but not from this session is caught by the model: the task starts and then fails with INVALID_REQUEST.

Examples

Quick Start: Scene Model

See generate in the full build, generate, and reconstruct flow.

Authorizations

Authorization
string
header
required

Server-side SDK clients use a project API key. Remote MCP clients use an OAuth access token. Never expose a project API key in browser code.

Headers

X-Request-Id
string

Optional caller-supplied correlation ID, up to 128 characters. The service returns the effective value in the response header for tracing and support.

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

Optional source-channel label, up to 128 characters, used to attribute traffic to an SDK, integration, product surface, or internal workflow.

Required string length: 1 - 128

Body

application/json

Body of POST /v1/scenes/generate. spzOutputUrl and outputUris are mutually exclusive.

sessionId
string
required

Session chosen by the caller, scoped to the caller's account. A session holds one scene and its image batches, and runs one task at a time: a submission while a task is still processing answers 409 with that task in error.details.running_task_id.

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

"living-room-01"

referenceBatchIds
string[]
required

1–35 distinct batch IDs from the same session, as returned in result.outputBatch.batchId. A well-formed ID from another session fails the task with INVALID_REQUEST.

Required array length: 1 - 35 elements
Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
targetC2w
number[][]
required

4 × 4 camera-to-world matrix as four rows of four finite numbers; the last row must be [0, 0, 0, 1].

Required array length: 4 elements
Required array length: 4 elements
Example:
projection
enum<string>
default:perspective

perspective for camera images, pano for a 360° panorama at targetC2w.

Available options:
perspective,
pano
fov
number | null

Field of view in degrees. Omitted or null, the model's default.

Required range: 20 <= x <= 140
seed
integer<int64>
default:1
Required range: 0 <= x <= 4294967295
spzOutputUrl
string<uri>

Same as outputUris.spz.

outputUris
object

The caller's own upload URLs; Viggle PUTs each finished file to its URL. Null entries are ignored. An .spz sent here is not kept by Viggle, and the result's spz.url is this URL; a preview or panorama sent here is also kept, and the result links to Viggle's copy. Each URL must be http(s), without credentials, on a host that resolves only to public addresses.

Response

Scene task started.

A scene task (scn_ prefix), returned by every /v1/scenes submission and by GET /v1/scenes/{task_id}. ready, failed, and cancelled are terminal. A task stays readable for about 72 hours after it finishes.

id
string
required

Task ID, scn_{runId}.{sessionId}.

sessionId
string
required
operation
enum<string>
required

A custom-pano task reports pano.

Available options:
pano,
generate,
reconstruct
status
enum<string>
required
Available options:
processing,
ready,
failed,
cancelled
createdAt
integer<int64> | null
required

Start time, Unix milliseconds.

completedAt
integer<int64> | null
required

End time, Unix milliseconds; null while processing.

result
object | null
required

Set only when ready.

error
object | null
required

Set only when failed. code is INVALID_REQUEST (not retryable — the model rejected the input, such as a batch from another session) or PROCESSING_FAILED (retryable).