---
title: "Prepare an editable workholding draft"
method: POST
path: "/workbenches/workholding/prepare"
---

# Prepare an editable workholding draft

`POST /workbenches/workholding/prepare`

## Request

- Base URL: `https://aiurion.com/api/agent/v1`
- URL: `https://aiurion.com/api/agent/v1/workbenches/workholding/prepare`
- Auth: HTTP bearer

Locating nests, clamped fixtures and soft jaws from dimensions or a supported straight-extrusion STL. No quote allowance is consumed. Returns canonical configuration, warnings, revision and editable browser review link. REST body limit 12 MB; MCP limit 8 MB including encoding.

## Request body

- object
  - `parameters` object
    - `fixtureType` 'nest' | 'clamped' | 'soft-jaws'
    - `jawMount` 'kurt-dx6' | 'custom'
    - `jawLength` number
    - `jawHeight` number
    - `jawThickness` number
    - `jawGrip` number
    - `jawGap` number
    - `jawHoleSpacing` number
    - `jawHoleHeight` number
    - `jawBore` number
    - `jawCounterbore` number
    - `jawRecess` number
    - `clampWidth` number
    - `clampThickness` number
    - `clampOverlap` number
    - `clampBoltOffset` number
    - `clampY` number
    - `shape` 'bracket' | 'rectangle' | 'round' | 'custom'
    - `partLength` number
    - `partWidth` number
    - `partHeight` number
    - `stockLength` number
    - `stockWidth` number
    - `floor` number
    - `depth` number
    - `clearance` number
    - `rotation` number
    - `offsetX` number
    - `offsetY` number
    - `preset` 'custom' | 'smw-m6' | 'smw-half' | 'kurt'
    - `materialId` string
    - `fulfillmentMethod` 'shipping' | 'pickup' | 'courier'
    - `productionSpeed` 'standard' | 'rush'
    - `holes` object[]
      - `x` number, required
      - `y` number, required
      - `diameter` number, required
      - `counterbore` number, required
      - `recess` number, required
    - `outline` array[]
      - number[]
  - `quantity` integer
  - `stlBase64` string: Base64 encoded STL, at most 5 MiB decoded. One closed straight extrusion on XY, without internal holes or undercuts. The raw STL is not stored in the draft or review URL.
  - `stlUnits` 'mm' | 'in': Units of the supplied STL coordinates; defaults to mm.

## Response `200`

Reviewable draft

- object
  - `success` true, required
  - `workbench` 'workholding', required
  - `configuration` object, required
    - `fixtureType` 'nest' | 'clamped' | 'soft-jaws', required
    - `jawMount` 'kurt-dx6' | 'custom', required
    - `jawLength` number, required
    - `jawHeight` number, required
    - `jawThickness` number, required
    - `jawGrip` number, required
    - `jawGap` number, required
    - `jawHoleSpacing` number, required
    - `jawHoleHeight` number, required
    - `jawBore` number, required
    - `jawCounterbore` number, required
    - `jawRecess` number, required
    - `clampWidth` number, required
    - `clampThickness` number, required
    - `clampOverlap` number, required
    - `clampBoltOffset` number, required
    - `clampY` number, required
    - `shape` 'bracket' | 'rectangle' | 'round' | 'custom', required
    - `partLength` number, required
    - `partWidth` number, required
    - `partHeight` number, required
    - `stockLength` number, required
    - `stockWidth` number, required
    - `floor` number, required
    - `depth` number, required
    - `clearance` number, required
    - `rotation` number, required
    - `offsetX` number, required
    - `offsetY` number, required
    - `preset` 'custom' | 'smw-m6' | 'smw-half' | 'kurt', required
    - `materialId` string, required
    - `quantity` integer, required
    - `fulfillmentMethod` 'shipping' | 'pickup' | 'courier', required
    - `productionSpeed` 'standard' | 'rush', required
    - `holes` object[], required
      - `x` number, required
      - `y` number, required
      - `diameter` number, required
      - `counterbore` number, required
      - `recess` number, required
    - `outline` array[], required
      - number[]
  - `revision` string, required
  - `reviewUrl` string, uri, required: Editable review link containing private design information in its fragment.
  - `build` object
  - `warnings` string[]
  - `checkout` object
    - `mode` 'browser'
    - `url` string, uri
    - `approvalRequired` unknown

## Other responses

- `400`: Invalid request
- `401`: Missing, invalid, inactive, or expired token
- `403`: The credential lacks the required scope
- `404`: Resource not found
- `409`: Request conflict
- `413`: Uploaded request is too large
- `415`: Unsupported request content type
- `429`: Rate or beta quota exceeded
- `500`: Unexpected server error
- `503`: Agent API temporarily unavailable

---

[API](https://skmtc.dev/aiurion/apis/aiurion-agentic-3d-printing-api.md) · [All operations](https://skmtc.dev/aiurion/apis/aiurion-agentic-3d-printing-api/llms.txt) · [OpenAPI document](https://skmtc.dev/aiurion/apis/aiurion-agentic-3d-printing-api/revisions/949ce997a10c?raw)
