---
title: "Preview Dfm Bend Plan"
method: POST
path: "/v1/dfm/{dfm_id}/parts/{part_id}/bend-plan"
tags: ["manufacturing-v1"]
---

# Preview Dfm Bend Plan

`POST /v1/dfm/{dfm_id}/parts/{part_id}/bend-plan`

Experimental sampled bend plan; does not change purchasing DFM status.

## Path parameters

- `dfm_id` string, required
- `part_id` string, required

## Request body

- V1BendPlanPreviewRequest — Request a Rust bend plan for the exact prepared DFM configuration.
  - `include_preview` boolean — Include self-contained 3D geometry and animation frames in preview; agents can omit it.

## Response `200`

Successful Response

- V1BendProgramResponse — Resolved program, its checks, and optional self-contained 3D preview.
  - `object` 'bend_plan_preview'
  - `schema_version` 2
  - `dfm_id` string, required
  - `part_id` string, required
  - `configuration_hash` string, required
  - `engine` string, required
  - `scene_revision` string, required
  - `source_step_sha256` string, required
  - `elapsed_ms` number, required
  - `machine_ready` false
  - `program` V1BendProgram, required — One resolved candidate. Steps are listed in execution order.
    - `material_id` string, required
    - `steps` V1BendProgramStep[], required
      - `bend_id` integer, required
      - `station_id` string, nullable, required — Null when no tooling station could be resolved for this bend.
      - `reversed` boolean, required
      - `calibration_id` union, required
        - integer
        - string
      - `estimated_force_kn` number, nullable, required
      - `springback` object, nullable — Versioned springback prediction and historical-match provenance. Null for older programs; not machine qualification.
      - `backgauges` object, nullable, required — Native gauge schema v1: fingers in fixed machine order with start/end X/R/Z in mm, retractStart/retractEnd normalized stroke progress, and placement contacts/stability. Null means no placement. A confirmed placement is not controller qualification.
    - `stations` V1BendProgramStation[], required
      - `id` string, required
      - `setup_index` integer, required — Zero-based setup index.
      - `punch_id` string, required
      - `die_id` string, required
      - `lower_adapter_id` string, nullable
      - `punch_segments_mm` number[], required
      - `die_segments_mm` number[], required
      - `adapter_segments_mm` number[]
      - `punch_segment_order_numbers` string[] — Catalog order numbers for special end segments, aligned with punch_segments_mm.
      - `width_mm` number, required
      - `center_mm` number, required
    - `tools` object[], required — Selected native catalog profiles: id, name, profileNumber, kind, height/width/radius in mm, angle in degrees, maximumLoad in kN/m.
    - `setup_count` integer, required
    - `tooling_changes` integer, required
  - `checks` V1BendProgramChecks, required
    - `status` 'passed' | 'failed' | 'unavailable', required — Overall sampled result. Inspect findings even when passed; this never means machine-ready.
    - `summary` string, required
    - `findings` object[], required — All tooling/process findings, with level, message and optional bendId.
    - `collisions` object, nullable, required — Native sampled audit: status, hits (bendId/progress/mesh/obstacle), sample count, backgauge coverage, limitations and errors. Null means no collision audit ran.
    - `validation_scope` object, required
    - `inventory_confirmed` boolean, required
    - `search` object, required
  - `preview` object, nullable, required — Native render schema v1, or null if omitted: sceneAssets, ordered steps/frames, units and column-major matrices. Geometry and poses are embedded; no viewer URL is created.

## Other responses

- `401` — Missing or invalid credentials.
- `403` — The credentials do not permit this operation.
- `404` — The resource does not exist or is not visible to the caller.
- `422` — Validation failed; see `error.param` and `error.details`.
- `429` — Rate limit exceeded; retry after the `Retry-After` header.
- `500` — Unexpected failure; safe to retry with the same Idempotency-Key.

## Changes

- **2026-10-01** `737527fc081e` — 1 info
  - added the optional property `program/anyOf[subschema #1: V1BendProgram]/steps/items/springback` to the response with the `200` status
- **2026-09-28** `3568b01e288d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/rmfg/apis/fastapi/changes/v1/dfm/:dfm_id/parts/:part_id/bend-plan/post.md)

---

[API](https://skmtc.dev/rmfg/apis/fastapi.md) · [All operations](https://skmtc.dev/rmfg/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc.dev/rmfg/apis/fastapi/revisions/737527fc081e?raw)
