Formlabs Developers
Download PreForm Insider to start developing with the PreForm API.
Version v1.0.0-alpha (latest)

Schemas

Every schema in the PreForm API 1.0.0-alpha specification. Field types that name a schema link here.

AutoLayoutMode#

enum AutoLayoutMode

Which workspace's layout parameters to use for this call.

One of:

DEFAULT
Use the scene's standard layout parameters.
DENTAL
Temporarily use the scene's dental workspace parameters for this call, then restore the scene's previous parameters afterwards.

AutoLayoutRequest#

AutoLayoutRequest

Arranges the selected models on the build platform. Omitting model_ids lays out every model in the scene.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to lay out. Omitted or empty means every model in the scene.

  • Which workspace's layout parameters to use for this call.

    Defaults to "DEFAULT"

    One of:

    DEFAULT
    Use the scene's standard layout parameters.
    DENTAL
    Temporarily use the scene's dental workspace parameters for this call, then restore the scene's previous parameters afterwards.
  • model_spacing_mmnumber

    Minimum gap to leave between models.

    At least 0.

    Defaults to 1

  • allow_overlapping_supportsboolean

    Allow one model's supports to intersect another model or its supports.

    Defaults to false

  • lock_rotationboolean

    Only translate models and never rotate them, regardless of their individual lock.

    Defaults to false

  • custom_boundsLayoutBounds

    A custom rectangular region of the build platform to lay out within, in user XY coordinates. All four fields are required together.

    Show child attributes
    • x_min_mmnumberRequired
    • x_max_mmnumberRequired
    • y_min_mmnumberRequired
    • y_max_mmnumberRequired
  • seedinteger

    Random seed controlling the layout algorithm. Given the same models and settings, the same seed reproduces the same arrangement. Omitted means a random seed is used each call.

    At least 0, at most 4294967295.

  • layout_attemptsinteger

    Number of independent layout attempts to try, keeping the best. Defaults to an algorithm-chosen value, or 200 when seed is set without an explicit value (to keep seeded results deterministic).

    At least 1, at most 2500.

  • iterations_per_attemptinteger

    Optimization iterations per attempt. Defaults to an algorithm-chosen value, or 25000 when seed is set without an explicit value (to keep seeded results deterministic).

    At least 1, at most 250000.

  • on_layout_failureenum OnLayoutFailure

    What to do when the layout cannot fit every requested model.

    Defaults to "FAIL_AND_LEAVE_SCENE_UNCHANGED"

    One of:

    FAIL_AND_LEAVE_SCENE_UNCHANGED
    Fail the request with OPERATION_FAILED. The scene is left unchanged.
    EJECT_A_MODEL_AND_RETRY
    Greedily remove seeded-random models from the layout and retry until the rest fit, up to max_ejections removals. Ejected models are removed from the scene.
  • max_ejectionsinteger

    Maximum number of models that may be ejected before the layout fails outright. Only valid with on_layout_failure: "EJECT_A_MODEL_AND_RETRY". Omitted means no cap.

    At least 1.

AutoLayoutResponse#

AutoLayoutResponse

The outcome of a layout for every requested model, in the request's model_ids order. Ids are bare UUIDs. Scene state is not included; fetch it with /v1/scene/model/list/ or /v1/scene/get/.

Fields

  • laid_out_model_idsarray of string (uuid)sRequired

    Requested models that remain in the scene.

  • ejected_model_idsarray of string (uuid)sRequired

    Requested models removed from the scene to make the rest fit. Empty unless on_layout_failure is EJECT_A_MODEL_AND_RETRY.

AutoOrientMode#

enum AutoOrientMode

Selects a specialized auto-orient algorithm.

One of:

DENTAL
Orients for dental appliance printing by tilting the occlusal (biting) plane, rather than searching for a quality-optimized orientation.

AutoOrientRequest#

object

Automatically orients the selected models. Omitting mode runs the default quality-optimized algorithm. tilt is only meaningful together with mode: "DENTAL".

Fields

  • Defaultoption 1 of 2
    Show fields
    • scene_idstring (uuid)Required

      The id of the scene containing the models.

    • model_idsarray of string (uuid)s

      Ids of the models to auto-orient. Omitted or empty means every model in the scene.

  • Dental Modeoption 2 of 2
    Show fields
    • scene_idstring (uuid)Required

      The id of the scene containing the models.

    • model_idsarray of string (uuid)s

      Ids of the models to auto-orient. Omitted or empty means every model in the scene.

    • Selects a specialized auto-orient algorithm.

      One of:

      DENTAL
      Orients for dental appliance printing by tilting the occlusal (biting) plane, rather than searching for a quality-optimized orientation.
    • tiltinteger

      Degrees to tilt the occlusal plane. Only applies when mode is "DENTAL".

      Defaults to 0

AutoPackRequest#

AutoPackRequest

Packs the selected models within the build volume without duplicating them. Unselected models are left in place and act as fixed obstacles.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to pack. Omitted or empty means every model in the scene.

  • model_spacing_mmnumber

    Minimum gap to leave between models. Floored at the material's visual collision offset if smaller.

    At least 0.

  • distance_from_wall_mmnumber

    Margin to leave between models and the build volume walls.

    At least 0.

  • seedinteger

    Random seed controlling the packing algorithm. Omitted means a random seed is used each call.

    At least 0, at most 4294967295.

  • packing_modeenum PackingMode

    Packing objective used to arrange models within the (SLS) build volume.

    Defaults to "PACK_HEIGHT"

    One of:

    PACK_HEIGHT
    Minimize the height the packed models occupy.
    PACK_VOLUME
    Minimize the volume the packed models occupy.
  • on_pack_failureenum OnPackFailure

    What to do with models the packer could not place inside the build volume.

    Defaults to "FAIL_AND_LEAVE_SCENE_UNCHANGED"

    One of:

    FAIL_AND_LEAVE_SCENE_UNCHANGED
    Fail the request with OPERATION_FAILED. The scene is left unchanged.
    PARK_OUTSIDE_BUILD_VOLUME
    Keep the pack. Models that fit take their packed poses; models that did not are parked beside the build volume, outside it, and reported in unpacked_model_ids. Nothing is removed from the scene.

AutoPackResponse#

AutoPackResponse

The outcome of a pack for every selected visible model. Hidden models are never packed, so a hidden model in the selection appears in neither array. Ids are bare UUIDs; their order is unspecified. Scene state is not included; fetch it with /v1/scene/model/list/ or /v1/scene/get/.

Fields

  • packed_model_idsarray of string (uuid)sRequired

    Selected visible models that ended inside the build volume.

  • unpacked_model_idsarray of string (uuid)sRequired

    Selected visible models the packer could not place. Empty unless on_pack_failure is PARK_OUTSIDE_BUILD_VOLUME.

AutoSupportRequest#

AutoSupportRequest

Generates supports for the selected models, replacing any supports they already have. Fields left out keep the scene's current support settings.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to auto-support. Omitted or empty means every model in the scene.

  • densitynumber

    Support touchpoint density.

    At least 0.

  • slope_multipliernumber

    Scales how aggressively steep overhangs are supported.

    At least 0.

  • touchpoint_size_mmnumber

    Diameter of each support touchpoint.

    At least 0.

  • raft_thickness_mmnumber

    Thickness of the raft under the supports.

    At least 0.

  • height_above_raft_mmnumber

    Vertical gap left between the raft and the model.

    At least 0.

  • z_compression_correction_mmnumber

    Raft thickness compensation applied for print compression.

    At least 0.

  • early_layer_merge_mmnumber

    Height over which nearby touchpoints are merged into wider bases.

    At least 0.

  • only_minimaboolean

    Generate only the touchpoints the model strictly needs to print (a faster, reduced-fidelity pass) instead of the full support structure.

    Defaults to false

  • raft_typeenum RaftType

    Which raft style to build under a model's supports.

    One of:

    FULL_RAFT
    A single solid raft under the whole support structure.
    MINI_RAFT
    A small raft under each touchpoint cluster instead of one solid raft.
    MINI_RAFTS_ON_BP
    Mini rafts placed directly on the build platform rather than under the touchpoints.
  • raft_label_enabledboolean

    Engrave the model's name on its raft. The text is fixed when the supports are generated: renaming the model afterwards does not change it until the supports are regenerated. Pass false for a raft whose geometry does not depend on the model's name.

  • breakaway_structure_enabledboolean

    Use breakaway supports. Only accepted when the scene's material supports this option.

  • internal_supports_enabledboolean

    Generate internal supports for enclosed cavities.

BodyCountResult#

BodyCountResult

The number of disconnected mesh bodies making up a single model.

Fields

  • body_countintegerRequired

    Number of disconnected bodies (connected mesh components) making up this model. 1 for an ordinary single-body model.

BuildVolume#

BuildVolume

The build volume geometry for the scene's printer and material.

Fields

  • dimensions_mmobjectRequired

    Build volume size in millimeters.

    Show child attributes
    • xnumberRequired
    • ynumberRequired
    • znumberRequired
  • fillet_radius_mmnumberRequired

    Radius of the build volume's corner fillets, in millimeters.

CageRequest#

CageRequest

Generates a support cage around the selected models. Fields left unspecified fall back to the scene's default cage-generation settings.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to cage. Omitted or empty means every model in the scene.

  • cage_labelstring

    Display name for the new cage model. Defaults to an auto-generated name ("Cage 1", "Cage 2", ...).

  • generate_mesh_labelboolean

    Emboss cage_label as a physical label on the cage geometry.

    Defaults to true

  • bar_spacing_mmnumber

    Gap left between adjacent cage bars.

    At least 0.

  • bar_thickness_mmnumber

    Thickness of each cage bar.

    At least 1.

  • bar_width_mmnumber

    Width of each cage bar.

    At least 1.

  • distance_to_cage_mmnumber

    Gap left between the models and the surrounding cage.

    At least 0.

  • enable_round_edgesboolean

    Round off the edges of the cage bars.

    Defaults to false

  • enable_square_barsboolean

    Give the cage bars a rectangular cross-section rather than a round one.

    Defaults to true

CageResult#

CageResult

The cage model a caging operation created.

Fields

  • cage_model_idstring (uuid)Required

    The id of the newly created cage model. The selected models are now children of this model.

CartridgeData#

CartridgeData

Cartridge data keyed by cartridge id. Unlike every other v1 response field, the keys inside each entry are camelCase, not snake_case: this object is a verbatim passthrough of the printer's internal cartridge tracking data.

CheckManifoldRequest#

CheckManifoldRequest

Selects the models to check.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to check. Omitted or empty means every model in the scene.

CreateSceneFpsFile#

CreateSceneFpsFile

Create a scene from a saved .fps print settings file. Custom print settings are persisted so the scene's scene_settings.custom_print_setting_id can identify them later.

Fields

  • fps_filestringRequired

    Full path to the .fps file.

CreateSceneLayerThicknessMm#

number or string

A layer thickness in millimeters, accepted as a JSON number, the literal string "ADAPTIVE" for adaptive layer thickness, or a numeric value formatted as a string (e.g. "0.025"). "ADAPTIVE" is accepted only where the settings catalog offers an adaptive variant, on older printer models (see /v1/print-setting/list/).

CreateSceneManual#

CreateSceneManual

A machine/material/print-setting/layer-thickness combination to create a scene for.

Fields

  • machine_typestringRequired

    Canonical machine type id, e.g. "FORM-4-0".

  • material_codestringRequired

    Versioned material code, e.g. "FLGPBK05".

  • print_settingstring

    Print setting profile code, e.g. "DEFAULT".

  • layer_thickness_mmnumber or stringRequired

    A layer thickness in millimeters, accepted as a JSON number, the literal string "ADAPTIVE" for adaptive layer thickness, or a numeric value formatted as a string (e.g. "0.025"). "ADAPTIVE" is accepted only where the settings catalog offers an adaptive variant, on older printer models (see /v1/print-setting/list/).

CreateSceneRequest#

CreateSceneManual or CreateSceneFpsFile

Either a manual machine/material/print-setting combination, or a saved .fps print settings file.

Fields

  • CreateSceneManualoption 1 of 2

    A machine/material/print-setting/layer-thickness combination to create a scene for.

    Show fields
    • machine_typestringRequired

      Canonical machine type id, e.g. "FORM-4-0".

    • material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • print_settingstring

      Print setting profile code, e.g. "DEFAULT".

    • layer_thickness_mmnumber or stringRequired

      A layer thickness in millimeters, accepted as a JSON number, the literal string "ADAPTIVE" for adaptive layer thickness, or a numeric value formatted as a string (e.g. "0.025"). "ADAPTIVE" is accepted only where the settings catalog offers an adaptive variant, on older printer models (see /v1/print-setting/list/).

  • CreateSceneFpsFileoption 2 of 2

    Create a scene from a saved .fps print settings file. Custom print settings are persisted so the scene's scene_settings.custom_print_setting_id can identify them later.

    Show fields
    • fps_filestringRequired

      Full path to the .fps file.

CreatedScene#

CreatedScene

What /v1/scene/create/ accomplished: the id of the new scene and the print settings it was created with. Fetch the full scene with /v1/scene/get/.

Fields

  • scene_idstring (uuid)Required

    Unique identifier of the new scene.

  • scene_settingsSceneTypeRequired

    The machine/material/print-setting/layer-thickness combination used to create the scene.

    Show child attributes
    • machine_typestringRequired

      Canonical machine type id, e.g. "FORM-4-0".

    • material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • print_settingstringRequired

      Print setting profile code, e.g. "DEFAULT".

    • layer_thickness_mmstringRequired

      Layer thickness in millimeters, always returned as a string: either a numeric string (e.g. "0.025") or the literal "ADAPTIVE" for adaptive layer thickness. Contrast with /v1/print-setting/list/ and /v1/print-setting/validate/, whose layer_thickness_mm is a JSON number (or "ADAPTIVE").

    • custom_print_setting_idstring (uuid)

      Id of the custom print setting the scene was created or updated from, if any (via fps_file). Absent when the scene uses a material-based print setting.

CupDetectionResult#

CupDetectionResult

Cup-detection outcome for a single model.

