Skip to content

Command catalog

Every command an agent may issue, with the payload each one takes. It is the same list get_command_catalog returns at runtime, driving the same pipeline the UI does.

execute_command fills in project_id; the other required fields are yours. A command whose type is not on this list is refused before it reaches the model.

Generated from the app's catalog at version 0.2.0. Regenerate with make docs-catalog.

assembly.create_child

Create a new empty sub-assembly definition and place one occurrence of it inside assembly_id (the parent). Returns the new definition's assembly_id (add parts to it) and the occurrence_id that places it. Editing a definition updates every occurrence of it.

Field Type Required Default
assembly_id string yes
name string no "Sub-assembly"

assembly.joint.set_value

Move a joint to a position and leave it there. 'angle' is degrees about the joint axis, 'offset' is mm along it, both measured from where the joint was created (so 0 is its build pose). Revolute has an angle, slider an offset, cylindrical both; planar and ball are not drivable this way. Everything mated to the joint follows, and the new placements are saved — use it to pose a mechanism. A target beyond the joint's limits stops at the limit rather than failing. Read positions back with get_motion_state.

Field Type Required Default
assembly_id string yes
mate_id string yes
coordinate angle | offset no "angle"
value number yes

assembly.mate.create

Constrain two bodies in an assembly, or give them a joint. Both references name a body (instance_id + target_kind) and a face or edge on it (entity_kind + entity_id from get_topology); target_kind 'origin' means an assembly datum plane/axis instead of a body. Constraints: 'coincident' (faces flush), 'concentric' (axes aligned), 'distance' / 'angle' (need value, mm or degrees), 'fixed' (ground one body, ref_b omitted). Joints leave motion open instead of removing it: 'revolute' (hinge, rotates about the axis), 'slider' (translates along it), 'cylindrical' (both), 'planar' (stays flush, slides and spins), 'ball' (pivots about a point). A joint takes no value; bound it with limit_rot_min_deg / limit_rot_max_deg or limit_trans_min_mm / limit_trans_max_mm. Its position is measured from wherever the parts sit when you create it, so place them at the pose you want to call zero first. Set flip to reverse the direction. Returns the mate id.

Field Type Required Default
assembly_id string yes
mate_type coincident | concentric | distance | angle | fixed | revolute | slider | cylindrical | planar | ball yes
ref_a MateReferencePayload yes
ref_b MateReferencePayload (optional) no
name string no ""
value number (optional) no
expression string (optional) no
flip boolean no false
limit_rot_min_deg number (optional) no
limit_rot_max_deg number (optional) no
limit_trans_min_mm number (optional) no
limit_trans_max_mm number (optional) no

assembly.mate.delete

Delete a mate or joint by id.

Field Type Required Default
assembly_id string yes
mate_id string yes

assembly.mate.update

Edit a mate or joint by mate_id; only provided fields change. Use disabled to switch one off without deleting it, and the limit_* fields to bound a joint's travel.

Field Type Required Default
assembly_id string yes
mate_id string yes
name string (optional) no
value number (optional) no
expression string (optional) no
flip boolean (optional) no
disabled boolean (optional) no
limit_rot_min_deg number (optional) no
limit_rot_max_deg number (optional) no
limit_trans_min_mm number (optional) no
limit_trans_max_mm number (optional) no

assembly_boolean.break

Sever a boolean result's link to its sources, freezing the current shape. The part keeps its geometry but stops tracking source edits.

Field Type Required Default
part_id string yes

assembly_boolean.create

Combine placed parts into a new result part: 'union' merges them, 'cut' subtracts every later source from the first, 'intersect' keeps only the shared volume. Sources are combined where the assembly puts them (world space), not at their model origins, and they are kept rather than consumed — the result is an extra part alongside them, so hide the sources if the result should stand alone. link_mode 'follow_latest' (default) re-captures the result whenever a source changes; 'locked' freezes it. Use check_interference first if you want to know whether the sources actually overlap.

Field Type Required Default
sources list of BooleanSourceRequest yes
operation union | cut | intersect no "union"
assembly_id string (optional) no
link_mode follow_latest | locked no "follow_latest"

assembly_boolean.refresh

Re-capture a boolean result part from its current sources. Only needed for a 'locked' result; 'follow_latest' updates on its own.

Field Type Required Default
part_id string yes

assembly_instance.create

Place another occurrence of an existing assembly definition (assembly_id) inside parent_assembly_id. One definition placed N times is stored once; placement is parent-frame (translation mm, rotation degrees). Placing a definition inside itself (directly or transitively) is rejected as a conflict.

Field Type Required Default
assembly_id string yes
parent_assembly_id string (optional) no
name string (optional) no
placement PlacementRequest (optional) no

assembly_instance.delete

Remove one occurrence (its definition and other occurrences survive; removing the last occurrence re-promotes the definition to a root).

Field Type Required Default
occurrence_id string yes

assembly_instance.rename

Rename a sub-assembly occurrence.

Field Type Required Default
occurrence_id string yes
name string yes

assembly_instance.update_placement

Move one sub-assembly occurrence (the whole placed sub-assembly moves as a rigid body); mates reaching through it re-solve.

Field Type Required Default
occurrence_id string yes
placement PlacementRequest yes

cam.setup.create

Define a CAM manufacturing setup on a part: stock (bbox + margins) plus a list of 2.5D operations. Each operation is {kind, tool_id, face_ids, depth, ...}: kind 'contour' profiles a planar face's outer boundary (side outside/inside/on, climb), 'pocket' area-clears a planar face (its holes become islands; stepover overrides the tool), 'drill' peck-drills selected cylindrical faces (peck, dwell). face_ids are topology ids from get_topology; the target face/hole axis must point along ±Z (top-down 3-axis). depth is the cut depth in mm below the face. Returns the setup id; then call the toolpath generate endpoint to compute paths + G-code.

Field Type Required Default
part_id string yes
name string (optional) no
stock CamStock (optional) no
operations list of CamOperationInput no []
clearance number (optional) no
units mm | inch (optional) no

cam.setup.delete

Delete a CAM setup by id.

Field Type Required Default
part_id string yes
setup_id string yes

cam.setup.update

Edit a CAM setup (setup_id): name, stock, clearance, or the full operations list. Only provided fields change.

Field Type Required Default
part_id string yes
setup_id string yes
name string (optional) no
stock CamStock (optional) no
operations list of CamOperationInput (optional) no
clearance number (optional) no

cam.tool.create

