---
title: "Convert - STEP to Draco-compressed glTF (.glb), advanced options"
method: POST
path: "/api/v1/convert/step-to-gltf-advanced-with-draco"
tags: ["Convert"]
---

# Convert - STEP to Draco-compressed glTF (.glb), advanced options

`POST /api/v1/convert/step-to-gltf-advanced-with-draco`

Full-control STEP → glTF conversion with Draco geometry compression. Combines fine-grained mesh, export, and coordinate options with Draco quantization controls. Requires the 'convert' API key scope. Returns 202 with a task ID.

## Request body

- StepToGltfAdvancedWithDracoBody — Convert a STEP file to Draco-compressed glTF with full control over tessellation, naming, coordinate systems, output format, and Draco quantization.
  - `stepFileId` string, required — ID of the previously uploaded STEP file (returned by the file upload endpoint)
  - `options` ConvertAdvancedOptions — Fine-grained options controlling STEP → glTF conversion: tessellation quality, attribute extraction, coordinate systems, and output format.
    - `readColors` boolean — Extract color attributes from the STEP file and apply to glTF materials
    - `readNames` boolean — Extract product/instance names from the STEP file and apply to glTF node names
    - `readMaterials` boolean — Extract material definitions from the STEP file
    - `readLayers` boolean — Extract layer/group structure from the STEP file
    - `readProps` boolean — Extract custom properties (e.g. part numbers, metadata) from the STEP file
    - `meshDeflection` number — Mesh tessellation precision (lower = finer). Range: [0.0001, 10]
    - `meshAngle` number — Mesh angular deflection in radians. Range: [0.01, π]
    - `meshParallel` boolean — Enable parallel tessellation for faster processing
    - `meshRelative` boolean — Use size-aware relative deflection per face. When true, meshDeflection is a fraction of each edge's length. Set to false for absolute deflection in model units.
    - `internalVerticesMode` boolean — Add interior vertices for better curved face fidelity (slower, set false for speed).
    - `controlSurfaceDeflection` boolean — Extra post-pass refining triangles that bulge beyond the deflection (slower, set false for speed).
    - `faceCountThreshold` integer — Face count threshold for per-sub-shape meshing fallback. Default -1 means single-pass meshing of the whole compound (fastest). Set to a positive value (e.g. 100000) to fall back to per-solid meshing for very large assemblies in memory-constrained environments.
    - `mergeFaces` boolean — Merge co-planar adjacent faces to reduce mesh complexity
    - `splitIndices16` boolean — Split meshes so each uses 16-bit index buffers (max 65535 vertices per mesh). Improves compatibility with some renderers.
    - `parallelWrite` boolean — Write glTF output in parallel for faster file generation
    - `embedTextures` boolean — Embed texture data directly in the .glb file instead of referencing external URIs
    - `forceUVExport` boolean — Generate UV coordinates even when no textures are present (useful for post-processing)
    - `nodeNameFormat` 'empty' | 'product' | 'instance' | 'instanceOrProduct' | 'productOrInstance' | 'productAndInstance' | 'productAndInstanceAndOcaf' — How node/mesh names are derived from STEP product/instance labels
    - `meshNameFormat` 'empty' | 'product' | 'instance' | 'instanceOrProduct' | 'productOrInstance' | 'productAndInstance' | 'productAndInstanceAndOcaf' — How node/mesh names are derived from STEP product/instance labels
    - `transformFormat` 'compact' | 'mat4' | 'trs' — Transform representation in glTF output
    - `adjustZtoY` boolean — Convert from Z-up (CAD convention) to Y-up (glTF/WebGL convention) coordinate system
    - `scale` number — Uniform scale factor. Range: [1e-6, 1000]
  - `draco` DracoCompressionOptions — Draco geometry compression options applied during glTF export.
    - `useDraco` boolean — Apply Draco geometry compression to the glTF output. Defaults to true for the *-with-draco endpoints.
    - `dracoCompressionLevel` integer — Draco compression level (0 = fastest/largest, 10 = slowest/smallest). Typical good default is 7.
    - `dracoQuantizePositionBits` integer — Quantization bits for vertex positions (higher = more precise, larger file). Typical: 14.
    - `dracoQuantizeNormalBits` integer — Quantization bits for normal vectors. Typical: 10.
    - `dracoQuantizeTexcoordBits` integer — Quantization bits for texture coordinates. Typical: 12.
    - `dracoQuantizeColorBits` integer — Quantization bits for vertex colors. Typical: 8.
    - `dracoQuantizeGenericBits` integer — Quantization bits for generic vertex attributes. Typical: 12.
    - `dracoUnifiedQuantization` boolean — Use unified quantization across all meshes (better when meshes share a coordinate frame).

## 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

## Changes

- **2026-05-24** `b08f35b461c9` — 1 info
  - endpoint added
- **2026-04-17** `5eb4ed0f33c7` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/bitbybit-dev/apis/bitbybit-cad-cloud-api/changes/api/v1/convert/step-to-gltf-advanced-with-draco/post.md)

---

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