Fields

  • cup_countintegerRequired

    Number of cup cavities detected in the model's current orientation. 0 means no suction risk from cups.

    At least 0.

DeleteModelRequest#

DeleteModelRequest

Identifies which models in a scene to delete.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to delete. Omitted or empty means every model in the scene.

DentalHollowingRequest#

DentalHollowingRequest

Cuts, extrudes, and optionally hollows the selected models.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to process. Omitted or empty means every model in the scene.

  • cutoff_height_mmnumber

    Absolute height of the cut plane. Mutually exclusive with cutoff_below_gumline_mm.

  • cutoff_below_gumline_mmnumber

    Offset of the cut plane from each model's automatically detected gumline. Only used when cutoff_height_mm is omitted. 0 (the default) cuts exactly at the gumline.

    Defaults to 0

  • extrude_distance_mmnumberRequired

    Length of solid material extruded downward from the cut plane to create a printable base.

  • hollowboolean

    Also hollow the resulting model.

    Defaults to false

  • shell_thickness_mmnumber

    Thickness of the hollow shell wall. Defaults to 2.75 if omitted. Only used when hollow is true. Rejected otherwise.

    At least 0.

  • wall_thickness_mmnumber

    Thickness of the honeycomb infill walls inside the hollow cavity (not the outer shell, which is shell_thickness_mm). Defaults to 1 if omitted. Only used when hollow is true. Rejected otherwise.

    At least 0.01.

  • drain_hole_radius_mmnumber

    Minor-axis radius of the drain holes generated in the hollow shell. Defaults to 1.5 if omitted. Only used when hollow is true. Rejected otherwise.

    At least 0.

  • drain_hole_height_rationumber

    Ratio of a drain hole's major axis to drain_hole_radius_mm. 1 (the default) produces a circular hole and larger values elongate it. Only used when hollow is true. Rejected otherwise.

    Greater than 0.

  • drain_hole_suppression_distance_mmnumber

    Minimum distance between generated drain holes; candidates closer than this to another hole are dropped. Defaults to 2 if omitted. Only used when hollow is true. Rejected otherwise.

    At least 0.

  • drain_hole_max_countinteger

    Maximum number of drain holes generated per contour on the bottom of the model. Defaults to 2 if omitted. Only used when hollow is true. Rejected otherwise.

    At least 0.

  • enable_honeycomb_infillboolean

    Fill the hollow cavity with honeycomb infill. Only used when hollow is true. Rejected otherwise.

    Defaults to true

  • enable_smooth_contour_extended_sidesboolean

    Smooth contours that are extended down to the build platform when creating the base.

    Defaults to true

  • keep_disconnected_mesh_componentsboolean

    Keep every disconnected piece of the cut mesh instead of dropping all but the largest. Defaults to the scene's configured default if omitted.

DentalHollowingResult#

DentalHollowingResult

The models dental-hollowing created, per source model, plus any non-fatal warnings.

Fields

  • resultsarray of ModelsCreatedFromSourcesRequired

    One entry per selected model, in request order. Each entry's new_model_ids name the processed model created from that model (exactly one today, though the array form leaves room for processing that yields several). The source model no longer exists in the scene.

    Show child attributes
    • source_model_idstring (uuid)Required

      The id of the model the new models were created from.

    • new_model_idsarray of string (uuid)sRequired

      Ids of the models created from it, in no particular order.

  • warningsarray of stringsRequired

    Free-text, non-fatal problems encountered while processing.

  • infosarray of stringsRequired

    Free-text informational notices, if any.

Device#

GenericDevice or FleetControlPrinterGroup or Form4FamilyDevice or Form3FamilyDevice or Fuse1Device or Form2Device

A device's current status. The shape depends on the device type, indicated by which fields are present. Compare against the titled variants below rather than trying to detect the type from id or product_name alone.

Fields

  • Generic Deviceoption 1 of 6

    A device with no more specific status information available.

    Show fields
    • idstringRequired

      The device's serial name or other stable identifier.

    • product_namestringRequired
    • statusstringRequired

      Human-readable status message. Not machine-readable. Never match on its value.

    • is_connectedbooleanRequired
    • connection_typeenum DeviceConnectionTypeRequired

      How a device is currently connected, if known.

      Currently one of the following; more may be added:

      UNKNOWN
      Connected locally, but the specific interface could not be determined.
      VIRTUAL
      A virtual/simulated device, not a real physical printer.
      REMOTE
      Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
      USB
      Connected directly over USB.
      WIFI
      Connected over the local Wi-Fi network.
      ETHERNET
      Connected over a wired Ethernet network.
      No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
    • ip_addressstring

      Present only when connected directly over the local network.

    • firmware_versionstringRequired
    • ready_to_print_nowboolean

      If newly uploaded jobs print automatically instead of being queued. Present only for devices that can receive prints.

  • Fleet Control Printer Groupoption 2 of 6

    A Fleet Control queue: a group of one or more printers managed together through a Formlabs Dashboard queue.

    Show fields
    • idstringRequired

      The group's stable identifier.

    • product_namestringRequired
    • statusstringRequired

      Human-readable status message. Not machine-readable. Never match on its value.

    • is_connectedbooleanRequired
    • connection_typeenum DeviceConnectionTypeRequired

      How a device is currently connected, if known.

      Currently one of the following; more may be added:

      UNKNOWN
      Connected locally, but the specific interface could not be determined.
      VIRTUAL
      A virtual/simulated device, not a real physical printer.
      REMOTE
      Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
      USB
      Connected directly over USB.
      WIFI
      Connected over the local Wi-Fi network.
      ETHERNET
      Connected over a wired Ethernet network.
      No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
    • firmware_versionstringRequired

      Always empty, since a printer group has no single firmware version.

    • dashboard_group_idstring (uuid)Required

      Id of the group on Formlabs Dashboard.

    • dashboard_queue_idstring (uuid)Required

      Id of the Fleet Control queue on Formlabs Dashboard.

    • ready_to_print_nowbooleanRequired

      If newly uploaded jobs print automatically instead of being queued.

    • queue_pausedbooleanRequired

      If the queue is currently paused.

    • has_form_autobooleanRequired

      If the group includes a Form Auto.

    • supported_machine_type_idsarray of stringsRequired
    • printersarray of objectsRequired

      The individual printers currently in this group.

      Show child attributes
      • idstringRequired

        The printer's serial name.

      • machine_type_idstringRequired

        Canonical machine type id, e.g. "FORM-4-0".

  • Form 4 or Form 4L Printeroption 3 of 6
    Show fields
    • idstringRequired

      The printer's serial name.

    • product_namestringRequired
    • statusstringRequired

      Human-readable status message. Not machine-readable. Never match on its value.

    • is_connectedbooleanRequired
    • connection_typeenum DeviceConnectionTypeRequired

      How a device is currently connected, if known.

      Currently one of the following; more may be added:

      UNKNOWN
      Connected locally, but the specific interface could not be determined.
      VIRTUAL
      A virtual/simulated device, not a real physical printer.
      REMOTE
      Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
      USB
      Connected directly over USB.
      WIFI
      Connected over the local Wi-Fi network.
      ETHERNET
      Connected over a wired Ethernet network.
      No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
    • ip_addressstringRequired
    • firmware_versionstringRequired
    • is_remote_print_enabledbooleanRequired

      If the printer can be started remotely via Formlabs Dashboard.

    • estimated_print_time_remaining_msintegerRequired

      Milliseconds remaining in the current print, if any, and 0 otherwise.

    • tank_idstringRequired
    • tank_material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • cartridge_dataCartridgeDataRequired

      Cartridge data keyed by cartridge id. Unlike every other v1 response field, the keys inside each entry are camelCase, not snake_case: this object is a verbatim passthrough of the printer's internal cartridge tracking data.

      Show child attributes
      • cartridgeMaterialCodestringRequired

        Versioned material code, e.g. "FLGPBK05".

      • cartridgeEstimatedVolumeDispensed_mLnumberRequired

        Estimated volume of material dispensed from this cartridge so far, in mL.

      • cartridgeOriginalVolume_mLnumberRequired

        The cartridge's original, unused volume, in mL.

    • ready_to_print_nowbooleanRequired

      If newly uploaded jobs print automatically instead of being queued.

  • Form 3 or Form 3L Printeroption 4 of 6
    Show fields
    • idstringRequired

      The printer's serial name.

    • product_namestringRequired
    • statusstringRequired

      Human-readable status message. Not machine-readable. Never match on its value.

    • is_connectedbooleanRequired
    • connection_typeenum DeviceConnectionTypeRequired

      How a device is currently connected, if known.

      Currently one of the following; more may be added:

      UNKNOWN
      Connected locally, but the specific interface could not be determined.
      VIRTUAL
      A virtual/simulated device, not a real physical printer.
      REMOTE
      Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
      USB
      Connected directly over USB.
      WIFI
      Connected over the local Wi-Fi network.
      ETHERNET
      Connected over a wired Ethernet network.
      No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
    • ip_addressstringRequired
    • firmware_versionstringRequired
    • is_remote_print_enabledbooleanRequired

      If the printer can be started remotely via Formlabs Dashboard.

    • estimated_print_time_remaining_msintegerRequired

      Milliseconds remaining in the current print, if any, and 0 otherwise.

    • tank_idstringRequired
    • tank_material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • cartridge_dataCartridgeDataRequired

      Cartridge data keyed by cartridge id. Unlike every other v1 response field, the keys inside each entry are camelCase, not snake_case: this object is a verbatim passthrough of the printer's internal cartridge tracking data.

      Show child attributes
      • cartridgeMaterialCodestringRequired

        Versioned material code, e.g. "FLGPBK05".

      • cartridgeEstimatedVolumeDispensed_mLnumberRequired

        Estimated volume of material dispensed from this cartridge so far, in mL.

      • cartridgeOriginalVolume_mLnumberRequired

        The cartridge's original, unused volume, in mL.

    • form_auto_statusstringRequired

      Human-readable Form Auto status message. Not machine-readable. Never match on its value.

    • ready_to_print_nowbooleanRequired

      If newly uploaded jobs print automatically instead of being queued.

  • Fuse 1/1+ Printeroption 5 of 6
    Show fields
    • idstringRequired

      The printer's serial name.

    • product_namestringRequired
    • statusstringRequired

      Human-readable status message. Not machine-readable. Never match on its value.

    • is_connectedbooleanRequired
    • connection_typeenum DeviceConnectionTypeRequired

      How a device is currently connected, if known.

      Currently one of the following; more may be added:

      UNKNOWN
      Connected locally, but the specific interface could not be determined.
      VIRTUAL
      A virtual/simulated device, not a real physical printer.
      REMOTE
      Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
      USB
      Connected directly over USB.
      WIFI
      Connected over the local Wi-Fi network.
      ETHERNET
      Connected over a wired Ethernet network.
      No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
    • ip_addressstringRequired
    • firmware_versionstringRequired
    • is_remote_print_enabledbooleanRequired

      If the printer can be started remotely via Formlabs Dashboard.

    • estimated_print_time_remaining_msintegerRequired

      Milliseconds remaining in the current print, if any, and 0 otherwise.

    • bed_temperature_cnumberRequired
    • powder_levelstringRequired

      Human-readable powder level message. Not machine-readable. Never match on its value.

    • printing_layerintegerRequired

      Index of the layer currently printing, if any.

    • printing_guidstringRequired

      Id of the print job currently loaded, if any.

    • cylinder_material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • cylinder_serialstringRequired
    • printer_material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • powder_credit_gnumberRequired

      Remaining powder credit, in grams.

    • ready_to_print_nowbooleanRequired

      If newly uploaded jobs print automatically instead of being queued.

  • Form 2 Printeroption 6 of 6
    Show fields
    • idstringRequired

      The printer's serial name.

    • product_namestringRequired
    • statusstringRequired

      Human-readable status message. Not machine-readable. Never match on its value.

    • is_connectedbooleanRequired
    • connection_typeenum DeviceConnectionTypeRequired

      How a device is currently connected, if known.

      Currently one of the following; more may be added:

      UNKNOWN
      Connected locally, but the specific interface could not be determined.
      VIRTUAL
      A virtual/simulated device, not a real physical printer.
      REMOTE
      Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
      USB
      Connected directly over USB.
      WIFI
      Connected over the local Wi-Fi network.
      ETHERNET
      Connected over a wired Ethernet network.
      No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
    • ip_addressstringRequired
    • firmware_versionstringRequired
    • estimated_print_time_remaining_msintegerRequired

      Milliseconds remaining in the current print, if any, and 0 otherwise.

    • tank_idstringRequired
    • tank_material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • cartridge_dataCartridgeDataRequired

      Cartridge data keyed by cartridge id. Unlike every other v1 response field, the keys inside each entry are camelCase, not snake_case: this object is a verbatim passthrough of the printer's internal cartridge tracking data.

      Show child attributes
      • cartridgeMaterialCodestringRequired

        Versioned material code, e.g. "FLGPBK05".

      • cartridgeEstimatedVolumeDispensed_mLnumberRequired

        Estimated volume of material dispensed from this cartridge so far, in mL.

      • cartridgeOriginalVolume_mLnumberRequired

        The cartridge's original, unused volume, in mL.

    • ready_to_print_nowbooleanRequired

      If newly uploaded jobs print automatically instead of being queued.

DeviceConnectionType#

enum DeviceConnectionType

How a device is currently connected, if known.

Currently one of the following; more may be added:

UNKNOWN
Connected locally, but the specific interface could not be determined.
VIRTUAL
A virtual/simulated device, not a real physical printer.
REMOTE
Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
USB
Connected directly over USB.
WIFI
Connected over the local Wi-Fi network.
ETHERNET
Connected over a wired Ethernet network.
No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).

DirectionVectors#

DirectionVectors

Orientation as two vectors, in model space, that say which way is "up" and "right" once the model is placed in the scene.

Fields

  • z_directionarray of numbersRequired

    Unit vector in model space that will point up (+Z) in the scene.

    Exactly 3 items.

  • x_directionarray of numbersRequired

    Unit vector in model space, perpendicular to z_direction, that will point right (+X) in the scene.

    Exactly 3 items.

