---
title: "Upload Design"
method: POST
path: "/designs"
tags: ["designs"]
---

# Upload Design

`POST /designs`

Inserts a design into our database, and returns an assembly response with the design(s).
Supports both single-part and multi-part STEP files.

## Query parameters

- `public` boolean, nullable

## Headers

- `x-rmfg-web-version` string, nullable

## Response `200`

Successful Response

- union
  - AssemblyResponse — Response model for multi-part design processing
    - `assembly` Assembly, required
      - `id` string, nullable
      - `part_count` integer, required
      - `file_name` string, nullable
      - `bounding_dimensions` number[]
      - `part_locations` PartLocation[]
        - `part_id` string, required
        - `transformation_matrix` array[], required
          - number[]
        - `interior_point` Point3D
          - `x` number, required
          - `y` number, required
          - `z` number, required
      - `cad_status` 'pending' | 'processing' | 'ready' | 'failed', nullable
      - `cad_job_id` string, nullable
    - `designs` Design[], required
      - `id` string, required — The unique identifier for the design
      - `file_name` string, required — The original name of the file
      - `part_type` 'sheet' | 'tube'
      - `part_name` string, nullable
      - `user_id` string, nullable
      - `file_url` string, required
      - `file_size` integer, required
      - `gltf_url` string, required
      - `flat_pattern_gltf_url` string, required
      - `bends` Bend[], required
        - `id` integer, required
        - `angle` number, required
        - `radius` number, required
        - `location` BentLocation, required
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `direction` BentLocation, required
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `length` number, required
        - `line_start` BentLocation
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `line_end` BentLocation
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `distortion_zone_sides` BendDistortionZoneSide[]
          - `source_hole_id` integer, nullable
          - `edge_start` BentLocation, required
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `edge_end` BentLocation, required
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `outward_direction` BentLocation, required
            - `x` number, required
            - `y` number, required
            - `z` number, required
      - `thickness` number, required
      - `surface_area_cm2` number, required
      - `bounding_dimensions` number[], required
      - `flat_bounding_dimensions_mm` number[], required
      - `manufacturability` 'manufacturable' | 'not_within_shippable_dimensions' | 'not_within_manufacturable_dimensions', required
      - `manufacturability_details` string[], nullable, required
      - `cut_length_mm` number, nullable
      - `hole_count` integer, nullable
      - `flat_pattern_number_of_interior_boundaries` integer, required
      - `original_holes` Hole[], nullable
        - `id` integer, required
        - `area_mm2` number, required
        - `center` Point3D, required
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `diameter_mm` number, required
        - `perimeter_mm` number, required
        - `hole_center_dist_to_nearest_edge` number, required
        - `normal` Normal, required
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `nearest_bend` NearestBend
          - `bend_id` integer, nullable
          - `distance_to_flange` number, nullable
          - `is_inner_cylindrical_face` boolean, nullable
          - `outside_bend_path` boolean, nullable
          - `line_start` Point3D
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `line_end` Point3D
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `distortion_zone_side` BendDistortionZoneSide — Planner geometry for one sheet side adjacent to a bend line.
            - `source_hole_id` integer, nullable
            - `edge_start` BentLocation, required
              - …
            - `edge_end` BentLocation, required
              - …
            - `outward_direction` BentLocation, required
              - …
        - `nearby_bends` NearestBend[]
          - `bend_id` integer, nullable
          - `distance_to_flange` number, nullable
          - `is_inner_cylindrical_face` boolean, nullable
          - `outside_bend_path` boolean, nullable
          - `line_start` Point3D
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `line_end` Point3D
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `distortion_zone_side` BendDistortionZoneSide — Planner geometry for one sheet side adjacent to a bend line.
            - `source_hole_id` integer, nullable
            - `edge_start` BentLocation, required
              - …
            - `edge_end` BentLocation, required
              - …
            - `outward_direction` BentLocation, required
              - …
        - `outline` Point3D[], nullable
          - `x` number, required
          - `y` number, required
          - `z` number, required
      - `flange_lengths` union[], required
        - union
          - FlangeLength
            - `flange_length` number, required
            - `flange_bend_radius` number, required
            - `flange_bend_angle` number, required
          - number
      - `backgauge_flanges` object[], required
      - `u_channels` object[]
      - `transformed_holes` Hole[], nullable
        - `id` integer, required
        - `area_mm2` number, required
        - `center` Point3D, required
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `diameter_mm` number, required
        - `perimeter_mm` number, required
        - `hole_center_dist_to_nearest_edge` number, required
        - `normal` Normal, required
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `nearest_bend` NearestBend
          - `bend_id` integer, nullable
          - `distance_to_flange` number, nullable
          - `is_inner_cylindrical_face` boolean, nullable
          - `outside_bend_path` boolean, nullable
          - `line_start` Point3D
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `line_end` Point3D
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `distortion_zone_side` BendDistortionZoneSide — Planner geometry for one sheet side adjacent to a bend line.
            - `source_hole_id` integer, nullable
            - `edge_start` BentLocation, required
              - …
            - `edge_end` BentLocation, required
              - …
            - `outward_direction` BentLocation, required
              - …
        - `nearby_bends` NearestBend[]
          - `bend_id` integer, nullable
          - `distance_to_flange` number, nullable
          - `is_inner_cylindrical_face` boolean, nullable
          - `outside_bend_path` boolean, nullable
          - `line_start` Point3D
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `line_end` Point3D
            - `x` number, required
            - `y` number, required
            - `z` number, required
          - `distortion_zone_side` BendDistortionZoneSide — Planner geometry for one sheet side adjacent to a bend line.
            - `source_hole_id` integer, nullable
            - `edge_start` BentLocation, required
              - …
            - `edge_end` BentLocation, required
              - …
            - `outward_direction` BentLocation, required
              - …
        - `outline` Point3D[], nullable
          - `x` number, required
          - `y` number, required
          - `z` number, required
      - `countersinks` AnalyzedCountersink[], nullable
        - `id` integer, required
        - `center` Point3D, required
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `normal` Normal, required
          - `x` number, required
          - `y` number, required
          - `z` number, required
        - `inverted` boolean, required
        - `counters_sink_inner_radius` number, required
        - `counters_sink_outer_radius` number, required
        - `counter_sink_angle` number, required
      - `design_tree` object, nullable
      - `detected_tube_profile_key` string, nullable
      - `tube_profile_id` string, nullable
      - `tube_length_mm` number, nullable
      - `tube_features` object[]
      - `tube_holes` object[]
      - `tube_metadata` object
      - `public` boolean, required
      - `issues` Issue[], required
        - `bend_id` integer, required
        - `issue` string, required
      - `assembly_id` string, nullable
      - `session_token` string, nullable
    - `metadata` AssemblyMetadata, required
      - `total_processing_time_ms` integer, required
      - `success_count` integer, required
      - `fail_count` integer, required
      - `total_parts` integer, required
      - `failed_part_ids` string[]
  - StepAnalysisAccepted — A durable STEP upload accepted for asynchronous analysis.
    - `job_id` string, required
    - `status` 'queued'
    - `file_name` string, required
    - `created_at` string, date-time, required

## Other responses

- `404` — Not found
- `422` — Validation Error

---

[API](https://skmtc.dev/rmfg/apis/fastapi.md) · [All operations](https://skmtc.dev/rmfg/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/rmfg/fastapi/revisions/17a4ad42a016/schema)
