---
title: "Duplicate Condition"
method: POST
path: "/api/v1/conditions/{source_condition_id}/duplicate"
tags: ["conditions"]
---

# Duplicate Condition

`POST /api/v1/conditions/{source_condition_id}/duplicate`

Atomically duplicate a condition and its live measurements.

## Path parameters

- `source_condition_id` string, uuid, required

## Request body

- DuplicateConditionForRevisionRequest
  - `condition` CreateConditionRequest, required
    - `id` string, uuid, nullable
    - `name` string, required
    - `geometry_kind` 'count' | 'linear' | 'area', required
    - `shape` 'circle' | 'square' | 'rectangle', nullable
    - `color` string
    - `config` ConditionConfig
      - `dimensions` Dimensions — Geometric parameters. Field meaning depends on (geometry_kind, shape). Count + Circle/Square: width_in = diameter/side; height_in = vertical extrusion. Count + Rectangle: width_in = x footprint; thickness_in = y footprint; height_in = vertical extrusion. Linear: height_in (vertical face), thickness_in (material thickness), slope. Area: thickness_in (material thickness), slope. Per ADR-0040 and docs/superpowers/specs/2026-05-27-condition-render-dims-design.md §3.1. Values are decimal inches (ADR-0091); pre-existing integer payloads coerce.
        - `width_in` number, nullable
        - `thickness_in` number, nullable
        - `height_in` number, nullable
        - `slope` string, nullable
      - `tile_module` TileModule
        - `w_in` integer, required
        - `h_in` integer, required
        - `gap_in` integer, required
      - `grid_spacing` GridSpacing
        - `x_in` integer, required
        - `y_in` integer, required
      - `rounding` Rounding
        - `enabled` boolean
        - `increment` number
      - `display` DisplayConfig
        - `name` boolean
        - `dimension` boolean
        - `pattern_while_drawing` boolean
    - `attachment_kind` 'area' | 'linear', nullable
    - `attachment_config` AttachmentConfig
      - `deduct_from_parent` boolean
    - `derivations` CreateDerivation[], nullable
      - `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', nullable
      - `respects_backouts` boolean
      - `respects_attachments` boolean
    - `folder_id` string, uuid, nullable
    - `sort_order` number, nullable
    - `layer_id` string, uuid, nullable
    - `notes` string, nullable
    - `extension_id` string, uuid, nullable
    - `phase_code_id` string, uuid, nullable
  - `condition_multiplier` DuplicateConditionMultiplier — Condition-scoped multiplier folded into an atomic duplicate. factor parity with MultiplierCreate.factor (Decimal, > 0). The client folds factor 1 to a null condition_multiplier instead of sending it.
    - `factor` union, required
      - number
      - string
    - `label` string, nullable
  - `revision_set_id` string, uuid, nullable, required

## Response `201`

Successful Response

- Condition
  - `id` string, uuid, required
  - `project_id` string, uuid, required
  - `name` string, required
  - `geometry_kind` 'count' | 'linear' | 'area', required
  - `shape` 'circle' | 'square' | 'rectangle', nullable
  - `unit` string, required
  - `color` string, required
  - `config` ConditionConfig
    - `dimensions` Dimensions — Geometric parameters. Field meaning depends on (geometry_kind, shape). Count + Circle/Square: width_in = diameter/side; height_in = vertical extrusion. Count + Rectangle: width_in = x footprint; thickness_in = y footprint; height_in = vertical extrusion. Linear: height_in (vertical face), thickness_in (material thickness), slope. Area: thickness_in (material thickness), slope. Per ADR-0040 and docs/superpowers/specs/2026-05-27-condition-render-dims-design.md §3.1. Values are decimal inches (ADR-0091); pre-existing integer payloads coerce.
      - `width_in` number, nullable
      - `thickness_in` number, nullable
      - `height_in` number, nullable
      - `slope` string, nullable
    - `tile_module` TileModule
      - `w_in` integer, required
      - `h_in` integer, required
      - `gap_in` integer, required
    - `grid_spacing` GridSpacing
      - `x_in` integer, required
      - `y_in` integer, required
    - `rounding` Rounding
      - `enabled` boolean
      - `increment` number
    - `display` DisplayConfig
      - `name` boolean
      - `dimension` boolean
      - `pattern_while_drawing` boolean
  - `metadata` ConditionMetadata — Back-compat metadata. Reads fall back here when config.dimensions is empty.
    - `dimensions` Dimensions — Geometric parameters. Field meaning depends on (geometry_kind, shape). Count + Circle/Square: width_in = diameter/side; height_in = vertical extrusion. Count + Rectangle: width_in = x footprint; thickness_in = y footprint; height_in = vertical extrusion. Linear: height_in (vertical face), thickness_in (material thickness), slope. Area: thickness_in (material thickness), slope. Per ADR-0040 and docs/superpowers/specs/2026-05-27-condition-render-dims-design.md §3.1. Values are decimal inches (ADR-0091); pre-existing integer payloads coerce.
      - `width_in` number, nullable
      - `thickness_in` number, nullable
      - `height_in` number, nullable
      - `slope` string, nullable
  - `attachment_kind` 'area' | 'linear', nullable
  - `attachment_config` AttachmentConfig
    - `deduct_from_parent` boolean
  - `derivations` Derivation[]
    - `id` string, uuid, required
    - `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
    - `respects_backouts` boolean
    - `respects_attachments` boolean
  - `measurement_count` integer
  - `folder_id` string, uuid, nullable
  - `folder_path` string
  - `sort_order` number
  - `layer_id` string, uuid, required
  - `notes` string, nullable
  - `extension_id` string, uuid, nullable
  - `phase_code_id` string, uuid, nullable
  - `trace_groups` TraceGroupRef[], nullable
    - `name` string, nullable
    - `measurement_count` integer, 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-service-production.skmtc.workers.dev/v1/apis/rudus/rudus-api/revisions/f149124a4d80/schema)