DiscoverDevicesRequest#

DiscoverDevicesRequest

Discovery parameters for /v1/device/discover/.

Fields

  • timeout_secondsinteger

    Number of seconds to wait for devices to be found.

    At least 0.

    Defaults to 60

  • printerstring

    Address of a single device to wait for, instead of discovering broadly. Printer serial name, IP address, or Fleet Control Queue id.

DrainHole#

DrainHole

One drain/vent hole to drill into a model.

Fields

  • orientationEulerAngles or TransformMatrix or DirectionVectorsRequired

    A model orientation, given as exactly one of: Euler angles, a transform matrix, or a pair of direction vectors.

    Show child attributes
    • EulerAnglesoption 1 of 3

      Orientation as Euler angles in degrees. Rotations are applied in the order z, then x, then y.

      Show fields
      • xnumberRequired

        Rotation in degrees around the x axis (applied second).

      • ynumberRequired

        Rotation in degrees around the y axis (applied last).

      • znumberRequired

        Rotation in degrees around the z axis (applied first).

    • TransformMatrixoption 2 of 3

      Orientation as the linear (rotation/scale) part of a 3x3 transform matrix.

      Show fields
      • lineararray of array of numbersRequired

        A 3x3 matrix, given as 3 rows of 3 numbers.

        Exactly 3 items.

    • DirectionVectorsoption 3 of 3

      Orientation as two vectors, in model space, that say which way is "up" and "right" once the model is placed in the scene.

      Show fields
      • z_directionarray of numbersRequired

        Unit vector in model space that will point up (+Z) in the scene.

        Exactly 3 items.

      • x_directionarray of numbersRequired

        Unit vector in model space, perpendicular to z_direction, that will point right (+X) in the scene.

        Exactly 3 items.

  • positionScenePositionRequired

    A position within a printer's build volume, in millimeters, in user coordinate space.

    Show child attributes
    • xnumberRequired

      X position. 0 is the center of the build volume. Positive moves right as you face the printer.

    • ynumberRequired

      Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

    • znumberRequired

      Vertical position. 0 is the surface of the build platform.

  • diameter_mmnumberRequired

    Diameter of the drilled hole.

    Greater than 0.

  • depth_mmnumber or stringRequired

    Fixed hole depth, or the literal string "AUTO" to infer the depth by searching into the model along the hole's axis.

  • outset_mmnumber

    How far the hole extends outward past the model's surface (the reverse of the drilling direction), to cleanly cut the surface edge.

    At least 0.

    Defaults to 1

  • create_plugboolean

    Also generate a removable plug model matching this hole.

    Defaults to false

  • max_search_distancenumber

    Upper bound on the depth search. Only accepted together with depth_mm: "AUTO".

    At least 0.

DrillRequest#

DrillRequest

Drills the given drain holes into the selected models.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to drill. Omitted or empty means every model in the scene.

  • drain_holesarray of DrainHolesRequired

    At least 1 items.

    Show child attributes
    • orientationEulerAngles or TransformMatrix or DirectionVectorsRequired

      A model orientation, given as exactly one of: Euler angles, a transform matrix, or a pair of direction vectors.

      Show child attributes
      • EulerAnglesoption 1 of 3

        Orientation as Euler angles in degrees. Rotations are applied in the order z, then x, then y.

        Show fields
        • xnumberRequired

          Rotation in degrees around the x axis (applied second).

        • ynumberRequired

          Rotation in degrees around the y axis (applied last).

        • znumberRequired

          Rotation in degrees around the z axis (applied first).

      • TransformMatrixoption 2 of 3

        Orientation as the linear (rotation/scale) part of a 3x3 transform matrix.

        Show fields
        • lineararray of array of numbersRequired

          A 3x3 matrix, given as 3 rows of 3 numbers.

          Exactly 3 items.

      • DirectionVectorsoption 3 of 3

        Orientation as two vectors, in model space, that say which way is "up" and "right" once the model is placed in the scene.

        Show fields
        • z_directionarray of numbersRequired

          Unit vector in model space that will point up (+Z) in the scene.

          Exactly 3 items.

        • x_directionarray of numbersRequired

          Unit vector in model space, perpendicular to z_direction, that will point right (+X) in the scene.

          Exactly 3 items.

    • positionScenePositionRequired

      A position within a printer's build volume, in millimeters, in user coordinate space.

      Show child attributes
      • xnumberRequired

        X position. 0 is the center of the build volume. Positive moves right as you face the printer.

      • ynumberRequired

        Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

      • znumberRequired

        Vertical position. 0 is the surface of the build platform.

    • diameter_mmnumberRequired

      Diameter of the drilled hole.

      Greater than 0.

    • depth_mmnumber or stringRequired

      Fixed hole depth, or the literal string "AUTO" to infer the depth by searching into the model along the hole's axis.

    • outset_mmnumber

      How far the hole extends outward past the model's surface (the reverse of the drilling direction), to cleanly cut the surface edge.

      At least 0.

      Defaults to 1

    • create_plugboolean

      Also generate a removable plug model matching this hole.

      Defaults to false

    • max_search_distancenumber

      Upper bound on the depth search. Only accepted together with depth_mm: "AUTO".

      At least 0.

DrillResult#

DrillResult

The result of drilling drain holes into one or more models.

Fields

  • plugsarray of PlugCreatedsRequired

    One entry per plug model created for holes with create_plug: true. Empty if no plugs were created.

    Show child attributes
    • plug_model_idstring (uuid)Required

      The id of the newly created plug model.

    • drilled_model_idstring (uuid)Required

      The id of the pre-existing model that was drilled: the model the plug was cut from and fits back into.

  • warningsarray of stringsRequired

    Free-text, non-fatal problems drilling individual holes, identified by their index into the request's drain_holes.

  • infosarray of stringsRequired

    Free-text informational notices, if any.

DuplicateModelRequest#

DuplicateModelRequest

Identifies which models in a scene to duplicate, and how many copies to make.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to duplicate. Omitted or empty means every model in the scene.

  • countintegerRequired

    The number of copies to create of each selected model.

    At least 1, at most 1000.

DuplicateModelsResult#

DuplicateModelsResult

The copies a duplicate operation created, per source model.

Fields

  • resultsarray of ModelsCreatedFromSourcesRequired

    One entry per selected model, in request order. Each entry's new_model_ids are the copies created from that model. The source models themselves are unchanged.

    Show child attributes
    • source_model_idstring (uuid)Required

      The id of the model the new models were created from.

    • new_model_idsarray of string (uuid)sRequired

      Ids of the models created from it, in no particular order.

Error#

Error

The envelope returned by every failed request. See the Errors section of the introduction for the contract: code is stable and machine-readable, message is diagnostic text that may change at any time.

Fields

  • errorobjectRequired
    Show child attributes
    • codeenum ErrorCodeRequired

      Registry of stable error codes. New codes may be added in later releases (this is not a breaking change), so treat unrecognized codes as a generic failure.

      Currently one of the following; more may be added:

      JSON_PARSE_ERROR
      The request body could not be parsed as JSON, or is not a JSON object where one is required.
      JSON_SCHEMA_MATCH_ERROR
      The request body parsed as JSON but does not match the endpoint's request schema. The message includes a JSON pointer to the failing field.
      MISSING_PARAMETER
      A required body field is absent. The message names the field.
      INPUT_ERROR
      A field's value is unusable, such as a malformed id or a reference to a scene or resource that does not exist.
      MISSING_QUERY_PARAMETER
      A required query parameter is absent. The message names the parameter.
      INVALID_QUERY_PARAMETER
      A query parameter has an unparseable or out-of-range value. The message names the parameter and echoes the received value.
      OPERATION_FAILED
      The requested operation started but did not complete successfully. The message carries the underlying reason.
      OPERATION_IN_PROGRESS
      The resource is busy with another operation. Retry after it completes. Returned with HTTP 409.
      NOT_FOUND
      The requested resource does not exist. Returned with HTTP 404.
      ESTIMATION_NOT_SUPPORTED
      The scene's machine type or configuration does not support fast print time estimation. Returned with HTTP 422.
      BUILD_VOLUME_LIMIT_EXCEEDED
      The request needs more scenes than the server can hold at once, so it created none. Opening a .form file with more build volumes than the limit returns it. Returned with HTTP 409.
      INTERNAL_ERROR
      A server-side invariant was violated, not attributable to the request. Returned with HTTP 500.
      UNKNOWN_FAILURE
      An unexpected exception occurred inside PreFormServer. Returned with HTTP 500. The message may be empty.
    • messagestringRequired

      Human-readable description of what went wrong. Not part of the stable contract. Never match on this string.

ErrorCode#

enum ErrorCode

Registry of stable error codes. New codes may be added in later releases (this is not a breaking change), so treat unrecognized codes as a generic failure.

Currently one of the following; more may be added:

JSON_PARSE_ERROR
The request body could not be parsed as JSON, or is not a JSON object where one is required.
JSON_SCHEMA_MATCH_ERROR
The request body parsed as JSON but does not match the endpoint's request schema. The message includes a JSON pointer to the failing field.
MISSING_PARAMETER
A required body field is absent. The message names the field.
INPUT_ERROR
A field's value is unusable, such as a malformed id or a reference to a scene or resource that does not exist.
MISSING_QUERY_PARAMETER
A required query parameter is absent. The message names the parameter.
INVALID_QUERY_PARAMETER
A query parameter has an unparseable or out-of-range value. The message names the parameter and echoes the received value.
OPERATION_FAILED
The requested operation started but did not complete successfully. The message carries the underlying reason.
OPERATION_IN_PROGRESS
The resource is busy with another operation. Retry after it completes. Returned with HTTP 409.
NOT_FOUND
The requested resource does not exist. Returned with HTTP 404.
ESTIMATION_NOT_SUPPORTED
The scene's machine type or configuration does not support fast print time estimation. Returned with HTTP 422.
BUILD_VOLUME_LIMIT_EXCEEDED
The request needs more scenes than the server can hold at once, so it created none. Opening a .form file with more build volumes than the limit returns it. Returned with HTTP 409.
INTERNAL_ERROR
A server-side invariant was violated, not attributable to the request. Returned with HTTP 500.
UNKNOWN_FAILURE
An unexpected exception occurred inside PreFormServer. Returned with HTTP 500. The message may be empty.

EulerAngles#

EulerAngles

Orientation as Euler angles in degrees. Rotations are applied in the order z, then x, then y.

Fields

  • xnumberRequired

    Rotation in degrees around the x axis (applied second).

  • ynumberRequired

    Rotation in degrees around the y axis (applied last).

  • znumberRequired

    Rotation in degrees around the z axis (applied first).

FillBuildChamberRequest#

FillBuildChamberRequest

Duplicates the selected models and packs the copies up to fill_to_height_mm. Unselected models are left in place and act as fixed obstacles.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to duplicate. Omitted or empty means every model in the scene.

  • packing_optionsPackingOptions

    SLS packing parameters shared by the fill-build-chamber operation.

    Show child attributes
    • model_spacing_mmnumber

      Minimum gap to leave between models. Floored at the material's visual collision offset if smaller.

      At least 0.

    • distance_from_wall_mmnumber

      Margin to leave between models and the build volume walls.

      At least 0.

    • seedinteger

      Random seed controlling the packing algorithm. Omitted means a random seed is used each call.

      At least 0, at most 4294967295.

  • fill_to_height_mmnumber

    Height, in mm above the build platform, to fill up to. Defaults to the scene's full build volume height.

    Greater than 0.

FillBuildPlatformRequest#

FillBuildPlatformRequest

Duplicates the selected models and lays out the copies to fill up the build platform with as many copies as fit. Unselected models are left in place and act as fixed obstacles.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to duplicate. Omitted or empty means every model in the scene.

  • layout_optionsLayoutOptions

    SLA layout parameters shared by the fill-build-platform operation.

    Show child attributes
    • model_spacing_mmnumber

      Minimum gap to leave between models.

      At least 0.

      Defaults to 1

    • placement_margin_mmnumber

      Margin to leave between models and the build platform edge.

      At least 0.

      Defaults to 2.5

    • allow_overlapping_supportsboolean

      Allow one model's supports to intersect another model or its supports.

      Defaults to false

    • lock_rotationboolean

      Only translate models and never rotate them, regardless of their individual lock.

      Defaults to false

    • layout_attemptsinteger

      Number of independent layout attempts to try, keeping the best. Defaults to an algorithm-chosen value.

      At least 1, at most 2500.

    • iterations_per_attemptinteger

      Optimization iterations per attempt. Defaults to an algorithm-chosen value.

      At least 1, at most 250000.

FleetControlPrinterGroup#

FleetControlPrinterGroup

A Fleet Control queue: a group of one or more printers managed together through a Formlabs Dashboard queue.

Fields

  • idstringRequired

    The group's stable identifier.

  • product_namestringRequired
  • statusstringRequired

    Human-readable status message. Not machine-readable. Never match on its value.

  • is_connectedbooleanRequired
  • connection_typeenum DeviceConnectionTypeRequired

    How a device is currently connected, if known.

    Currently one of the following; more may be added:

    UNKNOWN
    Connected locally, but the specific interface could not be determined.
    VIRTUAL
    A virtual/simulated device, not a real physical printer.
    REMOTE
    Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
    USB
    Connected directly over USB.
    WIFI
    Connected over the local Wi-Fi network.
    ETHERNET
    Connected over a wired Ethernet network.
    No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
  • firmware_versionstringRequired

    Always empty, since a printer group has no single firmware version.

  • dashboard_group_idstring (uuid)Required

    Id of the group on Formlabs Dashboard.

  • dashboard_queue_idstring (uuid)Required

    Id of the Fleet Control queue on Formlabs Dashboard.

  • ready_to_print_nowbooleanRequired

    If newly uploaded jobs print automatically instead of being queued.

  • queue_pausedbooleanRequired

    If the queue is currently paused.

  • has_form_autobooleanRequired

    If the group includes a Form Auto.

  • supported_machine_type_idsarray of stringsRequired
  • printersarray of objectsRequired

    The individual printers currently in this group.

    Show child attributes
    • idstringRequired

      The printer's serial name.

    • machine_type_idstringRequired

      Canonical machine type id, e.g. "FORM-4-0".

