---
title: "Scenes"
description: "Create, load, and enumerate scenes. A scene is the top-level unit of work: it holds a printer/material/print-setting combination and the models placed within that printer's build volume."
url: https://developer.formlabs.com/api-reference/scenes/
---

# Scenes

Create, load, and enumerate scenes. A scene is the top-level unit of
work: it holds a printer/material/print-setting combination and the
models placed within that printer's build volume.

## Endpoints

Each endpoint's Markdown copy has its parameters, request body, responses, error codes, and Python and cURL samples.

- [Open a .form file](https://developer.formlabs.com/api-reference/scenes/open-form-file.md): `POST /v1/scene/open/`, `preform.open_form_file()`. Load a saved PreForm project (`.form`) file.
- [Create a scene](https://developer.formlabs.com/api-reference/scenes/create-scene.md): `POST /v1/scene/create/`, `preform.create_scene()`. Create a new, empty scene for a given machine/material/print-setting/ layer-thickness combination, or from a saved `.fps` print settings file.
- [List scenes](https://developer.formlabs.com/api-reference/scenes/list-scenes.md): `GET /v1/scene/list/`, `preform.list_scenes()`. List every scene currently held by the server, in project order.
- [Get a scene](https://developer.formlabs.com/api-reference/scenes/get-scene.md): `POST /v1/scene/get/`, `preform.get_scene()`. Returns the full current state of one scene.
- [Delete a scene](https://developer.formlabs.com/api-reference/scenes/delete-scene.md): `DELETE /v1/scene/delete/`, `preform.delete_scene()`. Removes a scene. The server always keeps one default scene: deleting it does not remove it, but instead resets it to a fresh, empty scene of its current type.
- [Save one or more scenes to a .form file](https://developer.formlabs.com/api-reference/scenes/save-form-file.md): `POST /v1/scene/save/`, `preform.save_form_file()`. Saves one or more scenes as a `.form` project file.
- [Render a scene to an image file](https://developer.formlabs.com/api-reference/scenes/render-scene.md): `POST /v1/scene/render/`, `preform.render_scene()`. Renders the scene's 3D view to a `.png` file or a `.webp` flyaround animation.
- [Estimate a scene's print time](https://developer.formlabs.com/api-reference/scenes/estimate-print-time.md): `POST /v1/scene/estimate-print-time/`, `preform.estimate_print_time()`. Returns a fast, approximate total print time for a scene.
- [Calculate a scene's full print time breakdown](https://developer.formlabs.com/api-reference/scenes/calculate-print-time.md): `POST /v1/scene/calculate-print-time/`, `preform.calculate_print_time()`. Runs the full print time calculation for a scene and returns a breakdown of total, pre-print, and printing time.
- [Update a scene's printer/material settings](https://developer.formlabs.com/api-reference/scenes/update-scene.md): `POST /v1/scene/update/`, `preform.update_scene()`. Change an existing scene's machine/material/print-setting/ layer-thickness combination, or apply a saved `.fps` print settings file.
- [Upload a scene's sliced job to a printer](https://developer.formlabs.com/api-reference/scenes/print-scene.md): `POST /v1/scene/print/`, `preform.print_scene()`. Runs the full slicing pipeline for a scene and uploads the resulting job to `printer`, identified by serial name, IP address, or Fleet Control Queue id.
- [Get a scene's print-job metadata](https://developer.formlabs.com/api-reference/scenes/get-scene-metadata.md): `POST /v1/scene/metadata/`, `preform.get_scene_metadata()`. Returns the job-metadata JSON document PreForm embeds in print jobs for this scene: the subset that can be computed from the scene's current state without slicing.