Create a project-level CAM cutting tool (reusable across parts/operations). Fields: name, type ('flat_endmill'), diameter (mm), feed_rate/plunge_rate (mm/min), spindle_rpm, stepover (mm, pocket pass spacing), stepdown (mm, depth per Z level). Returns the tool id. Reference it from CAM operations.

Field Type Required Default
name string (optional) no
type flat_endmill | ball_endmill | drill (optional) no
diameter number (optional) no
flutes integer (optional) no
feed_rate number (optional) no
plunge_rate number (optional) no
spindle_rpm number (optional) no
stepover number (optional) no
stepdown number (optional) no

cam.tool.delete

Delete a CAM tool; clears it from any operations referencing it.

Field Type Required Default
tool_id string yes

cam.tool.update

Edit a CAM tool by tool_id; only provided fields change.

Field Type Required Default
name string (optional) no
type flat_endmill | ball_endmill | drill (optional) no
diameter number (optional) no
flutes integer (optional) no
feed_rate number (optional) no
plunge_rate number (optional) no
spindle_rpm number (optional) no
stepover number (optional) no
stepdown number (optional) no
tool_id string yes

configuration.activate

Activate a configuration by id (its overrides overlay the model on rebuild), or pass configuration_id=null to revert to the base model.

Field Type Required Default
configuration_id string (optional) no

configuration.clear_override

Remove one override from a configuration (kind + target_id), reverting that parameter/feature to its base behaviour in this configuration.

Field Type Required Default
kind parameter | suppression yes
target_id string yes
configuration_id string yes

configuration.create

Create a named configuration (variant) — a set of scoped overrides stored on the project, not a copied model. Returns the new configuration id. Add overrides with configuration.set_override and switch with configuration.activate.

Field Type Required Default
name string yes
description string no ""

configuration.delete

Delete a configuration; if it was active the model reverts to base.

Field Type Required Default
configuration_id string yes

configuration.set_override

Set one scoped override on a configuration. kind='parameter' with expression overrides a parameter (target_id = parameter id); kind='suppression' with suppressed=true/false force-suppresses or force-enables a feature (target_id = feature id). This is how a variant differs from the base.

Field Type Required Default
kind parameter | suppression yes
target_id string yes
expression string (optional) no
suppressed boolean (optional) no
configuration_id string yes

configuration.update

Rename a configuration or change its description (only provided fields change).

Field Type Required Default
name string (optional) no
description string (optional) no
configuration_id string yes

feature.create

Extrude a sketch profile into a solid (boolean_mode new/add/cut/intersect). When the sketch has several closed regions, pick them with region_anchors (an [x,y] point inside each wanted region; preferred — get them from get_sketch_regions) or wire_indices; omit to extrude every region. For a cut, set through_all=true to cut clean through the whole part instead of a fixed distance. Returns the new feature id.

Field Type Required Default
sketch_id string yes
distance number no 10.0
distance_expression string (optional) no
distance2 number (optional) no
distance2_expression string (optional) no
start_offset number no 0.0
start_offset_expression string (optional) no
start_face object (optional) no
name string no "Extrude"
boolean_mode new | add | cut | intersect no "new"
through_all boolean no false
wire_index integer (optional) no
wire_indices list of integer (optional) no
region_anchors list of list of any (optional) no
insert_after_feature_id string (optional) no
part_id string yes

feature.create.chamfer

Bevel one or more edges by a distance (and optional angle, default 45deg). edge_ids are topology ids from get_topology.

Field Type Required Default
edge_ids list of integer yes
allow_best_guess boolean (optional) no
distance number yes
distance_expression string (optional) no
angle number no 45.0
angle_expression string (optional) no
name string no "Chamfer"
insert_after_feature_id string (optional) no
part_id string yes

feature.create.circular_pattern

Repeat the part geometry around an axis. count copies spread over total_angle (default 360deg). The axis defaults to Z through the origin (axis_origin=(0,0,0), axis_dir=(0,0,1)); set axis_origin/axis_dir or datum_axis_id for any other axis.

Field Type Required Default
axis_origin list of any no [0.0, 0.0, 0.0]
axis_dir list of any no [0.0, 0.0, 1.0]
datum_axis_id string (optional) no
count integer no 4
count_expression string (optional) no
total_angle number no 360.0
total_angle_expression string (optional) no
equal_spacing boolean no true
cp_radius number no 0.0
cp_radius_expression string (optional) no
name string no "Circular Pattern"
boolean_mode new | add | cut | intersect no "add"
source_solid_id integer (optional) no
insert_after_feature_id string (optional) no
part_id string yes

feature.create.datum_axis

Create a reference axis (no solid) by mode: 'two_point', 'face_axis', 'plane_intersection', or 'reference_line'. refs lists the referenced entities.

Field Type Required Default
mode two_point | face_axis | plane_intersection | reference_line yes
refs list of DatumReferenceRequest yes
flip boolean no false
name string no "Datum Axis"
insert_after_feature_id string (optional) no
part_id string yes

feature.create.datum_plane