FlyaroundKeyframe#

FlyaroundKeyframe

One frame of an explicit flyaround camera path.

Fields

  • yawnumberRequired

    Camera yaw for this frame, in degrees.

  • pitchnumberRequired

    Camera pitch for this frame, in degrees.

FlyaroundTransform#

any

Renders a .webp animation instead of a single .png. Provide either an explicit transform keyframe list, or frame_count to auto-generate evenly-spaced frames around a full turn starting from the top-level yaw/pitch. At least one of the two is required.

Fields

  • transformarray of FlyaroundKeyframes

    Explicit list of camera keyframes to render, one per animation frame.

    At least 2 items.

    Show child attributes
    • yawnumberRequired

      Camera yaw for this frame, in degrees.

    • pitchnumberRequired

      Camera pitch for this frame, in degrees.

  • frame_countinteger

    Number of evenly-spaced frames to render around a full 360-degree turn. Ignored if transform is present.

    At least 1.

  • ensure_constant_sizeboolean

    When true, every frame is rendered at the same size (the largest needed by any frame) instead of each frame being cropped independently.

    Defaults to true

Form2Device#

Form2Device

Fields

  • idstringRequired

    The printer's serial name.

  • product_namestringRequired
  • statusstringRequired

    Human-readable status message. Not machine-readable. Never match on its value.

  • is_connectedbooleanRequired
  • connection_typeenum DeviceConnectionTypeRequired

    How a device is currently connected, if known.

    Currently one of the following; more may be added:

    UNKNOWN
    Connected locally, but the specific interface could not be determined.
    VIRTUAL
    A virtual/simulated device, not a real physical printer.
    REMOTE
    Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
    USB
    Connected directly over USB.
    WIFI
    Connected over the local Wi-Fi network.
    ETHERNET
    Connected over a wired Ethernet network.
    No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
  • ip_addressstringRequired
  • firmware_versionstringRequired
  • estimated_print_time_remaining_msintegerRequired

    Milliseconds remaining in the current print, if any, and 0 otherwise.

  • tank_idstringRequired
  • tank_material_codestringRequired

    Versioned material code, e.g. "FLGPBK05".

  • cartridge_dataCartridgeDataRequired

    Cartridge data keyed by cartridge id. Unlike every other v1 response field, the keys inside each entry are camelCase, not snake_case: this object is a verbatim passthrough of the printer's internal cartridge tracking data.

    Show child attributes
    • cartridgeMaterialCodestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • cartridgeEstimatedVolumeDispensed_mLnumberRequired

      Estimated volume of material dispensed from this cartridge so far, in mL.

    • cartridgeOriginalVolume_mLnumberRequired

      The cartridge's original, unused volume, in mL.

  • ready_to_print_nowbooleanRequired

    If newly uploaded jobs print automatically instead of being queued.

Form3FamilyDevice#

Form3FamilyDevice

Fields

  • idstringRequired

    The printer's serial name.

  • product_namestringRequired
  • statusstringRequired

    Human-readable status message. Not machine-readable. Never match on its value.

  • is_connectedbooleanRequired
  • connection_typeenum DeviceConnectionTypeRequired

    How a device is currently connected, if known.

    Currently one of the following; more may be added:

    UNKNOWN
    Connected locally, but the specific interface could not be determined.
    VIRTUAL
    A virtual/simulated device, not a real physical printer.
    REMOTE
    Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
    USB
    Connected directly over USB.
    WIFI
    Connected over the local Wi-Fi network.
    ETHERNET
    Connected over a wired Ethernet network.
    No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
  • ip_addressstringRequired
  • firmware_versionstringRequired
  • is_remote_print_enabledbooleanRequired

    If the printer can be started remotely via Formlabs Dashboard.

  • estimated_print_time_remaining_msintegerRequired

    Milliseconds remaining in the current print, if any, and 0 otherwise.

  • tank_idstringRequired
  • tank_material_codestringRequired

    Versioned material code, e.g. "FLGPBK05".

  • cartridge_dataCartridgeDataRequired

    Cartridge data keyed by cartridge id. Unlike every other v1 response field, the keys inside each entry are camelCase, not snake_case: this object is a verbatim passthrough of the printer's internal cartridge tracking data.

    Show child attributes
    • cartridgeMaterialCodestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • cartridgeEstimatedVolumeDispensed_mLnumberRequired

      Estimated volume of material dispensed from this cartridge so far, in mL.

    • cartridgeOriginalVolume_mLnumberRequired

      The cartridge's original, unused volume, in mL.

  • form_auto_statusstringRequired

    Human-readable Form Auto status message. Not machine-readable. Never match on its value.

  • ready_to_print_nowbooleanRequired

    If newly uploaded jobs print automatically instead of being queued.

Form4FamilyDevice#

Form4FamilyDevice

Fields

  • idstringRequired

    The printer's serial name.

  • product_namestringRequired
  • statusstringRequired

    Human-readable status message. Not machine-readable. Never match on its value.

  • is_connectedbooleanRequired
  • connection_typeenum DeviceConnectionTypeRequired

    How a device is currently connected, if known.

    Currently one of the following; more may be added:

    UNKNOWN
    Connected locally, but the specific interface could not be determined.
    VIRTUAL
    A virtual/simulated device, not a real physical printer.
    REMOTE
    Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
    USB
    Connected directly over USB.
    WIFI
    Connected over the local Wi-Fi network.
    ETHERNET
    Connected over a wired Ethernet network.
    No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
  • ip_addressstringRequired
  • firmware_versionstringRequired
  • is_remote_print_enabledbooleanRequired

    If the printer can be started remotely via Formlabs Dashboard.

  • estimated_print_time_remaining_msintegerRequired

    Milliseconds remaining in the current print, if any, and 0 otherwise.

  • tank_idstringRequired
  • tank_material_codestringRequired

    Versioned material code, e.g. "FLGPBK05".

  • cartridge_dataCartridgeDataRequired

    Cartridge data keyed by cartridge id. Unlike every other v1 response field, the keys inside each entry are camelCase, not snake_case: this object is a verbatim passthrough of the printer's internal cartridge tracking data.

    Show child attributes
    • cartridgeMaterialCodestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • cartridgeEstimatedVolumeDispensed_mLnumberRequired

      Estimated volume of material dispensed from this cartridge so far, in mL.

    • cartridgeOriginalVolume_mLnumberRequired

      The cartridge's original, unused volume, in mL.

  • ready_to_print_nowbooleanRequired

    If newly uploaded jobs print automatically instead of being queued.

Fuse1Device#

Fuse1Device

Fields

  • idstringRequired

    The printer's serial name.

  • product_namestringRequired
  • statusstringRequired

    Human-readable status message. Not machine-readable. Never match on its value.

  • is_connectedbooleanRequired
  • connection_typeenum DeviceConnectionTypeRequired

    How a device is currently connected, if known.

    Currently one of the following; more may be added:

    UNKNOWN
    Connected locally, but the specific interface could not be determined.
    VIRTUAL
    A virtual/simulated device, not a real physical printer.
    REMOTE
    Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
    USB
    Connected directly over USB.
    WIFI
    Connected over the local Wi-Fi network.
    ETHERNET
    Connected over a wired Ethernet network.
    No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
  • ip_addressstringRequired
  • firmware_versionstringRequired
  • is_remote_print_enabledbooleanRequired

    If the printer can be started remotely via Formlabs Dashboard.

  • estimated_print_time_remaining_msintegerRequired

    Milliseconds remaining in the current print, if any, and 0 otherwise.

  • bed_temperature_cnumberRequired
  • powder_levelstringRequired

    Human-readable powder level message. Not machine-readable. Never match on its value.

  • printing_layerintegerRequired

    Index of the layer currently printing, if any.

  • printing_guidstringRequired

    Id of the print job currently loaded, if any.

  • cylinder_material_codestringRequired

    Versioned material code, e.g. "FLGPBK05".

  • cylinder_serialstringRequired
  • printer_material_codestringRequired

    Versioned material code, e.g. "FLGPBK05".

  • powder_credit_gnumberRequired

    Remaining powder credit, in grams.

  • ready_to_print_nowbooleanRequired

    If newly uploaded jobs print automatically instead of being queued.

GenericDevice#

GenericDevice

A device with no more specific status information available.

Fields

  • idstringRequired

    The device's serial name or other stable identifier.

  • product_namestringRequired
  • statusstringRequired

    Human-readable status message. Not machine-readable. Never match on its value.

  • is_connectedbooleanRequired
  • connection_typeenum DeviceConnectionTypeRequired

    How a device is currently connected, if known.

    Currently one of the following; more may be added:

    UNKNOWN
    Connected locally, but the specific interface could not be determined.
    VIRTUAL
    A virtual/simulated device, not a real physical printer.
    REMOTE
    Connected via Formlabs Dashboard / Fleet Control, not directly on the local network.
    USB
    Connected directly over USB.
    WIFI
    Connected over the local Wi-Fi network.
    ETHERNET
    Connected over a wired Ethernet network.
    No direct local connection (e.g. a Fleet Control printer group, which has no connection of its own).
  • ip_addressstring

    Present only when connected directly over the local network.

  • firmware_versionstringRequired
  • ready_to_print_nowboolean

    If newly uploaded jobs print automatically instead of being queued. Present only for devices that can receive prints.

GetModelBodyCountRequest#

GetModelBodyCountRequest

Identifies which models in a scene to get the body count of.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to inspect. Omitted or empty means every model in the scene.

HollowRequest#

HollowRequest

Hollows the selected models to the given wall thickness.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to hollow. Omitted or empty means every model in the scene.

  • wall_thickness_mmnumberRequired

    Thickness of the shell wall left after hollowing.

    At least 0.1.

  • feature_size_mmnumber

    Smallest feature size the generated inner surface will resolve. Smaller is higher quality and slower. Values above 1 are silently clamped to 1.

    At least 0.05.

    Defaults to 1

  • accuracynumber

    How closely the inner surface follows the model's true offset surface: 1 is highest quality and slowest, 0 is fastest and coarsest.

    At least 0, at most 1.

    Defaults to 0.5

HollowResult#

HollowResult

The outcome of hollowing for every selected model. Ids are bare UUIDs; their order is unspecified. Model state is not included; fetch it with /v1/scene/model/list/.

