---
title: "Patch Construction Scene"
method: PATCH
path: "/questionnaires/jobs/{job_id}/construction-scene"
tags: ["questionnaires"]
---

# Patch Construction Scene

`PATCH /questionnaires/jobs/{job_id}/construction-scene`

## Request

- Base URL: `https://api.threadchain.pro` (the document declares no server; this is the origin it was published from)
- URL: `https://api.threadchain.pro/questionnaires/jobs/{job_id}/construction-scene`
- Auth: OAuth 2
  - Password
  - Token URL: `auth/token`

Persist user edits to a Construction-tab CalloutScene (front or back).

The Konva editor on the frontend owns rendering; this endpoint just round-trips
the scene JSON into ``platform_payload.constructionSceneFront``/``Back``.

## Path parameters

- `job_id` string, uuid, required

## Request body

- ConstructionScenePatchRequest
  - `view` string, required
  - `scene` CalloutScene, required
    - `version` string
    - `view` 'front' | 'back' | 'extra', required
    - `image_url` string, required
    - `image_width` integer, required
    - `image_height` integer, required
    - `callouts` Callout[], required
      - `id` string, required
      - `label_key` string, required
      - `label` string, required
      - `label_i18n` object, nullable
      - `type` string, required
      - `anchor_xy` AnchorXY, required
        - `x` number, required
        - `y` number, required
    - `metadata` SceneMetadata
      - `garment_bounds` GarmentBounds
        - `x_min` number, required
        - `y_min` number, required
        - `x_max` number, required
        - `y_max` number, required
      - `baked_labels` string[], nullable
      - `render_mode` string, nullable
      - `line_scale` number, nullable
  - `extra_view_id` string, nullable

## Response `200`

Successful Response

- TechPackPlatformStateResponse: Prefill from questionnaire + saved overrides for the in-app tech pack editor.
  - `job_id` string, uuid, required
  - `prefill` object, nullable
  - `saved` object, required
  - `merged` object, nullable
  - `job_status` string, nullable
  - `job_renders` TechPackJobRendersPayload: Latest render assets from `tech_pack_jobs` (read-only for the editor UI).
    - `front_3d_url` string, nullable
    - `back_3d_url` string, nullable
    - `left_3d_url` string, nullable
    - `right_3d_url` string, nullable
    - `front_2d_url` string, nullable
    - `back_2d_url` string, nullable
    - `left_2d_url` string, nullable
    - `right_2d_url` string, nullable
    - `inner_front_2d_url` string, nullable
    - `inner_back_2d_url` string, nullable
    - `callout_pom_front` string, nullable
    - `callout_pom_back` string, nullable
    - `pom_overlay_outer_front_url` string, nullable
    - `pom_overlay_outer_back_url` string, nullable
    - `pom_overlay_inner_front_url` string, nullable
    - `pom_overlay_inner_back_url` string, nullable
    - `bom_callout_giq_outer_front_url` string, nullable
    - `bom_callout_giq_outer_back_url` string, nullable
    - `bom_callout_giq_inner_front_url` string, nullable
    - `bom_callout_giq_inner_back_url` string, nullable
    - `bom_callout_nogiq_outer_front_url` string, nullable
    - `bom_callout_nogiq_outer_back_url` string, nullable
    - `bom_callout_nogiq_inner_front_url` string, nullable
    - `bom_callout_nogiq_inner_back_url` string, nullable
    - `preview_url` string, nullable
  - `share_code` string, nullable
  - `entitlements` object, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/threadchain/apis/threadchain-backend.md) - [All operations](https://skmtc.dev/threadchain/apis/threadchain-backend/llms.txt) - [OpenAPI document](https://skmtc.dev/threadchain/apis/threadchain-backend/revisions/8ee288a7e6bd?raw)