Create a reference plane (no solid) by mode: 'offset' from a base plane (by offset mm), 'midplane' between two parallel planes, 'three_point' through three vertices, 'angle' rotating a base plane by angle degrees around an axis, or 'perpendicular' to an axis or edge at its origin/midpoint. refs lists the referenced entities (one per mode's arity); flip negates the resulting normal. Mirror and split define their plane the same way.

Field Type Required Default
mode offset | midplane | three_point | angle | perpendicular yes
refs list of DatumReferenceRequest yes
offset number no 0.0
offset_expression string (optional) no
angle number no 0.0
angle_expression string (optional) no
flip boolean no false
name string no "Datum Plane"
insert_after_feature_id string (optional) no
part_id string yes

feature.create.draft

Taper faces by a constant draft angle about a neutral plane (for mold release). face_ids and neutral_plane_face_id are topology ids from get_topology; neutral_plane_face_id is a planar face whose outward normal is the pull direction; angle is in degrees (0–90). Set reverse to flip the taper direction.

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
angle number yes
angle_expression string (optional) no
neutral_plane_face_id integer yes
reverse boolean no false
name string no "Draft"
insert_after_feature_id string (optional) no
part_id string yes

feature.create.fillet

Round one or more edges with a constant radius. edge_ids are topology ids of the current part shape (from get_topology). Returns the new feature id.

Field Type Required Default
edge_ids list of integer yes
allow_best_guess boolean (optional) no
radius number yes
radius_expression string (optional) no
name string no "Fillet"
insert_after_feature_id string (optional) no
part_id string yes

feature.create.hole

Drill a parametric hole into a single planar face. face_ids is the planar face id from get_topology; position is the [x, y] face-plane offset (mm) from the face centre. hole_type is 'simple', 'counterbore', or 'countersink'; depth_mode is 'through_all' or 'blind' (then set depth). Size from a standard table (sizing_mode='standard', standard_id 'iso_metric'/'unc', designation e.g. 'M6', fit 'close'/'normal'/'loose'; tapped=true sizes the bore to the tap-drill diameter) or a custom diameter (sizing_mode='custom').

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
position list of any no [0.0, 0.0]
hole_type simple | counterbore | countersink no "simple"
depth_mode blind | through_all no "through_all"
depth number (optional) no
depth_expression string (optional) no
cbore_diameter number (optional) no
cbore_depth number (optional) no
csink_diameter number (optional) no
csink_angle number no 90.0
sizing_mode standard | custom no "standard"
standard_id string (optional) no
designation string (optional) no
fit close | normal | loose no "normal"
tapped boolean no false
diameter number (optional) no
diameter_expression string (optional) no
direction_ref DatumReferenceRequest (optional) no
back_clearance number (optional) no
name string no "Hole"
insert_after_feature_id string (optional) no
part_id string yes

feature.create.linear_pattern

Repeat the part geometry along one or two linear directions. Each direction has a count (>=2) and spacing; boolean_mode 'add' fuses the copies.

Field Type Required Default
dir1 list of any no [1.0, 0.0, 0.0]
spacing1 number no 10.0
spacing1_expression string (optional) no
count1 integer no 2
count1_expression string (optional) no
dir2 list of any no [0.0, 1.0, 0.0]
spacing2 number no 10.0
spacing2_expression string (optional) no
count2 integer no 1
count2_expression string (optional) no
name string no "Linear Pattern"
boolean_mode new | add | cut | intersect no "add"
source_solid_id integer (optional) no
insert_after_feature_id string (optional) no
part_id string yes

feature.create.loft

Loft a solid through two or more sketch profiles (ruled or smooth) — the tool for shapes that change cross-section along their length (e.g. a twisted blade). sketch_ids lists the profiles in order, usually on offset/datum planes at different heights. Pick each profile's region with region_anchors ([x,y] inside each, aligned 1:1 with sketch_ids; from get_sketch_regions) or wire_indices.

Field Type Required Default
sketch_ids list of string yes
ruled boolean no false
solid boolean no true
name string no "Loft"
boolean_mode new | add | cut | intersect no "new"
wire_indices list of integer (optional) no
region_anchors list of list of any (optional) no
insert_after_feature_id string (optional) no
part_id string yes

feature.create.mirror

Mirror the part geometry across a plane. The plane is defined like a datum plane (mode + refs, see FEATURE_CREATE_DATUM_PLANE). boolean_mode 'new' (default) keeps the copy as a separate body, 'add' fuses it, 'cut' subtracts it, 'intersect' keeps the overlap.

Field Type Required Default
mode offset | midplane | three_point | angle | perpendicular yes
refs list of DatumReferenceRequest yes
offset number no 0.0
offset_expression string (optional) no
angle number no 0.0
angle_expression string (optional) no
flip boolean no false
name string no "Mirror"
boolean_mode new | add | cut | intersect no "new"
source_solid_id integer (optional) no
insert_after_feature_id string (optional) no
part_id string yes

feature.create.revolve

Revolve a sketch profile around an axis (sketch-plane 'x'/'y', an explicit axis_origin/axis_dir, or a datum_axis_id). angle defaults to 360deg for a full revolution. Select the profile region with region_anchor ([x,y] inside it, from get_sketch_regions) or wire_index. The cross-section must be closed and not cross the axis.

Field Type Required Default
sketch_id string yes
axis x | y no "x"
axis_origin list of any (optional) no
axis_dir list of any (optional) no
datum_axis_id string (optional) no
angle number no 360.0
angle_expression string (optional) no
angle2 number (optional) no
angle2_expression string (optional) no
name string no "Revolve"
boolean_mode new | add | cut | intersect no "new"
wire_index integer (optional) no
region_anchor list of any (optional) no
insert_after_feature_id string (optional) no
part_id string yes

feature.create.rib

Thicken a sketch profile into a thin support wall (rib/web) unioned with the part. sketch_id references the rib sketch; an open chain is offset by thickness (mm), a closed region (wire_indices/region_anchors) is used directly; side ('symmetric'|'one'|'other') sets the growth direction along the sketch-plane normal. Requires existing geometry.

Field Type Required Default
sketch_id string yes
thickness number yes
thickness_expression string (optional) no
side symmetric | one | other no "symmetric"
wire_indices list of integer (optional) no
region_anchors list of list of any (optional) no
name string no "Rib"
insert_after_feature_id string (optional) no
part_id string yes

feature.create.shell

Hollow the part to a uniform wall thickness, removing the given faces. face_ids are topology ids from get_topology; thickness > 0 is inward.

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
thickness number yes
thickness_expression string (optional) no
name string no "Shell"
insert_after_feature_id string (optional) no
part_id string yes

feature.create.split

Split a solid by a plane into separate bodies. The plane is defined like a datum plane (mode + refs, see FEATURE_CREATE_DATUM_PLANE). source_solid_id picks which solid to split (None = whole shape); keep_solid_ids (indices into the ordered pieces, -normal side first, so flip reverses them) keeps a subset, None keeps all.

Field Type Required Default
mode offset | midplane | three_point | angle | perpendicular yes
refs list of DatumReferenceRequest yes
offset number no 0.0
offset_expression string (optional) no
angle number no 0.0
angle_expression string (optional) no
flip boolean no false
name string no "Split"
source_solid_id integer (optional) no
keep_solid_ids list of integer (optional) no
insert_after_feature_id string (optional) no
part_id string yes

feature.create.surface_pattern

Apply a mathematically-defined relief pattern to a single face. face_ids is the face id from get_topology; function is a displacement expression of u,v (normalised [0,1]) and x,y,z (mm), scaled by amplitude (mm) along the face normal. mode 'smooth' fits a B-spline surface (waves); 'faceted' builds planar facets (low-poly / grips). resolution sets the grid/facet density.

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
function string yes
amplitude number no 1.0
amplitude_expression string (optional) no
mode smooth | faceted no "faceted"
resolution integer no 32
name string no "Surface Pattern"
insert_after_feature_id string (optional) no
part_id string yes

feature.create.sweep

Sweep a profile sketch along a path sketch to create a solid.

Field Type Required Default
profile_sketch_id string yes
path_sketch_id string yes
name string no "Sweep"
boolean_mode new | add | cut | intersect no "new"
wire_index integer (optional) no
region_anchor list of any (optional) no
insert_after_feature_id string (optional) no
part_id string yes

feature.create.thread

Cut a real helical thread into a single cylindrical face. face_ids is the cylindrical face id from get_topology; pitch is the thread pitch in mm.

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
pitch number yes
pitch_expression string (optional) no
handedness right | left no "right"
designation string (optional) no
nominal_diameter number (optional) no
depth_override number (optional) no
depth_override_expression string (optional) no
start_depth number (optional) no
start_depth_expression string (optional) no
end_depth number (optional) no
end_depth_expression string (optional) no
depth_face object (optional) no
standard string (optional) no
name string no "Thread"
insert_after_feature_id string (optional) no
part_id string yes

feature.delete

Delete a feature; cascade-deletes dependents.

Field Type Required Default
part_id string yes
feature_id string yes

feature.reorder

Move a feature to a different position in the part history: it is placed after insert_after_history_id (a feature, sketch or mate id; null moves it to the very start). Reordering is organisational only, so the server trial-rebuilds the new order and refuses anything that would change the resulting model (409) or that breaks the history rules, e.g. a fillet before the solid it rounds (422). Requires the rollback bar to be cleared. Returns the part's feature timeline.

Field Type Required Default
insert_after_history_id string (optional) no
allow_model_change boolean no false
part_id string yes
feature_id string yes

feature.set_detail

Pin how a feature is classified for the simplified display representation of large assemblies. detail=true always omits it, detail=false always keeps it, detail=null reverts to the automatic rule (threads, text emboss and surface patterns are always detail; fillets/chamfers at or below the project simplify threshold are). Display-only: modeled geometry, exports, mass properties and simulation are unaffected.

Field Type Required Default
detail boolean (optional) no
part_id string yes
feature_id string yes

feature.suppress

Suppress (suppressed=true) or un-suppress a feature, excluding it from the shape build. Set include_downstream=true to also suppress later features broken by this one — a one-click clear of a broken cascade. Returns the part's feature timeline with rebuild statuses.

Field Type Required Default
suppressed boolean yes
include_downstream boolean no false
part_id string yes
feature_id string yes

feature.update

Edit an existing extrude feature (feature_id) — change distance, boolean_mode, through_all, etc. Re-sends the full extrude definition.

Field Type Required Default
sketch_id string yes
distance number no 10.0
distance_expression string (optional) no
distance2 number (optional) no
distance2_expression string (optional) no
start_offset number no 0.0
start_offset_expression string (optional) no
start_face object (optional) no
name string no "Extrude"
boolean_mode new | add | cut | intersect no "new"
through_all boolean no false
wire_index integer (optional) no
wire_indices list of integer (optional) no
region_anchors list of list of any (optional) no
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.chamfer

Edit an existing chamfer (feature_id): change distance/angle/edges.

Field Type Required Default
edge_ids list of integer yes
allow_best_guess boolean (optional) no
distance number yes
distance_expression string (optional) no
angle number no 45.0
angle_expression string (optional) no
name string no "Chamfer"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.circular_pattern

Edit an existing circular pattern (feature_id): change axis/count/angle.

Field Type Required Default
axis_origin list of any no [0.0, 0.0, 0.0]
axis_dir list of any no [0.0, 0.0, 1.0]
datum_axis_id string (optional) no
count integer no 4
count_expression string (optional) no
total_angle number no 360.0
total_angle_expression string (optional) no
equal_spacing boolean no true
cp_radius number no 0.0
cp_radius_expression string (optional) no
name string no "Circular Pattern"
boolean_mode new | add | cut | intersect no "add"
source_solid_id integer (optional) no
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.datum_axis

Edit an existing datum axis (feature_id): change its definition.

Field Type Required Default
mode two_point | face_axis | plane_intersection | reference_line yes
refs list of DatumReferenceRequest yes
flip boolean no false
name string no "Datum Axis"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.datum_plane

Edit an existing datum plane (feature_id): change its definition.

Field Type Required Default
mode offset | midplane | three_point | angle | perpendicular yes
refs list of DatumReferenceRequest yes
offset number no 0.0
offset_expression string (optional) no
angle number no 0.0
angle_expression string (optional) no
flip boolean no false
name string no "Datum Plane"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.draft

Edit an existing draft (feature_id): change angle/faces/neutral plane/reverse.

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
angle number yes
angle_expression string (optional) no
neutral_plane_face_id integer yes
reverse boolean no false
name string no "Draft"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.fillet

Edit an existing fillet (feature_id): change radius/edges. Re-sends the full fillet definition.

Field Type Required Default
edge_ids list of integer yes
allow_best_guess boolean (optional) no
radius number yes
radius_expression string (optional) no
name string no "Fillet"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.hole

Edit an existing hole (feature_id): change size/type/depth/position/tapped/face.

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
position list of any no [0.0, 0.0]
hole_type simple | counterbore | countersink no "simple"
depth_mode blind | through_all no "through_all"
depth number (optional) no
depth_expression string (optional) no
cbore_diameter number (optional) no
cbore_depth number (optional) no
csink_diameter number (optional) no
csink_angle number no 90.0
sizing_mode standard | custom no "standard"
standard_id string (optional) no
designation string (optional) no
fit close | normal | loose no "normal"
tapped boolean no false
diameter number (optional) no
diameter_expression string (optional) no
direction_ref DatumReferenceRequest (optional) no
back_clearance number (optional) no
name string no "Hole"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.linear_pattern

Edit an existing linear pattern (feature_id): change direction/count/spacing.

Field Type Required Default
dir1 list of any no [1.0, 0.0, 0.0]
spacing1 number no 10.0
spacing1_expression string (optional) no
count1 integer no 2
count1_expression string (optional) no
dir2 list of any no [0.0, 1.0, 0.0]
spacing2 number no 10.0
spacing2_expression string (optional) no
count2 integer no 1
count2_expression string (optional) no
name string no "Linear Pattern"
boolean_mode new | add | cut | intersect no "add"
source_solid_id integer (optional) no
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.loft

Edit an existing loft (feature_id): change profiles/ruled/solid.

Field Type Required Default
sketch_ids list of string yes
ruled boolean no false
solid boolean no true
name string no "Loft"
boolean_mode new | add | cut | intersect no "new"
wire_indices list of integer (optional) no
region_anchors list of list of any (optional) no
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.mirror

Edit an existing mirror (feature_id): re-sends the full plane definition (mode + refs) and boolean_mode.

Field Type Required Default
mode offset | midplane | three_point | angle | perpendicular yes
refs list of DatumReferenceRequest yes
offset number no 0.0
offset_expression string (optional) no
angle number no 0.0
angle_expression string (optional) no
flip boolean no false
name string no "Mirror"
boolean_mode new | add | cut | intersect no "new"
source_solid_id integer (optional) no
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.revolve

Edit an existing revolve (feature_id): change axis/angle/etc.

Field Type Required Default
sketch_id string yes
axis x | y no "x"
axis_origin list of any (optional) no
axis_dir list of any (optional) no
datum_axis_id string (optional) no
angle number no 360.0
angle_expression string (optional) no
angle2 number (optional) no
angle2_expression string (optional) no
name string no "Revolve"
boolean_mode new | add | cut | intersect no "new"
wire_index integer (optional) no
region_anchor list of any (optional) no
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.rib

Edit an existing rib (feature_id): change sketch/thickness/side/region.

Field Type Required Default
sketch_id string yes
thickness number yes
thickness_expression string (optional) no
side symmetric | one | other no "symmetric"
wire_indices list of integer (optional) no
region_anchors list of list of any (optional) no
name string no "Rib"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.shell

Edit an existing shell (feature_id): change thickness/removed faces.

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
thickness number yes
thickness_expression string (optional) no
name string no "Shell"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.split

Edit an existing split (feature_id): re-sends the full plane definition (mode + refs), source_solid_id and keep_solid_ids.

Field Type Required Default
mode offset | midplane | three_point | angle | perpendicular yes
refs list of DatumReferenceRequest yes
offset number no 0.0
offset_expression string (optional) no
angle number no 0.0
angle_expression string (optional) no
flip boolean no false
name string no "Split"
source_solid_id integer (optional) no
keep_solid_ids list of integer (optional) no
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.surface_pattern

Edit an existing surface pattern (feature_id): change function/amplitude/mode/resolution/face.

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
function string yes
amplitude number no 1.0
amplitude_expression string (optional) no
mode smooth | faceted no "faceted"
resolution integer no 32
name string no "Surface Pattern"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.sweep

Edit an existing sweep (feature_id): change profile/path sketches.

Field Type Required Default
profile_sketch_id string yes
path_sketch_id string yes
name string no "Sweep"
boolean_mode new | add | cut | intersect no "new"
wire_index integer (optional) no
region_anchor list of any (optional) no
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

feature.update.thread

Edit an existing thread (feature_id): change pitch/handedness/etc.

Field Type Required Default
face_ids list of integer yes
allow_best_guess boolean (optional) no
pitch number yes
pitch_expression string (optional) no
handedness right | left no "right"
designation string (optional) no
nominal_diameter number (optional) no
depth_override number (optional) no
depth_override_expression string (optional) no
start_depth number (optional) no
start_depth_expression string (optional) no
end_depth number (optional) no
end_depth_expression string (optional) no
depth_face object (optional) no
standard string (optional) no
name string no "Thread"
insert_after_feature_id string (optional) no
part_id string yes
feature_id string yes

flow.create

Define a flow (CFD) study on a part: air or water moving around it, or the part spinning in it. mode 'tunnel' (default) blows a free stream at speed m/s along inlet_axis ('+x'..'-z') and reports the force and the moment on the body (10 m/s is a reasonable default in air, 1 m/s in water — water is a thousand times denser, so air's speeds pose a Reynolds number this method has no business answering); mode 'rotation' spins the part at rpm about axis_origin/axis_dir and reports volumetric flow rate and torque. Any body may rotate, not only a bladed one; the axis is required in rotation mode, and a study created on a part that has a circular pattern is seeded from it. An axis on a tunnel study is optional and means something different: the result then also reports axis_torque_n_mm, how hard the stream twists the static part about it. fluid picks the working fluid {preset: 'air'|'water'|'custom', density kg/m3, dynamic_viscosity Pa*s}. resolution is a runtime budget, 'draft' | 'standard' | 'fine' (roughly 1, 5 and 10 minutes); the lattice cell size is derived from it, so leave cell_size unset unless reproducing an exact run. domain is the flow volume {min, max} in mm and is auto-sized around the part when unset: a tunnel about two and a half body-lengths long with the part forward of centre, a rotating body in a duct at 1.2x the tip radius. Returns the study id; then call run_flow_study to solve it. This is a design-stage trend tool on a staircase lattice, not a certified answer: read every number it returns as an order of magnitude with a reliable direction, and a rotating body's torque and shaft power especially so.

Field Type Required Default
mode tunnel | rotation (optional) no
fluid FlowFluidInput (optional) no
inlet_axis +x | -x | +y | -y | +z | -z (optional) no
speed number (optional) no
flow_throughs number (optional) no
axis_origin list of any (optional) no
axis_dir list of any (optional) no
rpm number (optional) no
revolutions number (optional) no
domain FlowDomainInput (optional) no
resolution draft | standard | fine (optional) no
cell_size number (optional) no
slice FlowSliceInput (optional) no
streamline_seeds integer (optional) no
part_id string yes
name string (optional) no

flow.delete

Delete a flow study by id.

Field Type Required Default
part_id string yes
study_id string yes

flow.update

Edit a flow study (study_id): change name, mode, fluid, inlet_axis, speed, flow_throughs, rpm, revolutions, axis_origin/axis_dir, domain, resolution, cell_size, slice or streamline_seeds. Only provided fields change; send domain or cell_size as null to put them back on auto. Switching mode to 'rotation' does not seed an axis — only creating a study does — so set axis_origin/axis_dir if the study has none. Changing a tunnel study's axis does not invalidate a finished solve: the torque about it is projected from the result when it is read.

Field Type Required Default
mode tunnel | rotation (optional) no
fluid FlowFluidInput (optional) no
inlet_axis +x | -x | +y | -y | +z | -z (optional) no
speed number (optional) no
flow_throughs number (optional) no
axis_origin list of any (optional) no
axis_dir list of any (optional) no
rpm number (optional) no
revolutions number (optional) no
domain FlowDomainInput (optional) no
resolution draft | standard | fine (optional) no
cell_size number (optional) no
slice FlowSliceInput (optional) no
streamline_seeds integer (optional) no
part_id string yes
study_id string yes
name string (optional) no

import.heal

Heal an imported part's geometry (feature_id of its import feature): sew open shells, fix invalid wires/solids, and merge coplanar faces. heal=true applies the repair, heal=false reverts to the raw import. Returns the rebuild status, diagnostics, and a before/after summary. Useful before referencing or remodeling imported geometry.

Field Type Required Default
part_id string yes
feature_id string yes
heal boolean no true

import.set_units

Correct an imported part's unit scale (feature_id of its import feature). units_mm is millimetres per source unit (1=mm, 10=cm, 1000=m, 25.4=inch, 304.8=ft); use it when an STL has no units or a STEP/IGES was tagged with the wrong unit. Rescales without re-import.

Field Type Required Default
part_id string yes
feature_id string yes
units_mm number yes

material.create

Create a custom project material. Pass derive_from='builtin:' to copy a built-in (from the materials library) as an editable starting point, or supply appearance/mechanical/printing directly. The optional printing group makes the material printable and supplies the FDM filament settings: family ('pla'/'petg'/'tpu'), nozzle_temp & bed_temp (+ first_layer_* variants, °C), fan/cooling and flow_ratio/diameter/max_volumetric_speed. Returns the material.

Field Type Required Default
derive_from string (optional) no
library_id string (optional) no
name string (optional) no
category thermoplastic | filled_composite | bio_based | metal | custom (optional) no
appearance MaterialAppearance (optional) no
mechanical MaterialMechanical (optional) no
thermal MaterialThermal (optional) no
chemical MaterialChemical (optional) no
rheology MaterialRheology (optional) no
filler MaterialFiller (optional) no
printing MaterialPrinting (optional) no

material.delete

Delete a custom material; clears it from any parts referencing it.

Field Type Required Default
material_id string yes

material.update

Edit a custom material (name/category/appearance/mechanical/printing). Only provided fields change; printing=null makes a material unprintable. Built-in materials are read-only — derive a copy first.

Field Type Required Default
material_id string yes
name string (optional) no
category thermoplastic | filled_composite | bio_based | metal | custom (optional) no
appearance MaterialAppearance (optional) no
mechanical MaterialMechanical (optional) no
thermal MaterialThermal (optional) no
chemical MaterialChemical (optional) no
rheology MaterialRheology (optional) no
filler MaterialFiller (optional) no
printing MaterialPrinting (optional) no

parameter.create

Create a named project parameter from an expression (e.g. 'width' = '40'). Parameters can be referenced in dimension expressions.

Field Type Required Default
name string yes
expression string yes
description string no ""

parameter.delete

Delete a parameter by id.

Field Type Required Default
param_id string yes

parameter.update

Rename or re-express an existing parameter.

Field Type Required Default
name string yes
expression string yes
description string no ""
param_id string yes

part.assign_material

Assign a material (built-in or custom id) to a part, or clear it with material_id=null. Drives appearance, mass, 3MF export colour, and the filament settings a slice setup prints the part with. For a part made of several solids, solid_id (a 0-based solid ordinal, as reported by get_topology) assigns that solid alone, overriding the part's own material; giving two solids different printable materials is what makes the part print multi-material.

Field Type Required Default
part_id string yes
material_id string (optional) no
solid_id integer (optional) no

part.create

Create a new (empty) part to hold sketches and features. Returns the new part id. The first step when modeling from scratch.

Field Type Required Default
name string yes
assembly_id string (optional) no

part.delete

Delete a part (and all its sketches/features).

Field Type Required Default
part_id string yes

part.duplicate

Deep-copy a part (all sketches, features, bodies) into an independent, editable part. Returns the new part id.

Field Type Required Default
name string (optional) no
assembly_id string (optional) no
part_id string yes

part.rename

Rename a part by id.

Field Type Required Default
part_id string yes
name string yes

part.update_rollback

Move the part's rollback bar: feature_id builds only up to and including that feature (later ones are rolled back); null clears the bar and rebuilds everything.

Field Type Required Default
feature_id string (optional) no
before_start boolean no false
part_id string yes

project.redo

Re-apply the last change undone by project.undo.

Field Type Required Default

project.set_simplify_threshold

Set the project's simplify threshold in mm (default 2). Fillets with radius and chamfers with distance at or below it are omitted from the simplified display representation. Display-only: it never changes the modeled geometry.

Field Type Required Default
threshold number yes

project.undo

Revert the most recent change (undo the last mutation). Use this to back out a mistake instead of deleting and rebuilding geometry.

Field Type Required Default

simulation.create

Define a stress study on a part. kind 'static' (default) is the linear-static analysis described below; kind 'warpage' instead predicts the residual stress and distortion the part is left with after printing — it needs print_setup_id and ignores fixtures, loads and gravity, being driven by the part's own contraction while it stands on the bed. For a static study: fixed_face_ids are faces to fully clamp and fixed_edge_ids are edges to clamp the same way (use a face where one exists — an edge clamp is a stress singularity, so the peak stress and factor of safety at it are mesh-dependent); loads is a list of {kind, target_kind, face_id|edge_id, magnitude, direction, flip}: target_kind 'face' (default) loads a face by face_id, 'edge' applies a line load to an edge by edge_id (force only, needs an explicit direction). kind 'force' applies magnitude N along direction (a 3-vector; defaults to a face's inward normal), kind 'pressure' applies magnitude MPa along the inward face normal. Set direction_mode='radial' (force only, on a cylindrical face or circular edge) to push magnitude N radially outward from the geometry's axis, or 'tangential' to apply it circumferentially about the axis (a torque — for gears/shaft torsion); axis_origin/axis_dir override the auto-detected axis. Set flip=true to reverse the direction (force/radial/tangential) or pull outward in tension (pressure). Set gravity to a 3-vector acceleration in m/s² (e.g. (0, 0, -9.81)) to add self-weight over the whole part; omit for none. All face_id/edge_id values are topology ids from get_topology. The part needs a material with Young's modulus, Poisson ratio and yield strength (assign one with part.assign_material; derive a built-in metal/plastic if needed). Returns the study id. Then call run_stress_study to solve and read max von Mises stress, displacement and factor of safety — if the factor of safety is too low, thicken the geometry or pick a stronger material and re-run to close the loop.

Field Type Required Default
part_id string yes
name string (optional) no
kind static | warpage no "static"
fixed_face_ids list of integer yes
fixed_edge_ids list of integer no []
loads list of SimLoadInput yes
gravity list of any (optional) no
max_size number (optional) no
print_setup_id string (optional) no

simulation.delete

Delete a stress study by id.

Field Type Required Default
part_id string yes
study_id string yes

simulation.update

Edit a stress study (study_id): change name, kind ('static'/'warpage'), fixed_face_ids, fixed_edge_ids, loads, gravity (self-weight m/s² 3-vector, or null to disable), print_setup_id (null to solve as solid material) or max_size (target mesh element size in mm). Only provided fields change.

Field Type Required Default
part_id string yes
study_id string yes
name string (optional) no
kind static | warpage (optional) no
fixed_face_ids list of integer (optional) no
fixed_edge_ids list of integer (optional) no
loads list of SimLoadInput (optional) no
gravity list of any (optional) no
max_size number (optional) no
print_setup_id string (optional) no

sketch.arc3

Create a single arc through three points p1 (start), p2 (on the arc), p3 (end), each [x,y]. Use this instead of authoring raw arc [cx,cy,r,start,end] params, which are error-prone to compute.

Field Type Required Default
part_id string yes
sketch_id string yes
p1 list of any yes
p2 list of any yes
p3 list of any yes

sketch.chamfer

Bevel a sketch corner with the given setback distance. Same selection modes as sketch.fillet.

Field Type Required Default
element_id_a string (optional) no
element_id_b string (optional) no
element_ids list of string (optional) no
distance number yes
part_id string yes
sketch_id string yes

sketch.constraint.add

Add geometric/dimensional constraints to a sketch and run the solver. Use to make a sketch fully constrained. Supported operand combinations: tangent — line/axis with circle/arc, or two curves; equal — two lines or two curves; parallel/perpendicular/collinear/angle — lines and origin axes; concentric — two curves; radius/diameter — one circle or arc; midpoint — a point then the line it bisects; point_on_line/point_on_circle/point_on_arc — a point then the curve; distance — two points, one line's length, or a line with another line/axis. Point indices: line 0-1, arc 0=centre 1-2=endpoints, circle/point 0. distance/distance_x/distance_y/radius/diameter/angle require a value (angle in radians); symmetric requires axis 'x' or 'y'. Other combinations are rejected.

Field Type Required Default
part_id string yes
sketch_id string yes
constraints list of SketchConstraintRequest yes

sketch.constraint.delete

Remove a constraint (constraint_id) from a sketch and re-solve.

Field Type Required Default
part_id string yes
sketch_id string yes
constraint_id string yes

sketch.constraint.toggle

Edit a constraint (constraint_id): disable/enable, set value or expression, toggle driving, rename, or re-state the same operands as another constraint_type (e.g. point_on_arc -> point_on_circle, keeping the id), then re-solve.

Field Type Required Default
part_id string yes
sketch_id string yes
constraint_id string yes
disabled boolean (optional) no
value number (optional) no
expression string (optional) no
driving boolean (optional) no
name string (optional) no
constraint_type string (optional) no
source string (optional) no

sketch.copy

Deep-copy a sketch (elements + constraints) to target_part_id (may be the same part).

Field Type Required Default
target_part_id string yes
name string (optional) no
part_id string yes
sketch_id string yes

sketch.create

Create a sketch on an origin plane (XY/XZ/YZ) or off-origin. For a raised or pitched sketch set offset (mm along the plane normal) and/or tilt_angle (deg about the plane X axis) — useful for stacking loft profiles or angling a feature. Or pass plane_def {origin,normal,x_dir}, face_ref {part_id,face_id} to sketch on a face, edge_ref, or datum_ref. Returns the new sketch id.

Field Type Required Default
name string no "Sketch"
plane string no "XY"
plane_def PlaneDefRequest (optional) no
offset number no 0.0
tilt_angle number no 0.0
face_ref object (optional) no
edge_ref object (optional) no
datum_ref object (optional) no
insert_after_feature_id string (optional) no
part_id string yes

sketch.delete

Delete a sketch; cascade-deletes features that consume it.

Field Type Required Default
part_id string yes
sketch_id string yes

sketch.element.delete

Delete one or more sketch elements (element_ids) and any constraints referencing them, then re-solve.

Field Type Required Default
element_ids list of string yes
part_id string yes
sketch_id string yes

sketch.element.toggle_construction

Set the construction flag on sketch elements (element_ids). Construction geometry is auxiliary and not part of profiles.

Field Type Required Default
element_ids list of string yes
construction boolean yes
part_id string yes
sketch_id string yes

sketch.element.trim

Trim a sketch element at its intersections; the segment nearest (click_x, click_y) is removed, remaining segments kept.

Field Type Required Default
element_id string yes
click_x number yes
click_y number yes
part_id string yes
sketch_id string yes

sketch.elements.add

Add geometry elements (line/circle/arc/point) to a sketch. Each element has a geometry_type and a flat params list in sketch-plane coordinates (line [x1,y1,x2,y2]; circle [cx,cy,r]; arc [cx,cy,r,start_deg,end_deg]; point [x,y]). Each line/circle/arc is AUTOMATICALLY given a driving dimension (length/radius) and touching endpoints are AUTOMATICALLY welded with coincident constraints, so a connected chain closes without extra work — do not re-add those dimensions or coincidences. For a rectangle or an arc through three points, prefer sketch.rectangle / sketch.arc3.

Field Type Required Default
part_id string yes
sketch_id string yes
elements list of SketchElementRequest yes

sketch.elements.offset

Create associative parallel offset copies of element_ids at the given distance (positive = outward; negative = inward).

Field Type Required Default
element_ids list of string no
distance number yes
distance_expression string (optional) no
part_id string yes
sketch_id string yes

sketch.fillet

Round a sketch corner with an arc of the given radius. Provide element_id_a + element_id_b for one corner, or element_ids (>=2) for all shared corners.

Field Type Required Default
element_id_a string (optional) no
element_id_b string (optional) no
element_ids list of string (optional) no
radius number yes
part_id string yes
sketch_id string yes

sketch.intersect_geometry

Intersect the part body with the sketch plane, adding the cross-section outline as static (non-associative) sketch geometry. Set construction=true to add it as construction geometry. Section curves the sketch cannot represent (an ellipse from an oblique cylinder, a spline) are returned in 'skipped'.

Field Type Required Default
construction boolean no false
part_id string yes
sketch_id string yes

sketch.mirror

Create associative mirror copies of element_ids reflected across the straight line element axis_element_id. Copies follow their sources and the axis on every solve.

Field Type Required Default
element_ids list of string no
axis_element_id string yes
part_id string yes
sketch_id string yes

sketch.pattern.delete

Delete a sketch pattern (pattern_id). keep_elements=true leaves the copies as independent geometry; false removes them.

Field Type Required Default
part_id string yes
sketch_id string yes
pattern_id string yes
keep_elements boolean no true

sketch.polygon

Create a regular polygon: center [x,y], radius, sides (>=3), optional rotation (deg). inscribed=true (default) puts the vertices on the radius (across-corners); inscribed=false puts the edge midpoints on it (across-flats, e.g. a hex nut). Emits a welded closed loop with equal sides and fixed corner angles.

Field Type Required Default
part_id string yes
sketch_id string yes
center list of any yes
radius number yes
sides integer yes
rotation number no 0.0
inscribed boolean no true

sketch.project_geometry

Project a source body's edges/faces onto the sketch plane as associative geometry that re-resolves from the live body on every rebuild (like 'Convert Entities' / 'Project'). Give edge_ids and/or a face_id (a face is expanded to its boundary edges); source_part_id defaults to the sketch's own part. Projected elements participate in profiles unless construction=true. Only lines and circles/arcs whose plane is parallel to the sketch are projected; oblique/unsupported edges are returned in 'skipped'.

Field Type Required Default
source_part_id string (optional) no
source_path list of string no
edge_ids list of integer no
face_ids list of integer no
construction boolean no false
part_id string yes
sketch_id string yes

sketch.rectangle

Create a rectangle from two opposite corners p1 and p2 ([x,y] each), optionally tilted in-plane by rotation degrees about its centre. Emits four welded, closed sides — a ready-to-use closed profile in one call. A thin rotated rectangle is the canonical pitched blade/vane section; vary rotation between lofted sections to twist a blade.

Field Type Required Default
part_id string yes
sketch_id string yes
p1 list of any yes
p2 list of any yes
rotation number no 0.0

sketch.slot

Create a rounded linear slot between two centre points center_a / center_b ([x,y]) with end radius — two parallel sides capped by semicircles. A ready-to-use closed profile (e.g. a fastener slot).

Field Type Required Default
part_id string yes
sketch_id string yes
center_a list of any yes
center_b list of any yes
radius number yes

sketch.update_plane

Re-define an existing sketch's plane (origin plane, plane_def, offset, tilt, face/edge/datum ref). Only provided fields change; dependent features rebuild.

Field Type Required Default
name string (optional) no
plane string (optional) no
plane_def PlaneDefRequest (optional) no
offset number (optional) no
tilt_angle number (optional) no
datum_ref object (optional) no
face_ref object (optional) no
edge_ref object (optional) no
part_id string yes
sketch_id string yes

slicer.printer.create

Create a project-level 3D printer (reusable across parts/setups). machine_preset ('generic' or 'bambu_x1c') picks a builtin engine preset; the physical facts bed_x/bed_y/bed_z (mm), nozzle_diameter (mm) and gcode_flavor ('marlin2' or 'bambu') default from it when omitted, and can be overridden. The filament is not part of the printer: it follows the sliced part's material. Returns the printer id; reference it from a slice setup.

Field Type Required Default
name string (optional) no
machine_preset string (optional) no
bed_x number (optional) no
bed_y number (optional) no
bed_z number (optional) no
nozzle_diameter number (optional) no
gcode_flavor marlin2 | bambu (optional) no

slicer.printer.delete

Delete a printer; clears it from any slice setups referencing it.

Field Type Required Default
printer_id string yes

slicer.printer.update

Edit a printer by printer_id; only provided fields change. Changing machine_preset re-materializes bed/nozzle/flavor from the new preset unless those are also given explicitly.

Field Type Required Default
printer_id string yes
name string (optional) no
machine_preset string (optional) no
bed_x number (optional) no
bed_y number (optional) no
bed_z number (optional) no
nozzle_diameter number (optional) no
gcode_flavor marlin2 | bambu (optional) no

slicer.setup.create

Define an FDM slicing setup on a part (part_id) or a whole assembly (assembly_id, printed as one plate with placements applied): a printer_id plus process settings. process_preset ('draft' 0.28mm / 'standard' 0.20mm / 'fine' 0.12mm) is the base; every other field overrides one preset value and may be omitted to use the preset (null = preset value). Overridable: layer_height (mm), wall_count, top_layers, bottom_layers, infill_density (0..1 fraction), infill_pattern (rectilinear/grid/triangles/cubic/honeycomb/gyroid), seam (nearest/aligned/back), print_speed & first_layer_speed (mm/s), skirt_loops, brim_width (mm, 0=off). Supports: support_enabled (default off), support_type (normal grid / tree branching), support_angle (overhang threshold degrees from horizontal). Filament settings (temperatures, cooling, flow) are not set here: they come from the part's assigned material — see material.create / part.assign_material. material_id names a printable stand-in used only when the part's own material isn't printable (e.g. prototyping a steel part in PLA). Returns the setup id; then call the slice generate endpoint (or slice_part) to compute layers + G-code.

Field Type Required Default
part_id string (optional) no
assembly_id string (optional) no
name string (optional) no
printer_id string (optional) no
process_preset string (optional) no
layer_height number (optional) no
wall_count integer (optional) no
top_layers integer (optional) no
bottom_layers integer (optional) no
infill_density number (optional) no
infill_pattern rectilinear | grid | triangles | cubic | honeycomb | gyroid (optional) no
seam nearest | aligned | back (optional) no
wall_generator classic | arachne (optional) no
gap_fill boolean (optional) no
ironing boolean (optional) no
print_speed number (optional) no
first_layer_speed number (optional) no
skirt_loops integer (optional) no
brim_width number (optional) no
support_enabled boolean (optional) no
support_type normal | tree (optional) no
support_angle number (optional) no
material_id string (optional) no
placement SlicePlacement (optional) no

slicer.setup.delete

Delete a slice setup by id.

Field Type Required Default
part_id string (optional) no
assembly_id string (optional) no
setup_id string yes

slicer.setup.update

Edit a slice setup (setup_id): any of the create fields. Only provided fields change; set an override to null to fall back to the preset.

Field Type Required Default
part_id string (optional) no
assembly_id string (optional) no
name string (optional) no
printer_id string (optional) no
process_preset string (optional) no
layer_height number (optional) no
wall_count integer (optional) no
top_layers integer (optional) no
bottom_layers integer (optional) no
infill_density number (optional) no
infill_pattern rectilinear | grid | triangles | cubic | honeycomb | gyroid (optional) no
seam nearest | aligned | back (optional) no
wall_generator classic | arachne (optional) no
gap_fill boolean (optional) no
ironing boolean (optional) no
print_speed number (optional) no
first_layer_speed number (optional) no
skirt_loops integer (optional) no
brim_width number (optional) no
support_enabled boolean (optional) no
support_type normal | tree (optional) no
support_angle number (optional) no
material_id string (optional) no
placement SlicePlacement (optional) no
setup_id string yes