Fields

  • hollowed_model_idsarray of string (uuid)sRequired

    Selected models that were hollowed. Never empty.

  • unhollowed_model_idsarray of string (uuid)sRequired

    Selected models that could not be hollowed and were left unchanged. Each one also has a line in warnings.

  • warningsarray of stringsRequired

    Free-text, non-fatal problems hollowing individual models (e.g. wall_thickness_mm too large for a model's geometry), one line per model in unhollowed_model_ids, followed by a suggestion to check manifoldness when any model failed.

  • infosarray of stringsRequired

    Free-text informational notices, if any.

ImportModelRequest#

ImportModelRequest

Loads a file and adds it to the scene as a new model.

Fields

  • scene_idstring (uuid)Required

    The id of the scene to import into.

  • filestringRequired

    Full path to the file to load.

  • repair_behaviorenum RepairBehavior

    What to do when an imported file needs mesh repair.

    Defaults to "ERROR"

    One of:

    REPAIR
    Attempt to repair the model if needed before adding it to the scene.
    ERROR
    Fail the import with OPERATION_FAILED instead of importing a model that needs repair.
    IGNORE
    Import the model as-is, without repairing it.
  • namestring

    Display name for the new model. Defaults to a name derived from the file name.

  • The units to interpret the file's coordinates in.

    Defaults to "DETECTED"

    One of:

    DETECTED
    Use the file's own unit metadata when the format carries it (e.g. STEP, 3MF). Otherwise treat the file as millimeters.
    MILLIMETERS
    Treat the file's coordinates as millimeters, regardless of any unit metadata in the file.
    INCHES
    Treat the file's coordinates as inches, regardless of any unit metadata in the file.
  • Orientation and position constraints on a model, respected by automatic layout and packing operations.

    Defaults to "FREE"

    Currently one of the following; more may be added:

    FREE
    Layout operations may move and rotate the model freely.
    LOCKED_XY_FLIP_ENABLED
    Layout may move the model and spin it about the vertical (Z) axis, and may also flip it over; it may not tilt it otherwise.
    LOCKED_XY_ROTATION_FREE_TRANSLATION
    Layout may move the model and spin it about the vertical (Z) axis, but not tilt it.
    LOCKED_ROTATION_FREE_TRANSLATION
    Layout may move the model but not rotate it at all.
    FULLY_LOCKED
    Layout leaves the model exactly where it is.
  • chordal_tolerance_umnumber

    Tessellation chordal tolerance, in micrometers. Only affects CAD file imports.

    Defaults to 10

  • angle_tolerance_degnumber

    Tessellation angle tolerance, in degrees. Only affects CAD file imports.

    Defaults to 5

  • split_multi_model_fileboolean

    Whether a CAD or 3MF file holding several parts is imported as one model per part. Off by default: the parts arrive as a single combined model, and name and lock apply to it. No effect on STL or OBJ.

    Defaults to false

ImportModelResult#

ImportModelResult

The models an import operation created. Model state is not included; fetch it with /v1/scene/model/list/.

Fields

  • new_modelsarray of ImportedModelsRequired

    One entry per created model, in no particular order. Exactly one entry unless split_multi_model_file split the file into several models. Use each entry's source_part_name / source_part_index, never its array position, to identify which part of the file it came from.

    Show child attributes
    • model_idstring (uuid)Required

      Id of the created model.

    • source_part_namestring

      The name of the part this model was created from, as read from the imported file, before any renaming applied by the scene or the request's name override. Parts with no name in the file get a generated name derived from the file name. Use source_part_index when part names cannot be trusted to identify parts.

    • source_part_indexinteger

      Zero-based position of the source part within the imported file, counting every part in the file (including parts that failed to import). A single-model import reports 0. This is the stable identity for split assemblies whose parts share a name.

ImportUnits#

enum ImportUnits

The units to interpret the file's coordinates in.

One of:

DETECTED
Use the file's own unit metadata when the format carries it (e.g. STEP, 3MF). Otherwise treat the file as millimeters.
MILLIMETERS
Treat the file's coordinates as millimeters, regardless of any unit metadata in the file.
INCHES
Treat the file's coordinates as inches, regardless of any unit metadata in the file.

ImportedModel#

ImportedModel

A model an import created, and which part of the imported file it came from.

Fields

  • model_idstring (uuid)Required

    Id of the created model.

  • source_part_namestring

    The name of the part this model was created from, as read from the imported file, before any renaming applied by the scene or the request's name override. Parts with no name in the file get a generated name derived from the file name. Use source_part_index when part names cannot be trusted to identify parts.

  • source_part_indexinteger

    Zero-based position of the source part within the imported file, counting every part in the file (including parts that failed to import). A single-model import reports 0. This is the stable identity for split assemblies whose parts share a name.

InBoundsDetectionRequest#

InBoundsDetectionRequest

Selects the models to check.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to check. Omitted or empty means every model in the scene.

InBoundsResult#

InBoundsResult

Build-volume verdict for a single model.

Fields

  • in_boundsbooleanRequired

    Whether the model, including its supports, fits inside the build volume at its current position, orientation and scale. The same verdict as the in_bounds field of /v1/scene/model/list/.

LabelApplicationMode#

enum LabelApplicationMode

How a label is applied to a model's surface.

One of:

EMBOSS
Raise the label above the surface by depth_mm.
ENGRAVE
Cut the label into the surface to a depth of depth_mm.

LabelRequest#

LabelRequest

Applies a text label to the surface of the selected models, at a given position and orientation.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to label. Omitted or empty means every model in the scene.

  • orientationEulerAngles or TransformMatrix or DirectionVectorsRequired

    A model orientation, given as exactly one of: Euler angles, a transform matrix, or a pair of direction vectors.

    Show child attributes
    • EulerAnglesoption 1 of 3

      Orientation as Euler angles in degrees. Rotations are applied in the order z, then x, then y.

      Show fields
      • xnumberRequired

        Rotation in degrees around the x axis (applied second).

      • ynumberRequired

        Rotation in degrees around the y axis (applied last).

      • znumberRequired

        Rotation in degrees around the z axis (applied first).

    • TransformMatrixoption 2 of 3

      Orientation as the linear (rotation/scale) part of a 3x3 transform matrix.

      Show fields
      • lineararray of array of numbersRequired

        A 3x3 matrix, given as 3 rows of 3 numbers.

        Exactly 3 items.

    • DirectionVectorsoption 3 of 3

      Orientation as two vectors, in model space, that say which way is "up" and "right" once the model is placed in the scene.

      Show fields
      • z_directionarray of numbersRequired

        Unit vector in model space that will point up (+Z) in the scene.

        Exactly 3 items.

      • x_directionarray of numbersRequired

        Unit vector in model space, perpendicular to z_direction, that will point right (+X) in the scene.

        Exactly 3 items.

  • positionScenePositionRequired

    A position within a printer's build volume, in millimeters, in user coordinate space.

    Show child attributes
    • xnumberRequired

      X position. 0 is the center of the build volume. Positive moves right as you face the printer.

    • ynumberRequired

      Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

    • znumberRequired

      Vertical position. 0 is the surface of the build platform.

  • labelstringRequired

    The text to render.

  • How a label is applied to a model's surface.

    Defaults to "EMBOSS"

    One of:

    EMBOSS
    Raise the label above the surface by depth_mm.
    ENGRAVE
    Cut the label into the surface to a depth of depth_mm.
  • font_size_mmnumberRequired

    Label character height.

    At least 2, at most 20.

  • depth_mmnumberRequired

    Height above the surface (EMBOSS) or depth into it (ENGRAVE).

    At least 0.2, at most 10.

LabelResult#

LabelResult

The result of applying a label to one or more models.

Fields

  • warningsarray of stringsRequired

    Free-text, non-fatal problems encountered while applying the label (e.g. individual characters that could not be created).

  • infosarray of stringsRequired

    Free-text informational notices, if any.

LayerThicknessMm#

number or string

A layer thickness in millimeters, or the literal string "ADAPTIVE" for adaptive layer thickness. A numeric value formatted as a string (e.g. "0.025") is also accepted on input.

LayoutBounds#

LayoutBounds

A custom rectangular region of the build platform to lay out within, in user XY coordinates. All four fields are required together.

Fields

  • x_min_mmnumberRequired
  • x_max_mmnumberRequired
  • y_min_mmnumberRequired
  • y_max_mmnumberRequired

LayoutOptions#

LayoutOptions

SLA layout parameters shared by the fill-build-platform operation.

Fields

  • model_spacing_mmnumber

    Minimum gap to leave between models.

    At least 0.

    Defaults to 1

  • placement_margin_mmnumber

    Margin to leave between models and the build platform edge.

    At least 0.

    Defaults to 2.5

  • allow_overlapping_supportsboolean

    Allow one model's supports to intersect another model or its supports.

    Defaults to false

  • lock_rotationboolean

    Only translate models and never rotate them, regardless of their individual lock.

    Defaults to false

  • layout_attemptsinteger

    Number of independent layout attempts to try, keeping the best. Defaults to an algorithm-chosen value.

    At least 1, at most 2500.

  • iterations_per_attemptinteger

    Optimization iterations per attempt. Defaults to an algorithm-chosen value.

    At least 1, at most 250000.

ListDevicesRequest#

ListDevicesRequest

Optional filter for /v1/device/list/. Omitting the body, or sending one that isn't a JSON object, lists every connected device.

Fields

  • devicesarray of strings

    Device ids to look up, as returned in each device's id. Every id must belong to a currently connected device, or the whole request fails. See the endpoint's Error codes table.

ListModelsRequest#

ListModelsRequest

Identifies which models in a scene to list.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to list. Omitted or empty means every model in the scene.

Lock#

enum Lock

Orientation and position constraints on a model, respected by automatic layout and packing operations.

Currently one of the following; more may be added:

FREE
Layout operations may move and rotate the model freely.
LOCKED_XY_FLIP_ENABLED
Layout may move the model and spin it about the vertical (Z) axis, and may also flip it over; it may not tilt it otherwise.
LOCKED_XY_ROTATION_FREE_TRANSLATION
Layout may move the model and spin it about the vertical (Z) axis, but not tilt it.
LOCKED_ROTATION_FREE_TRANSLATION
Layout may move the model but not rotate it at all.
FULLY_LOCKED
Layout leaves the model exactly where it is.

LoginRequest#

object

Credentials for /v1/login/: either a Dashboard access token, or a username and password. A body mixing the two shapes is rejected.

Fields

  • Username and passwordoption 1 of 2
    Show fields
    • usernamestringRequired

      Formlabs Dashboard account username or email address.

    • passwordstringRequired

      Formlabs Dashboard account password.

  • Access tokenoption 2 of 2
    Show fields
    • access_tokenstringRequired

      A previously issued Formlabs Dashboard access token.

LoginResponse#

LoginResponse

The session tokens for the account that just logged in.

Fields

  • access_tokenstringRequired

    Access token for the newly created session.

  • refresh_tokenstringRequired

    Refresh token for the newly created session. Empty when logging in with access_token rather than a username and password.

MachineTypeId#

string

Canonical machine type id, e.g. "FORM-4-0".

ManifoldCheckResult#

ManifoldCheckResult

Manifold-check outcome for a single model.

Fields

  • is_manifoldbooleanRequired

    Whether the model's mesh is a manifold solid. Equivalent to status == "MANIFOLD".

  • The manifold library's verdict on a mesh. Only MANIFOLD means the mesh is a valid manifold solid.

    Currently one of the following; more may be added:

    MANIFOLD
    The mesh is a closed manifold solid.
    NOT_MANIFOLD
    The mesh has non-manifold geometry, such as open boundaries, holes, or edges/vertices shared inconsistently between triangles.
    NON_FINITE_VERTEX
    The mesh contains a vertex with a NaN or infinite coordinate.
    OTHER_ERROR
    The manifold library rejected the mesh for another reason.

ManifoldCheckStatus#

enum ManifoldCheckStatus

The manifold library's verdict on a mesh. Only MANIFOLD means the mesh is a valid manifold solid.

Currently one of the following; more may be added:

MANIFOLD
The mesh is a closed manifold solid.
NOT_MANIFOLD
The mesh has non-manifold geometry, such as open boundaries, holes, or edges/vertices shared inconsistently between triangles.
NON_FINITE_VERTEX
The mesh contains a vertex with a NaN or infinite coordinate.
OTHER_ERROR
The manifold library rejected the mesh for another reason.

MaterialCode#

string

Versioned material code, e.g. "FLGPBK05".

MaterialSetting#

MaterialSetting

One layer-thickness/print-setting variant of a material.

Fields

  • labelstringRequired

    Display label, e.g. "0.025 mm (Default settings)".

  • scene_settingsSceneSettingsRequired

    Identifies one machine/material/print-setting/layer-thickness combination, as returned by /v1/print-setting/list/. The same field names are used by /v1/print-setting/validate/.

    Show child attributes
    • machine_typestringRequired

      Canonical machine type id, e.g. "FORM-4-0".

    • material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • print_settingstringRequired

      Print setting profile code, e.g. "DEFAULT".

    • layer_thickness_mmnumber or stringRequired

      A layer thickness in millimeters, or the literal string "ADAPTIVE" for adaptive layer thickness. A numeric value formatted as a string (e.g. "0.025") is also accepted on input.

MaterialUsage#

SlaMaterialUsage or SlsMaterialUsage or UnknownMaterialUsage

Material consumption for the scene's models. The shape depends on the scene's printer family. An unrecognized family reports an empty object.

Fields

  • SlaMaterialUsageoption 1 of 2

    Material usage for an SLA-type scene (e.g. Form 4).

    Show fields
    • volume_mlnumberRequired

      Total volume of models and supports in the scene, in milliliters.

    • unsupported_volume_mlnumberRequired

      Total volume of models alone, not including supports, in milliliters.

  • SlsMaterialUsageoption 2 of 2

    Material usage for an SLS-type scene (e.g. Fuse 1+, Fuse X1).

    Show fields
    • total_powder_mlnumberRequired

      Total volume of powder used, including unsintered support powder, in milliliters.

    • total_powder_kgnumberRequired

      Total mass of powder used, including unsintered support powder, in kilograms.

    • total_sintered_powder_mlnumberRequired

      Volume of powder that ends up sintered (part of the finished print), in milliliters.

    • total_sintered_powder_kgnumberRequired

      Mass of powder that ends up sintered (part of the finished print), in kilograms.

    • mass_packing_densitynumberRequired

      Ratio of sintered powder mass to the total build volume.

MinimaDetectionResult#

MinimaDetectionResult

Unsupported-minima-detection outcome for a single model.

Fields

  • minima_countintegerRequired

    Number of unsupported local minima detected on the model. 0 means every low point is currently supported.

    At least 0.

ModelProperties#

ModelProperties

The full description of one model in a scene.

Fields

  • idstring (uuid)Required

    Unique identifier of the model within its scene.

  • namestringRequired

    Display name used within job preparation.

  • positionScenePositionRequired

    A position within a printer's build volume, in millimeters, in user coordinate space.

    Show child attributes
    • xnumberRequired

      X position. 0 is the center of the build volume. Positive moves right as you face the printer.

    • ynumberRequired

      Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

    • znumberRequired

      Vertical position. 0 is the surface of the build platform.

  • orientationEulerAnglesRequired

    Orientation as Euler angles in degrees. Rotations are applied in the order z, then x, then y.

    Show child attributes
    • xnumberRequired

      Rotation in degrees around the x axis (applied second).

    • ynumberRequired

      Rotation in degrees around the y axis (applied last).

    • znumberRequired

      Rotation in degrees around the z axis (applied first).

  • scalenumberRequired

    Scale factor applied to the model.

  • unitsenum UnitsRequired

    The measurement units a model was defined in.

    Currently one of the following; more may be added:

    MILLIMETERS
    Model coordinates are millimeters.
    INCHES
    Model coordinates are inches.
  • bounding_boxobjectRequired

    Axis-aligned bounding box of the model (including generated geometry such as supports) in scene coordinates. Group containers have an empty bounding box, serialized as all zeros.

    Show child attributes
    • min_cornerScenePosition

      A position within a printer's build volume, in millimeters, in user coordinate space.

      Show child attributes
      • xnumberRequired

        X position. 0 is the center of the build volume. Positive moves right as you face the printer.

      • ynumberRequired

        Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

      • znumberRequired

        Vertical position. 0 is the surface of the build platform.

    • max_cornerScenePosition

      A position within a printer's build volume, in millimeters, in user coordinate space.

      Show child attributes
      • xnumberRequired

        X position. 0 is the center of the build volume. Positive moves right as you face the printer.

      • ynumberRequired

        Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

      • znumberRequired

        Vertical position. 0 is the surface of the build platform.

  • original_filestringRequired

    Path of the file the model was imported from.

  • visiblebooleanRequired

    Whether the model is currently shown in the scene.

  • has_supportsbooleanRequired

    Whether support structures have been generated for the model.

  • is_groupbooleanRequired

    Whether this entry is a Part Group container rather than a regular printable model. Group containers have zero volume and an empty bounding box.

  • is_cagebooleanRequired

    Whether the group is a cage. Cages are a subset of groups, so is_cage: true implies is_group: true.

  • in_boundsbooleanRequired

    Whether the model lies entirely within the build volume.

  • raw_mesh_hashstringRequired

    Hash of the raw mesh data, before any transform.

  • canonical_model_hashstringRequired

    Hash of the mesh data together with its position, orientation, and scale.

  • lockenum LockRequired

    Orientation and position constraints on a model, respected by automatic layout and packing operations.

    Defaults to "FREE"

    Currently one of the following; more may be added:

    FREE
    Layout operations may move and rotate the model freely.
    LOCKED_XY_FLIP_ENABLED
    Layout may move the model and spin it about the vertical (Z) axis, and may also flip it over; it may not tilt it otherwise.
    LOCKED_XY_ROTATION_FREE_TRANSLATION
    Layout may move the model and spin it about the vertical (Z) axis, but not tilt it.
    LOCKED_ROTATION_FREE_TRANSLATION
    Layout may move the model but not rotate it at all.
    FULLY_LOCKED
    Layout leaves the model exactly where it is.

ModelRepairResult#

ModelRepairResult

Repair outcome for a single model.

Fields

  • is_manifoldbooleanRequired

    The manifold library's verdict on the repaired mesh, equivalent to a /v1/scene/model/validate/manifoldness/ status of MANIFOLD. false means the best-effort repair left residual defects in the mesh (it was still replaced in the scene).

ModelsCreatedFromSource#

ModelsCreatedFromSource

The models an operation created from one existing model: copies of it, bodies split out of it, or a processed model derived from it.

Fields

  • source_model_idstring (uuid)Required

    The id of the model the new models were created from.

  • new_model_idsarray of string (uuid)sRequired

    Ids of the models created from it, in no particular order.

ModifiedModels#

ModifiedModels

What an operation that changes existing models did: which models it changed. Ids are bare UUIDs; their order is unspecified. Model state is not included; fetch it with /v1/scene/model/list/. Check whether the models still fit with /v1/scene/model/validate/in-bounds/ and whether they overlap other models with /v1/scene/model/validate/interferences/.

Fields

  • modified_model_idsarray of string (uuid)sRequired

    The selected models the operation was applied to.

NewModelIds#

NewModelIds

The ids of the models a scene-mutating operation added, without describing the rest of the scene's state.

Fields

  • new_model_idsarray of string (uuid)sRequired

    Ids of the newly created models, in no particular order.

OnLayoutFailure#

enum OnLayoutFailure

What to do when the layout cannot fit every requested model.

One of:

FAIL_AND_LEAVE_SCENE_UNCHANGED
Fail the request with OPERATION_FAILED. The scene is left unchanged.
EJECT_A_MODEL_AND_RETRY
Greedily remove seeded-random models from the layout and retry until the rest fit, up to max_ejections removals. Ejected models are removed from the scene.

OnPackFailure#

enum OnPackFailure

What to do with models the packer could not place inside the build volume.

One of:

FAIL_AND_LEAVE_SCENE_UNCHANGED
Fail the request with OPERATION_FAILED. The scene is left unchanged.
PARK_OUTSIDE_BUILD_VOLUME
Keep the pack. Models that fit take their packed poses; models that did not are parked beside the build volume, outside it, and reported in unpacked_model_ids. Nothing is removed from the scene.

OpenFormRequest#

OpenFormRequest

Identifies the .form file to load.

Fields

  • filestringRequired

    Path to the .form file to load.

OpenedScene#

OpenedScene

One scene created by /v1/scene/open/: a CreatedScene plus the scene's name within the .form file and the ids of the models loaded into it.

Fields

  • scene_idstring (uuid)Required

    Unique identifier of the new scene.

  • scene_settingsSceneTypeRequired

    The machine/material/print-setting/layer-thickness combination used to create the scene.

    Show child attributes
    • machine_typestringRequired

      Canonical machine type id, e.g. "FORM-4-0".

    • material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • print_settingstringRequired

      Print setting profile code, e.g. "DEFAULT".

    • layer_thickness_mmstringRequired

      Layer thickness in millimeters, always returned as a string: either a numeric string (e.g. "0.025") or the literal "ADAPTIVE" for adaptive layer thickness. Contrast with /v1/print-setting/list/ and /v1/print-setting/validate/, whose layer_thickness_mm is a JSON number (or "ADAPTIVE").

    • custom_print_setting_idstring (uuid)

      Id of the custom print setting the scene was created or updated from, if any (via fps_file). Absent when the scene uses a material-based print setting.

  • new_model_idsarray of string (uuid)sRequired

    Ids of the newly created models, in no particular order.

  • scene_namestringRequired

    Name of this scene within the .form file, distinguishing multiple print jobs saved in one file. The scene remembers it, and /v1/scene/save/ writes it back.

Operation#

Operation

The status of a long-running operation started by a ?async=true request.

Fields

  • idstring (uuid)Required

    The operation's id, as returned in operation_id when it was started.

  • statusenum OperationStatusRequired

    The current state of a long-running operation.

    Currently one of the following; more may be added:

    IN_PROGRESS
    The operation has not finished yet.
    SUCCEEDED
    The operation finished successfully.
    FAILED
    The operation finished with an error. The error envelope is available in the result field of /v1/operation/get/. /v1/operation/list/ reports the status only.
  • progressnumber (float)Required

    Progress of the operation, from 0.0 to 1.0.

OperationAccepted#

OperationAccepted

Returned with 202 Accepted by endpoints called with ?async=true. Poll operation_url (also sent as the Location response header) until the operation's status is terminal. Its result field then holds the response the endpoint would have returned synchronously.

Fields

  • operation_idstring (uuid)Required

    Randomly generated id of the tracked operation.

  • operation_urlstringRequired

    Server-relative URL of this operation's record: /v1/operation/get/?operation_id=<operation_id>. GET it to follow progress and retrieve the result.

  • messagestringRequired

    Human-readable pointer to where the result will appear. Purely informational. Use operation_url programmatically.

OperationStatus#

enum OperationStatus

The current state of a long-running operation.

Currently one of the following; more may be added:

IN_PROGRESS
The operation has not finished yet.
SUCCEEDED
The operation finished successfully.
FAILED
The operation finished with an error. The error envelope is available in the result field of /v1/operation/get/. /v1/operation/list/ reports the status only.

OperationWithResult#

OperationWithResult

One operation's full record, including (once the operation has finished) the result the originating endpoint would have returned synchronously.

Fields

  • idstring (uuid)Required

    The operation's id, as returned in operation_id when it was started.

  • statusenum OperationStatusRequired

    The current state of a long-running operation.

    Currently one of the following; more may be added:

    IN_PROGRESS
    The operation has not finished yet.
    SUCCEEDED
    The operation finished successfully.
    FAILED
    The operation finished with an error. The error envelope is available in the result field of /v1/operation/get/. /v1/operation/list/ reports the status only.
  • progressnumber (float)Required

    Progress of the operation, from 0.0 to 1.0.

  • resultobject

    Present once status is SUCCEEDED or FAILED, absent while IN_PROGRESS. On success this is the JSON body the originating endpoint documents as its 200 response. On failure it is the standard error envelope (error.code, error.message). Endpoints whose synchronous success response has no body leave result absent even after success.

OrientRequest#

OrientRequest

Sets the absolute orientation of the selected models.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to orient. Omitted or empty means every model in the scene.

  • orientationEulerAngles or TransformMatrix or DirectionVectorsRequired

    A model orientation, given as exactly one of: Euler angles, a transform matrix, or a pair of direction vectors.

    Show child attributes
    • EulerAnglesoption 1 of 3

      Orientation as Euler angles in degrees. Rotations are applied in the order z, then x, then y.

      Show fields
      • xnumberRequired

        Rotation in degrees around the x axis (applied second).

      • ynumberRequired

        Rotation in degrees around the y axis (applied last).

      • znumberRequired

        Rotation in degrees around the z axis (applied first).

    • TransformMatrixoption 2 of 3

      Orientation as the linear (rotation/scale) part of a 3x3 transform matrix.

      Show fields
      • lineararray of array of numbersRequired

        A 3x3 matrix, given as 3 rows of 3 numbers.

        Exactly 3 items.

    • DirectionVectorsoption 3 of 3

      Orientation as two vectors, in model space, that say which way is "up" and "right" once the model is placed in the scene.

      Show fields
      • z_directionarray of numbersRequired

        Unit vector in model space that will point up (+Z) in the scene.

        Exactly 3 items.

      • x_directionarray of numbersRequired

        Unit vector in model space, perpendicular to z_direction, that will point right (+X) in the scene.

        Exactly 3 items.

Orientation#

EulerAngles or TransformMatrix or DirectionVectors

A model orientation, given as exactly one of: Euler angles, a transform matrix, or a pair of direction vectors.

Fields

  • EulerAnglesoption 1 of 3

    Orientation as Euler angles in degrees. Rotations are applied in the order z, then x, then y.

    Show fields
    • xnumberRequired

      Rotation in degrees around the x axis (applied second).

    • ynumberRequired

      Rotation in degrees around the y axis (applied last).

    • znumberRequired

      Rotation in degrees around the z axis (applied first).

  • TransformMatrixoption 2 of 3

    Orientation as the linear (rotation/scale) part of a 3x3 transform matrix.

    Show fields
    • lineararray of array of numbersRequired

      A 3x3 matrix, given as 3 rows of 3 numbers.

      Exactly 3 items.

  • DirectionVectorsoption 3 of 3

    Orientation as two vectors, in model space, that say which way is "up" and "right" once the model is placed in the scene.

    Show fields
    • z_directionarray of numbersRequired

      Unit vector in model space that will point up (+Z) in the scene.

      Exactly 3 items.

    • x_directionarray of numbersRequired

      Unit vector in model space, perpendicular to z_direction, that will point right (+X) in the scene.

      Exactly 3 items.

PackingMode#

enum PackingMode

Packing objective used to arrange models within the (SLS) build volume.

One of:

PACK_HEIGHT
Minimize the height the packed models occupy.
PACK_VOLUME
Minimize the volume the packed models occupy.

PackingOptions#

PackingOptions

SLS packing parameters shared by the fill-build-chamber operation.

Fields

  • model_spacing_mmnumber

    Minimum gap to leave between models. Floored at the material's visual collision offset if smaller.

    At least 0.

  • distance_from_wall_mmnumber

    Margin to leave between models and the build volume walls.

    At least 0.

  • seedinteger

    Random seed controlling the packing algorithm. Omitted means a random seed is used each call.

    At least 0, at most 4294967295.

PlugCreated#

PlugCreated

A plug model created while drilling drain holes.

Fields

  • plug_model_idstring (uuid)Required

    The id of the newly created plug model.

  • drilled_model_idstring (uuid)Required

    The id of the pre-existing model that was drilled: the model the plug was cut from and fits back into.

PrintMaterial#

PrintMaterial

A material available on a printer type, with its settings variants.

Fields

  • labelstringRequired

    Display name, e.g. "Black V5".

  • descriptionstringRequired

    Short marketing description of the material. May be empty.

  • material_settingsarray of MaterialSettingsRequired

    Every layer-thickness/print-setting variant of this material.

    Show child attributes
    • labelstringRequired

      Display label, e.g. "0.025 mm (Default settings)".

    • scene_settingsSceneSettingsRequired

      Identifies one machine/material/print-setting/layer-thickness combination, as returned by /v1/print-setting/list/. The same field names are used by /v1/print-setting/validate/.

      Show child attributes
      • machine_typestringRequired

        Canonical machine type id, e.g. "FORM-4-0".

      • material_codestringRequired

        Versioned material code, e.g. "FLGPBK05".

      • print_settingstringRequired

        Print setting profile code, e.g. "DEFAULT".

      • layer_thickness_mmnumber or stringRequired

        A layer thickness in millimeters, or the literal string "ADAPTIVE" for adaptive layer thickness. A numeric value formatted as a string (e.g. "0.025") is also accepted on input.

PrintSceneRequest#

PrintSceneRequest

Slices a scene and uploads the job directly to a printer.

Fields

  • scene_idstring (uuid)Required

    The id of the scene to print.

  • printerstringRequired

    Printer serial name, IP address, or Fleet Control Queue id.

  • job_namestringRequired

    Name of the job.

  • find_printer_timeout_secondsinteger

    Number of seconds to wait to find the given printer.

    At least 0.

    Defaults to 30

  • print_nowboolean

    If true, the job must print immediately. This fails with OPERATION_FAILED if the printer's ready_to_print_now status is not true. If false, the job is uploaded to the printer's local queue instead of printing immediately. Omitting this field defers to the printer's current ready_to_print_now state: prints immediately if ready, queues otherwise.

PrintSettingCode#

string

Print setting profile code, e.g. "DEFAULT".

PrintSettingListRequest#

PrintSettingListRequest

Optionally restricts the print-setting catalog to a single connected printer. An empty object (or no body at all) lists the full catalog.

Fields

  • compatible_withstring

    A connected printer's serial name.

PrintSettingValidateOptions#

PrintSettingValidateOptions

Valid values for the one field omitted from the request, given the other three. Exactly one of these four properties is present.

Fields

  • machine_typesarray of strings
  • material_codesarray of strings
  • print_settingsarray of strings
  • layer_thicknesses_mmarray of number or strings

PrintSettingValidateRequest#

PrintSettingValidateRequest

A (possibly partial) machine_type/material_code/print_setting/ layer_thickness_mm combination to check. At least 3 of the 4 fields must be given. The response reports valid values for the omitted one.

Fields

  • machine_typestring

    Canonical machine type id, e.g. "FORM-4-0".

  • material_codestring

    Versioned material code, e.g. "FLGPBK05".

  • print_settingstring

    Print setting profile code, e.g. "DEFAULT".

  • layer_thickness_mmnumber or string

    A layer thickness in millimeters, or the literal string "ADAPTIVE" for adaptive layer thickness. A numeric value formatted as a string (e.g. "0.025") is also accepted on input.

PrintSettingValidateResponse#

PrintSettingValidateResponse

Fields

  • validbooleanRequired

    Whether at least one shipped print setting matches the fields given.

  • Valid values for the one field omitted from the request, given the other three. Exactly one of these four properties is present.

    Show child attributes
    • machine_typesarray of strings
    • material_codesarray of strings
    • print_settingsarray of strings
    • layer_thicknesses_mmarray of number or strings

PrintSettingsListResponse#

PrintSettingsListResponse

Fields

  • printer_typesarray of PrinterTypesRequired

    Every printer type PreForm ships print settings for, or the single matching connected printer's type if compatible_with was given.

    Show child attributes
    • labelstringRequired

      Display name, e.g. "Form 4".

    • supported_machine_type_idsarray of stringsRequired

      Canonical machine type ids this entry covers.

    • supported_product_namesarray of stringsRequired

      Marketing product names this entry covers.

    • build_volume_dimensions_mmarray of numbersRequired

      Build volume dimensions in millimeters, as [x, y, z].

      Exactly 3 items.

    • materialsarray of PrintMaterialsRequired
      Show child attributes
      • labelstringRequired

        Display name, e.g. "Black V5".

      • descriptionstringRequired

        Short marketing description of the material. May be empty.

      • material_settingsarray of MaterialSettingsRequired

        Every layer-thickness/print-setting variant of this material.

        Show child attributes
        • labelstringRequired

          Display label, e.g. "0.025 mm (Default settings)".

        • scene_settingsSceneSettingsRequired

          Identifies one machine/material/print-setting/layer-thickness combination, as returned by /v1/print-setting/list/. The same field names are used by /v1/print-setting/validate/.

PrinterType#

PrinterType

A printer type/model and the materials it supports.

Fields

  • labelstringRequired

    Display name, e.g. "Form 4".

  • supported_machine_type_idsarray of stringsRequired

    Canonical machine type ids this entry covers.

  • supported_product_namesarray of stringsRequired

    Marketing product names this entry covers.

  • build_volume_dimensions_mmarray of numbersRequired

    Build volume dimensions in millimeters, as [x, y, z].

    Exactly 3 items.

  • materialsarray of PrintMaterialsRequired
    Show child attributes
    • labelstringRequired

      Display name, e.g. "Black V5".

    • descriptionstringRequired

      Short marketing description of the material. May be empty.

    • material_settingsarray of MaterialSettingsRequired

      Every layer-thickness/print-setting variant of this material.

      Show child attributes
      • labelstringRequired

        Display label, e.g. "0.025 mm (Default settings)".

      • scene_settingsSceneSettingsRequired

        Identifies one machine/material/print-setting/layer-thickness combination, as returned by /v1/print-setting/list/. The same field names are used by /v1/print-setting/validate/.

        Show child attributes
        • machine_typestringRequired

          Canonical machine type id, e.g. "FORM-4-0".

        • material_codestringRequired

          Versioned material code, e.g. "FLGPBK05".

        • print_settingstringRequired

          Print setting profile code, e.g. "DEFAULT".

        • layer_thickness_mmnumber or stringRequired

          A layer thickness in millimeters, or the literal string "ADAPTIVE" for adaptive layer thickness. A numeric value formatted as a string (e.g. "0.025") is also accepted on input.

RaftType#

enum RaftType

Which raft style to build under a model's supports.

One of:

FULL_RAFT
A single solid raft under the whole support structure.
MINI_RAFT
A small raft under each touchpoint cluster instead of one solid raft.
MINI_RAFTS_ON_BP
Mini rafts placed directly on the build platform rather than under the touchpoints.

RegenerateSupportsRequest#

RegenerateSupportsRequest

Which supported models to rebuild supports for.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models whose supports to regenerate. Omitted or empty means every model in the scene that has supports.

RenderRequest#

RenderRequest

Identifies the scene to render and where to save the image.

Fields

  • scene_idstring (uuid)Required

    The id of the scene to render.

  • filestringRequired

    Path to save the rendered image to. Must end in .png or .webp. .webp is required when flyaround_transform is present.

    Matches `^.*\.(png|webp)$`.

  • model_idsarray of string (uuid)s

    Ids of the models to make visible in the render (and candidates for ZOOM_ON_MODELS framing). Omitted or [] means every model in the scene.

    Defaults to []

  • Camera framing for a render.

    Defaults to "ZOOM_ON_MODELS"

    One of:

    ZOOM_ON_MODELS
    Frame the camera to fit the selected, visible models.
    FULL_BUILD_VOLUME
    Frame the camera to fit the whole build volume.
    FULL_PLATFORM_WIDTH
    Frame the camera to the platform's full width, at whatever height that implies.
  • image_size_pxinteger

    Maximum image width/height, in pixels. The render is square.

    Defaults to 820

  • crop_to_modelsboolean

    Whether to crop the frame tightly around the visible models instead of leaving margin.

    Defaults to true

  • yawnumber

    Camera yaw, in degrees. Ignored when flyaround_transform.transform is present.

    Defaults to 45

  • pitchnumber

    Camera pitch, in degrees. Ignored when flyaround_transform.transform is present.

    Defaults to 35.264

  • flyaround_transformany

    Renders a .webp animation instead of a single .png. Provide either an explicit transform keyframe list, or frame_count to auto-generate evenly-spaced frames around a full turn starting from the top-level yaw/pitch. At least one of the two is required.

    Show child attributes
    • transformarray of FlyaroundKeyframes

      Explicit list of camera keyframes to render, one per animation frame.

      At least 2 items.

      Show child attributes
      • yawnumberRequired

        Camera yaw for this frame, in degrees.

      • pitchnumberRequired

        Camera pitch for this frame, in degrees.

    • frame_countinteger

      Number of evenly-spaced frames to render around a full 360-degree turn. Ignored if transform is present.

      At least 1.

    • ensure_constant_sizeboolean

      When true, every frame is rendered at the same size (the largest needed by any frame) instead of each frame being cropped independently.

      Defaults to true

RenderViewType#

enum RenderViewType

Camera framing for a render.

One of:

ZOOM_ON_MODELS
Frame the camera to fit the selected, visible models.
FULL_BUILD_VOLUME
Frame the camera to fit the whole build volume.
FULL_PLATFORM_WIDTH
Frame the camera to the platform's full width, at whatever height that implies.

RepairBehavior#

enum RepairBehavior

What to do when an imported file needs mesh repair.

One of:

REPAIR
Attempt to repair the model if needed before adding it to the scene.
ERROR
Fail the import with OPERATION_FAILED instead of importing a model that needs repair.
IGNORE
Import the model as-is, without repairing it.

RepairModelsRequest#

RepairModelsRequest

Selects the models to repair.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to repair. Omitted or empty means every model in the scene.

ReplaceModelRequest#

ReplaceModelRequest

Names the model to replace and the model already in the scene that replaces it.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing both models.

  • model_idstring (uuid)Required

    The id of the model to replace. It is removed from the scene.

  • replacement_model_idstring (uuid)Required

    The id of the model that takes over model_id's pose and supports. It keeps this id and its own layout lock. Must differ from model_id.

ReplaceModelResult#

ReplaceModelResult

The result of replacing a model with another model in the scene. The replacement's id is the request's replacement_model_id; fetch its new state with /v1/scene/model/list/.

Fields

  • warningsarray of enum ReplaceWarningsRequired

    Currently one of the following; more may be added:

    NOT_ALL_SUPPORTS_COMPUTED_SUCCESSFULLY
    Support generation for the new geometry did not finish. The new model may have no supports.
    NOT_ALL_CONTACT_LOCATIONS_APPLIED
    Supports were generated, but not every contact location from the original model's supports could be carried over to the new geometry.

ReplaceWarning#

enum ReplaceWarning

A non-fatal problem carrying over the replaced model's supports to its new geometry.

Currently one of the following; more may be added:

NOT_ALL_SUPPORTS_COMPUTED_SUCCESSFULLY
Support generation for the new geometry did not finish. The new model may have no supports.
NOT_ALL_CONTACT_LOCATIONS_APPLIED
Supports were generated, but not every contact location from the original model's supports could be carried over to the new geometry.

SaveSceneRequest#

SaveSceneRequest

One or more scenes to save as a .form file.

Fields

  • filestringRequired

    Path to write the .form file to.

    At least 1 characters.

  • scene_idsarray of string (uuid)sRequired

    Ids of the scenes to save, in order. A single id saves a single-build-volume .form file. More than one saves a multi-build-volume project file.

    At least 1 items.

  • project_namestring

    Name of the project inside the file, returned by /v1/scene/open/. Omitted means no name is stored.

ScaleRequest#

ScaleRequest

Sets a uniform scale factor on the selected models.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to scale. Omitted or empty means every model in the scene.

  • scalenumberRequired

    The scale factor to apply. Replaces each model's current scale outright. It is not multiplied against the existing value.

    Greater than 0.

Scene#

Scene

A printer/material/print-setting combination and the models placed within its build volume.

Fields

  • idstring (uuid)Required

    Unique identifier of the scene.

  • modelsarray of ModelPropertiesRequired

    The models currently in the scene.

    Show child attributes
    • idstring (uuid)Required

      Unique identifier of the model within its scene.

    • namestringRequired

      Display name used within job preparation.

    • positionScenePositionRequired

      A position within a printer's build volume, in millimeters, in user coordinate space.

      Show child attributes
      • xnumberRequired

        X position. 0 is the center of the build volume. Positive moves right as you face the printer.

      • ynumberRequired

        Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

      • znumberRequired

        Vertical position. 0 is the surface of the build platform.

    • orientationEulerAnglesRequired

      Orientation as Euler angles in degrees. Rotations are applied in the order z, then x, then y.

      Show child attributes
      • xnumberRequired

        Rotation in degrees around the x axis (applied second).

      • ynumberRequired

        Rotation in degrees around the y axis (applied last).

      • znumberRequired

        Rotation in degrees around the z axis (applied first).

    • scalenumberRequired

      Scale factor applied to the model.

    • unitsenum UnitsRequired

      The measurement units a model was defined in.

      Currently one of the following; more may be added:

      MILLIMETERS
      Model coordinates are millimeters.
      INCHES
      Model coordinates are inches.
    • bounding_boxobjectRequired

      Axis-aligned bounding box of the model (including generated geometry such as supports) in scene coordinates. Group containers have an empty bounding box, serialized as all zeros.

      Show child attributes
      • min_cornerScenePosition

        A position within a printer's build volume, in millimeters, in user coordinate space.

        Show child attributes
        • xnumberRequired

          X position. 0 is the center of the build volume. Positive moves right as you face the printer.

        • ynumberRequired

          Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

        • znumberRequired

          Vertical position. 0 is the surface of the build platform.

      • max_cornerScenePosition

        A position within a printer's build volume, in millimeters, in user coordinate space.

        Show child attributes
        • xnumberRequired

          X position. 0 is the center of the build volume. Positive moves right as you face the printer.

        • ynumberRequired

          Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

        • znumberRequired

          Vertical position. 0 is the surface of the build platform.

    • original_filestringRequired

      Path of the file the model was imported from.

    • visiblebooleanRequired

      Whether the model is currently shown in the scene.

    • has_supportsbooleanRequired

      Whether support structures have been generated for the model.

    • is_groupbooleanRequired

      Whether this entry is a Part Group container rather than a regular printable model. Group containers have zero volume and an empty bounding box.

    • is_cagebooleanRequired

      Whether the group is a cage. Cages are a subset of groups, so is_cage: true implies is_group: true.

    • in_boundsbooleanRequired

      Whether the model lies entirely within the build volume.

    • raw_mesh_hashstringRequired

      Hash of the raw mesh data, before any transform.

    • canonical_model_hashstringRequired

      Hash of the mesh data together with its position, orientation, and scale.

    • lockenum LockRequired

      Orientation and position constraints on a model, respected by automatic layout and packing operations.

      Defaults to "FREE"

      Currently one of the following; more may be added:

      FREE
      Layout operations may move and rotate the model freely.
      LOCKED_XY_FLIP_ENABLED
      Layout may move the model and spin it about the vertical (Z) axis, and may also flip it over; it may not tilt it otherwise.
      LOCKED_XY_ROTATION_FREE_TRANSLATION
      Layout may move the model and spin it about the vertical (Z) axis, but not tilt it.
      LOCKED_ROTATION_FREE_TRANSLATION
      Layout may move the model but not rotate it at all.
      FULLY_LOCKED
      Layout leaves the model exactly where it is.
  • scene_settingsSceneTypeRequired

    The machine/material/print-setting/layer-thickness combination used to create the scene.

    Show child attributes
    • machine_typestringRequired

      Canonical machine type id, e.g. "FORM-4-0".

    • material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • print_settingstringRequired

      Print setting profile code, e.g. "DEFAULT".

    • layer_thickness_mmstringRequired

      Layer thickness in millimeters, always returned as a string: either a numeric string (e.g. "0.025") or the literal "ADAPTIVE" for adaptive layer thickness. Contrast with /v1/print-setting/list/ and /v1/print-setting/validate/, whose layer_thickness_mm is a JSON number (or "ADAPTIVE").

    • custom_print_setting_idstring (uuid)

      Id of the custom print setting the scene was created or updated from, if any (via fps_file). Absent when the scene uses a material-based print setting.

  • material_usageSlaMaterialUsage or SlsMaterialUsage or UnknownMaterialUsageRequired

    Material consumption for the scene's models. The shape depends on the scene's printer family. An unrecognized family reports an empty object.

    Show child attributes
    • SlaMaterialUsageoption 1 of 2

      Material usage for an SLA-type scene (e.g. Form 4).

      Show fields
      • volume_mlnumberRequired

        Total volume of models and supports in the scene, in milliliters.

      • unsupported_volume_mlnumberRequired

        Total volume of models alone, not including supports, in milliliters.

    • SlsMaterialUsageoption 2 of 2

      Material usage for an SLS-type scene (e.g. Fuse 1+, Fuse X1).

      Show fields
      • total_powder_mlnumberRequired

        Total volume of powder used, including unsintered support powder, in milliliters.

      • total_powder_kgnumberRequired

        Total mass of powder used, including unsintered support powder, in kilograms.

      • total_sintered_powder_mlnumberRequired

        Volume of powder that ends up sintered (part of the finished print), in milliliters.

      • total_sintered_powder_kgnumberRequired

        Mass of powder that ends up sintered (part of the finished print), in kilograms.

      • mass_packing_densitynumberRequired

        Ratio of sintered powder mass to the total build volume.

  • layer_countintegerRequired

    Number of layers the scene would slice to.

  • build_volumeBuildVolumeRequired

    The build volume geometry for the scene's printer and material.

    Show child attributes
    • dimensions_mmobjectRequired

      Build volume size in millimeters.

      Show child attributes
      • xnumberRequired
      • ynumberRequired
      • znumberRequired
    • fillet_radius_mmnumberRequired

      Radius of the build volume's corner fillets, in millimeters.

SceneLayerThicknessMm#

string

Layer thickness in millimeters, always returned as a string: either a numeric string (e.g. "0.025") or the literal "ADAPTIVE" for adaptive layer thickness. Contrast with /v1/print-setting/list/ and /v1/print-setting/validate/, whose layer_thickness_mm is a JSON number (or "ADAPTIVE").

ScenePosition#

ScenePosition

A position within a printer's build volume, in millimeters, in user coordinate space.

Fields

  • xnumberRequired

    X position. 0 is the center of the build volume. Positive moves right as you face the printer.

  • ynumberRequired

    Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

  • znumberRequired

    Vertical position. 0 is the surface of the build platform.

SceneSettings#

SceneSettings

Identifies one machine/material/print-setting/layer-thickness combination, as returned by /v1/print-setting/list/. The same field names are used by /v1/print-setting/validate/.

Fields

  • machine_typestringRequired

    Canonical machine type id, e.g. "FORM-4-0".

  • material_codestringRequired

    Versioned material code, e.g. "FLGPBK05".

  • print_settingstringRequired

    Print setting profile code, e.g. "DEFAULT".

  • layer_thickness_mmnumber or stringRequired

    A layer thickness in millimeters, or the literal string "ADAPTIVE" for adaptive layer thickness. A numeric value formatted as a string (e.g. "0.025") is also accepted on input.

SceneType#

SceneType

The machine/material/print-setting/layer-thickness combination used to create the scene.

Fields

  • machine_typestringRequired

    Canonical machine type id, e.g. "FORM-4-0".

  • material_codestringRequired

    Versioned material code, e.g. "FLGPBK05".

  • print_settingstringRequired

    Print setting profile code, e.g. "DEFAULT".

  • layer_thickness_mmstringRequired

    Layer thickness in millimeters, always returned as a string: either a numeric string (e.g. "0.025") or the literal "ADAPTIVE" for adaptive layer thickness. Contrast with /v1/print-setting/list/ and /v1/print-setting/validate/, whose layer_thickness_mm is a JSON number (or "ADAPTIVE").

  • custom_print_setting_idstring (uuid)

    Id of the custom print setting the scene was created or updated from, if any (via fps_file). Absent when the scene uses a material-based print setting.

SlaMaterialUsage#

SlaMaterialUsage

Material usage for an SLA-type scene (e.g. Form 4).

Fields

  • volume_mlnumberRequired

    Total volume of models and supports in the scene, in milliliters.

  • unsupported_volume_mlnumberRequired

    Total volume of models alone, not including supports, in milliliters.

SlsMaterialUsage#

SlsMaterialUsage

Material usage for an SLS-type scene (e.g. Fuse 1+, Fuse X1).

Fields

  • total_powder_mlnumberRequired

    Total volume of powder used, including unsintered support powder, in milliliters.

  • total_powder_kgnumberRequired

    Total mass of powder used, including unsintered support powder, in kilograms.

  • total_sintered_powder_mlnumberRequired

    Volume of powder that ends up sintered (part of the finished print), in milliliters.

  • total_sintered_powder_kgnumberRequired

    Mass of powder that ends up sintered (part of the finished print), in kilograms.

  • mass_packing_densitynumberRequired

    Ratio of sintered powder mass to the total build volume.

SplitModelBodiesRequest#

SplitModelBodiesRequest

Identifies which models in a scene to split into one model per disconnected body.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to split. Omitted or empty means every model in the scene.

SplitModelBodiesResult#

SplitModelBodiesResult

The per-body models a split operation created, per source model.

Fields

  • resultsarray of ModelsCreatedFromSourcesRequired

    One entry per selected model, in request order. Each entry's new_model_ids are the per-body models split out of that model, in no particular order (each body's name carries its "(Body N)" index). The source model no longer exists in the scene.

    Show child attributes
    • source_model_idstring (uuid)Required

      The id of the model the new models were created from.

    • new_model_idsarray of string (uuid)sRequired

      Ids of the models created from it, in no particular order.

