---
title: "Job"
description: "A job is what a printer runs, sliced from a scene and sent to a printer or a group queue."
url: https://developer.formlabs.com/core-concepts/job/
---

# Job

A *job*, or *print job*, is what a printer runs. PreForm creates a job from a
scene by slicing the scene into layers, the same step that runs when you click
**Print Now** or **Upload to Queue** in PreForm. The job carries the layers, the
scene's print settings, and a name that operators see on the printer and in Dashboard.

## From scene to job

A scene stays in PreForm, and you can keep changing it. A job is a copy of the
scene at the moment it's sliced:

```mermaid
flowchart LR
    scene["Scene<br/>models and settings"] -- "slice" --> job["Job<br/>layers, print settings, job name"]
    job --> pq["Printer queue"]
    job --> gq["Group queue<br/>(Dashboard)"]
```

Changes to the scene after slicing don't reach a job that already exists. To print the
changed scene, create a new job from it.

Prepare the models before you create a job: orient them, support them, and place them
on the build platform. For more information, see [Model](https://developer.formlabs.com/core-concepts/model.md).

## Send a job to a printer

The `print_scene` method slices the scene into a job and uploads the job in one step:

```python
# print_now=False puts the print job in the printer's queue without
# starting it.
job = preform.print_scene(
    scene_id=scene.scene_id,
    printer=PRINTER,
    job_name="bracket",
    print_now=False,
)
print(f"Print job {job.job_id}")
```

The `printer` field takes a printer's serial name or IP address, or the queue ID of a
Printer Group. The `print_now` field picks between the two print buttons in PreForm:

- **`print_now=False`:** **Upload to Queue**. The job waits in the printer's queue until
  an operator starts it on the touchscreen.
- **`print_now=True`:** **Print Now**. The job starts immediately, and the call fails
  when the printer isn't ready to print.

**Caution:** Omitting `print_now` defers to the printer's `ready_to_print_now` flag, so
the job starts immediately on a printer that is ready. Pass `print_now=False` when an
operator checks the build platform and resin tank before each print.

The `job_name` field is the name an operator sees on the printer and in Dashboard.
An order number or a batch ID in the name lets the operator match a finished build to
its orders.

For more information, see [Queue](https://developer.formlabs.com/core-concepts/queue.md).

## Keep the scene for later

To print the scene again later, or to change it first, save it as a `.form` file with
`save_form_file`. A `.form` file holds the models and settings, and it opens in
PreForm. For more information, see [Scene](https://developer.formlabs.com/core-concepts/scene.md).

## What's next

- [Operation](https://developer.formlabs.com/core-concepts/operation.md)
- [Create your first script](https://developer.formlabs.com/getting-started/quickstart.md)
- [Sending a print job from PreForm to a printer](https://formlabs.com/support/Sending-a-print-job-from-PreForm-to-a-printer/)
- [Starting a print job on the printer touchscreen](https://formlabs.com/support/Starting-a-print-job-on-the-printer-touchscreen/)
