---
title: "Replace one film clip while preserving timing and a recovery copy"
method: POST
path: "/api/v1/canvases/{canvasId}/direct/stitches/{nodeId}/replace-clip"
tags: ["stitch"]
---

# Replace one film clip while preserving timing and a recovery copy

`POST /api/v1/canvases/{canvasId}/direct/stitches/{nodeId}/replace-clip`

## Request

- Base URL: `https://api.melius.com`
- URL: `https://api.melius.com/api/v1/canvases/{canvasId}/direct/stitches/{nodeId}/replace-clip`
- Auth: HTTP bearer and API key in header `x-team-id`

## Path parameters

- `canvasId` string, uuid, required
- `nodeId` string, uuid, required

## Request body

- object
  - `sourceNodeId` string, uuid, required: Expected source node ID from stitch_get
  - `index` integer: Zero-based flat-list slot from stitch_get; omit for timeline edits
  - `timelineClipId` string: Exact timeline clip instance ID from stitch_get; omit for flat-list edits
  - `expectedRevision` string, required: Revision returned by the latest stitch_get; stale edits are rejected
  - `replacementNodeId` string, uuid, required: Finished replacement source on the same canvas, of the same media kind
  - `onDuplicate` boolean: Edit a complete copy and leave the original intact; otherwise keep a recovery copy before editing in place

## Response `200`

200

- object
  - `nodeId` string, uuid, required
  - `originalNodeId` string, uuid, required
  - `recoveryNodeId` string, uuid, required
  - `revision` string, required
  - `change` object, required
    - `sourceNodeId` string, uuid, required: Expected source node ID from stitch_get
    - `index` integer: Zero-based flat-list slot from stitch_get; omit for timeline edits
    - `timelineClipId` string: Exact timeline clip instance ID from stitch_get; omit for flat-list edits
    - `replacementNodeId` string, uuid, required
    - `durationMs` number, required
  - `renderStatus` 'not_started', required

## Other responses

- `400`: 400
- `401`: Missing, invalid, expired, or revoked API key.
- `403`: 403
- `404`: 404
- `409`: 409
- `429`: Rate limit reached — retry after the `Retry-After` header.
- `503`: 503

## Changes

- **2026-11-03** `2a857511f605`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/melius/apis/melius-api/changes/api/v1/canvases/:canvasId/direct/stitches/:nodeId/replace-clip/post.md)

---

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