SupportednessDetectionResult#

SupportednessDetectionResult

Supportedness-detection outcome for a single model.

Fields

  • percent_unsupportednumberRequired

    Percentage of the model's surface that is undersupported in its current orientation and support configuration. 0 means fully supported.

    At least 0, at most 100.

ThinWallDetectionRequest#

ThinWallDetectionRequest

Detect thin walls in the selected models against a thickness threshold.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to analyze. Omitted or empty means every model in the scene, including non-printable ones.

  • threshold_mmnumberRequired

    Wall thickness threshold, in millimeters. Regions thinner than this are flagged as thin.

    Greater than 0.

ThinWallDetectionResult#

ThinWallDetectionResult

Thin-wall-detection outcome for a single model.

Fields

  • statusstringRequired

    Per-model analysis outcome. ANALYZED: analysis ran (see the other fields). TOO_SMALL: too small/thin to voxelize (sub-~2-voxel extent or sub-voxel shell). TOO_LARGE: too large to voxelize within the memory budget at this resolution (often a units mistake). MESH_ERROR: the mesh could not be rasterized (degenerate/broken geometry). For any non-ANALYZED status the model could not be assessed: has_thin_walls is false and thin_regions is empty. These are per-model outcomes, not request errors, and other models still return normally.

    One of:

    ANALYZED
     
    TOO_SMALL
     
    TOO_LARGE
     
    MESH_ERROR
     
  • has_thin_wallsbooleanRequired

    Whether any thin region was found.

  • thin_volume_mm3numberRequired

    Sum of all detected thin regions' volumes, in cubic millimeters. 0 if has_thin_walls is false.

  • thin_region_countintegerRequired

    Number of distinct thin regions detected, equal to the length of thin_regions.

    At least 0.

  • thin_regionsarray of objectsRequired

    Per-region breakdown, sorted by volume descending. Empty if has_thin_walls is false.

    Show child attributes
    • volume_mm3numberRequired

      Volume of this connected thin region, in cubic millimeters.

    • bounding_boxobjectRequired

      Axis-aligned bounding box of the region, in scene coordinates.

      Show child attributes
      • min_cornerScenePosition

        A position within a printer's build volume, in millimeters, in user coordinate space.

        Show child attributes
        • xnumberRequired

          X position. 0 is the center of the build volume. Positive moves right as you face the printer.

        • ynumberRequired

          Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

        • znumberRequired

          Vertical position. 0 is the surface of the build platform.

      • max_cornerScenePosition

        A position within a printer's build volume, in millimeters, in user coordinate space.

        Show child attributes
        • xnumberRequired

          X position. 0 is the center of the build volume. Positive moves right as you face the printer.

        • ynumberRequired

          Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

        • znumberRequired

          Vertical position. 0 is the surface of the build platform.

