---
title: "Sheet metal - unfold all solids to flat geometry"
method: POST
path: "/api/v1/cad/pro/unfold/solid-to-flat"
tags: ["Sheet Metal"]
---

# Sheet metal - unfold all solids to flat geometry

`POST /api/v1/cad/pro/unfold/solid-to-flat`

Proprietary sheet-metal unfold: loads every solid in an uploaded STEP file and flattens each to a flat pattern. Requires the 'cad' API key scope. Returns 202 with a task ID; all flats are combined into one compound output per format.

## Request body

- UnfoldSolidToFlatBody — Flatten every constant-thickness sheet-metal solid in an uploaded STEP file to flat patterns.
  - `stepFileId` string, required — ID of the previously uploaded STEP file (returned by the file upload endpoint). Both plain STEP (.step/.stp) and gzip-compressed STEP (.stpz) uploads are accepted - compression is detected automatically.
  - `kFactor` number — Sheet-metal K-factor (neutral-axis position), typically ~0.5.
  - `thicknessOverride` number — Sheet thickness override in model units; 0 auto-detects thickness from face pairs.
  - `outputs` OutputOptions — Controls which output formats are generated and their quality settings
    - `formats` OutputFormat[], required — Output formats to generate. Multiple formats can be requested (e.g. ['gltf', 'stpz']) - each produces a separate downloadable result. Do not include both 'step' and 'stpz' - only one STEP variant is supported per request.
    - `meshPrecision` number — Mesh tessellation precision (lower = finer). Range: [0.0001, 10]
    - `gltfMeshPrecision` number — Mesh tessellation precision (lower = finer). Range: [0.0001, 10]
    - `adjustYtoZ` boolean — Convert from Y-up to Z-up coordinate system in the output. Useful for software that expects Z-up.

## Response `202`

Task accepted

- TaskAcceptedResponse — HTTP 202 response when a task is accepted for async processing
  - `ok` true, required
  - `data` TaskCreatedResult, required — Returned when a CAD task is accepted. Poll the statusUrl to track progress.
    - `taskId` string, uuid, required — Unique task identifier - use this to poll for status and retrieve results
    - `status` 'queued', required — Initial task status (always 'queued' upon creation)
    - `statusUrl` string, required — Relative URL to poll for task status updates

## Other responses

- `400` — Validation error
- `403` — Insufficient scope
- `500` — Server error

---

[API](https://skmtc.net/bitbybit-dev/apis/bitbybit-cad-cloud-api.md) · [All operations](https://skmtc.net/bitbybit-dev/apis/bitbybit-cad-cloud-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bitbybit-dev/bitbybit-cad-cloud-api/versions/1135d4473bc2/schema)
