---
title: "Restore Measurement"
method: POST
path: "/api/v1/measurements/{measurement_id}/restore"
tags: ["measurements"]
---

# Restore Measurement

`POST /api/v1/measurements/{measurement_id}/restore`

## Request

- Base URL: `https://api.rudus.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.rudus.ai/api/v1/measurements/{measurement_id}/restore`
- Auth: none declared
- TypeScript: <https://skmtc.dev/rudus/apis/rudus-api/docs/api/v1/measurements/:measurement_id/restore/post.ts> (a function with typed inputs; its response is checked against the schema)

Restore a soft-deleted measurement.

Per ADR-0033 and docs/superpowers/specs/2026-05-22-undo-redo-design.md §5.4.
The measurement's id is preserved across delete↔restore cycles so
the canvas history stack stays internally consistent.

Returns 200 with the resurrected measurement. Raises 404 if the row
is missing or not owned by the user; 409 if the row exists but is
already alive.

## Path parameters

- `measurement_id` string, uuid, required

## Response `200`

Successful Response

- Measurement
  - `id` string, uuid, required
  - `condition_id` string, uuid, required
  - `page_id` string, uuid, required
  - `scale_region_id` string, uuid, nullable
  - `geometry` union, required
    - PointGeometryOutput
      - `type` 'point', required
      - `x` string, required
      - `y` string, required
      - `rotation` string, nullable
    - PolylineGeometryOutput
      - `type` 'polyline', required
      - `points` array[], required
        - unknown[]
          - unknown
      - `bulges` string[], nullable
    - PolygonGeometryOutput
      - `type` 'polygon', required
      - `points` array[], required
        - unknown[]
          - unknown
      - `holes` array[], nullable
        - array[]
          - unknown[]
            - unknown
      - `grid` GridAlignmentOutput: Rebar-grid pose for an area measurement (spec 2026-07-13 §5.2). Stored inside geometry JSONB — additive, no DDL (ADR-0097 precedent). angle_deg is CCW-positive PDF user-space, normalized to [0, 180): a line family has 180° symmetry, unlike marker glyphs' [0, 360). New normalizer — borrows only the round-then-normalize technique from ADR-0097.
        - `origin` unknown[], required
          - unknown
        - `angle_deg` string
  - `name` string, nullable
  - `computed_value` string, nullable, required
  - `computed_derivations` DerivationValue[]
    - `ordinal` integer, required
    - `result_type` 'count' | 'total_height' | 'perimeter' | 'surface_area_top_or_bottom' | 'surface_area_top_and_bottom' | 'surface_area_all_sides' | 'surface_area_full' | 'volume' | 'length' | 'segment_count' | 'surface_area_single_side' | 'surface_area_both_sides' | 'surface_area_single_end' | 'surface_area_both_ends' | 'surface_area_all_side_duct' | 'area' | 'grid_length_visible' | 'grid_length_x_visible' | 'grid_length_y_visible' | 'grid_intersection_count' | 'tile_count_average' | 'tile_count_visible' | 'area_counts', required
    - `uom` 'EA' | 'LF' | 'IN' | 'FT' | 'SF' | 'SY' | 'CF' | 'CY', required
    - `value` number, required
  - `effective_multiplier` string
  - `extension_values` object
  - `bid_area_id` string, uuid, nullable
  - `ambiguous` boolean
  - `link_group_id` string, uuid, nullable
  - `created_at` string, date-time, required

## Other responses

- `4XX`: Client Error
- `5XX`: Server Error

---

[API](https://skmtc.dev/rudus/apis/rudus-api.md) - [All operations](https://skmtc.dev/rudus/apis/rudus-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rudus/apis/rudus-api/revisions/5673f72c8a5d?raw)