TransformMatrix#

TransformMatrix

Orientation as the linear (rotation/scale) part of a 3x3 transform matrix.

Fields

  • lineararray of array of numbersRequired

    A 3x3 matrix, given as 3 rows of 3 numbers.

    Exactly 3 items.

TranslateMode#

enum TranslateMode

How to interpret the position of a translate request.

One of:

ABSOLUTE
Set each model's origin to exactly the given coordinates. Translating several models to the same absolute position stacks them.
RELATIVE
Add the given offset to each model's current position, preserving the models' arrangement relative to each other.

TranslateRequest#

TranslateRequest

Moves the selected models. On SLA scenes the z component of position is ignored.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to translate. Omitted or empty means every model in the scene.

  • positionScenePositionRequired

    A position within a printer's build volume, in millimeters, in user coordinate space.

    Show child attributes
    • xnumberRequired

      X position. 0 is the center of the build volume. Positive moves right as you face the printer.

    • ynumberRequired

      Y position. 0 is the center of the build volume. Positive moves away from you as you face the printer.

    • znumberRequired

      Vertical position. 0 is the surface of the build platform.

  • How to interpret the position of a translate request.

    Defaults to "ABSOLUTE"

    One of:

    ABSOLUTE
    Set each model's origin to exactly the given coordinates. Translating several models to the same absolute position stacks them.
    RELATIVE
    Add the given offset to each model's current position, preserving the models' arrangement relative to each other.

