---
title: "Create Edge Tolerance"
method: POST
path: "/api/v1/parts/{part_id}/edge-tolerances"
tags: ["edge_tolerances"]
---

# Create Edge Tolerance

`POST /api/v1/parts/{part_id}/edge-tolerances`

Create (or replace) an edge-tolerance annotation on a part's latest CAD version.

Re-authoring on an edge that already has a live tolerance flips the
existing row to ``state="undone"`` and inserts the replacement —
Fusion-360 muscle memory: re-clicking an edge updates, it does not
duplicate.

## Path parameters

- `part_id` string, uuid, required

## Request body

- EdgeToleranceCreate — Payload for ``POST /parts/{part_id}/edge-tolerances``.
  - `edge_id` string, required — Topology edge ID (e.g. 'edge_7') — looked up in the topology sidecar JSON.
  - `tolerance_type` string, required — One of EDGE_TOLERANCE_TYPES: as_machined, break_light, break_medium, break_heavy, chamfer, deburr, sharp.
  - `size_mm` number, nullable — Chamfer leg length in mm. Required when ``tolerance_type`` = 'chamfer'; ignored otherwise.
  - `angle_deg` number, nullable — Chamfer angle in degrees (0 < angle < 180). Defaults to 45° when ``tolerance_type`` = 'chamfer' and not supplied.
  - `notes` string, nullable

## Response `201`

Successful Response

- EdgeToleranceRead — Flattened edge-tolerance row — built by the service from an OutcomeEvent. Not an ORM passthrough: the source row is an ``OutcomeEvent`` with ``data = {tolerance_type, size_mm, angle_deg, notes, ...}``. The projection flattens that payload + adds the computed ``is_process_mismatch`` flag and the resolved visual label.
  - `id` string, uuid, required
  - `part_id` string, uuid, required
  - `cad_file_version_id` string, uuid, nullable, required
  - `edge_id` string, required
  - `tolerance_type` string, required
  - `size_mm` number, nullable, required
  - `angle_deg` number, nullable, required
  - `notes` string, nullable, required
  - `label` string, required
  - `state` string, required
  - `source` string, required
  - `author` string, nullable, required
  - `created_by` string, uuid, nullable, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, nullable, required
  - `is_process_mismatch` boolean

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/prototyping/apis/prototyping-io-api.md) · [All operations](https://skmtc.dev/prototyping/apis/prototyping-io-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/prototyping/prototyping-io-api/revisions/f4a0079fbb57/schema)