Units#

enum Units

The measurement units a model was defined in.

Currently one of the following; more may be added:

MILLIMETERS
Model coordinates are millimeters.
INCHES
Model coordinates are inches.

UnknownMaterialUsage#

UnknownMaterialUsage

Material usage for a scene whose machine family this PreFormServer build does not recognize (machine type UNKN-0-0). Always empty.

UpdateModelRequest#

UpdateModelRequest

Metadata to apply to the selected models. A model's pose is changed through the dedicated scale/orient/translate endpoints, so pose fields are not accepted here.

Fields

  • scene_idstring (uuid)Required

    The id of the scene containing the models.

  • model_idsarray of string (uuid)s

    Ids of the models to update. Omitted or empty means every model in the scene.

  • namestring

    Display name to apply. Applying to more than one model at once gives all of them this same name.

  • The measurement units a model was defined in.

    Currently one of the following; more may be added:

    MILLIMETERS
    Model coordinates are millimeters.
    INCHES
    Model coordinates are inches.
  • Orientation and position constraints on a model, respected by automatic layout and packing operations.

    Defaults to "FREE"

    Currently one of the following; more may be added:

    FREE
    Layout operations may move and rotate the model freely.
    LOCKED_XY_FLIP_ENABLED
    Layout may move the model and spin it about the vertical (Z) axis, and may also flip it over; it may not tilt it otherwise.
    LOCKED_XY_ROTATION_FREE_TRANSLATION
    Layout may move the model and spin it about the vertical (Z) axis, but not tilt it.
    LOCKED_ROTATION_FREE_TRANSLATION
    Layout may move the model but not rotate it at all.
    FULLY_LOCKED
    Layout leaves the model exactly where it is.

UpdateModelResult#

UpdateModelResult

What /v1/scene/model/update/ did: the models it changed, as in ModifiedModels, and any side effects it did not perform.

Fields

  • modified_model_idsarray of string (uuid)sRequired

    The selected models the update was applied to.

  • warningsarray of UpdateModelWarningsRequired
    Show child attributes
    • codestringRequired

      Currently one of the following; more may be added:

      RAFT_LABEL_OUTDATED
      This request renamed the model, and its raft was generated with raft_label_enabled, so the engraved name no longer matches the rename. Regenerate its supports to update the label.
    • model_idstring (uuid)Required

      The model the warning is about.

UpdateModelWarning#

UpdateModelWarning

A side effect /v1/scene/model/update/ did not perform on one model.

Fields

  • codestringRequired

    Currently one of the following; more may be added:

    RAFT_LABEL_OUTDATED
    This request renamed the model, and its raft was generated with raft_label_enabled, so the engraved name no longer matches the rename. Regenerate its supports to update the label.
  • model_idstring (uuid)Required

    The model the warning is about.

UpdateSceneFpsFile#

UpdateSceneFpsFile

Update a scene from a saved .fps print settings file. Custom print settings are persisted so the scene's scene_settings.custom_print_setting_id can identify them later.

Fields

  • scene_idstring (uuid)Required

    The id of the scene to update.

  • fps_filestringRequired

    Full path to the .fps file.

UpdateSceneManual#

UpdateSceneManual

A new machine/material/print-setting/layer-thickness combination to apply to the scene.

Fields

  • scene_idstring (uuid)Required

    The id of the scene to update.

  • machine_typestringRequired

    Canonical machine type id, e.g. "FORM-4-0".

  • material_codestringRequired

    Versioned material code, e.g. "FLGPBK05".

  • print_settingstring

    Print setting profile code, e.g. "DEFAULT".

  • layer_thickness_mmnumber or stringRequired

    A layer thickness in millimeters, accepted as a JSON number, the literal string "ADAPTIVE" for adaptive layer thickness, or a numeric value formatted as a string (e.g. "0.025"). "ADAPTIVE" is accepted only where the settings catalog offers an adaptive variant, on older printer models (see /v1/print-setting/list/).

UpdateSceneRequest#

UpdateSceneManual or UpdateSceneFpsFile

Either a new manual machine/material/print-setting combination, or a saved .fps print settings file, plus the scene_id to update.

Fields

  • UpdateSceneManualoption 1 of 2

    A new machine/material/print-setting/layer-thickness combination to apply to the scene.

    Show fields
    • scene_idstring (uuid)Required

      The id of the scene to update.

    • machine_typestringRequired

      Canonical machine type id, e.g. "FORM-4-0".

    • material_codestringRequired

      Versioned material code, e.g. "FLGPBK05".

    • print_settingstring

      Print setting profile code, e.g. "DEFAULT".

    • layer_thickness_mmnumber or stringRequired

      A layer thickness in millimeters, accepted as a JSON number, the literal string "ADAPTIVE" for adaptive layer thickness, or a numeric value formatted as a string (e.g. "0.025"). "ADAPTIVE" is accepted only where the settings catalog offers an adaptive variant, on older printer models (see /v1/print-setting/list/).

  • UpdateSceneFpsFileoption 2 of 2

    Update a scene from a saved .fps print settings file. Custom print settings are persisted so the scene's scene_settings.custom_print_setting_id can identify them later.

    Show fields
    • scene_idstring (uuid)Required

      The id of the scene to update.

    • fps_filestringRequired

      Full path to the .fps file.

UploadFirmwareRequest#

UploadFirmwareRequest

Firmware upload parameters for /v1/device/upload-firmware/.

Fields

  • printerstringRequired

    Printer serial name, IP address, or Fleet Control Queue id.

  • file_pathstringRequired

    Path, on the machine running PreFormServer, to the firmware .formware or .formware2 file to upload.

UserInfo#

UserInfo

Account information for the logged-in Formlabs Dashboard user. This is largely a passthrough of the Dashboard's own account record, so it may include fields beyond the ones listed here.

Fields

  • usernamestringRequired

    Formlabs Dashboard account username or email address.

  • emailstring

    Account email address.

  • idinteger

    Formlabs Dashboard account id.

  • first_namestring

    Account holder's first name.

  • last_namestring

    Account holder's last name.

Feedback & Bug Reports