---
title: "台本エディタ用: 行の ID を保ったまま全行を1回で保存する。版が違えば 409（画面専用。API キー不可）"
method: PUT
path: "/api/v1/projects/{projectId}/lines/sync"
tags: ["projects"]
---

# 台本エディタ用: 行の ID を保ったまま全行を1回で保存する。版が違えば 409（画面専用。API キー不可）

`PUT /api/v1/projects/{projectId}/lines/sync`

## Request

- Base URL: `https://app.yukkurigen.com`
- URL: `https://app.yukkurigen.com/api/v1/projects/{projectId}/lines/sync`
- Auth: HTTP bearer

## Path parameters

- `projectId` string, required

## Request body

- object
  - `expectedVersion` integer, required: 読んだときの版（GET の version か、直前の PUT の version）
  - `lines` object[], required: 保存したい台本の全行（この順が index になる）。既にある id は書き換え、無い id はその id で作り、来なかった行は消す。書くのはエディタの列だけで、章・強調・図解・写真・素材の位置・読み・口パク・音声はサーバが残す。音声は text / character_id / pitch_scale が変わった行と clear_audio の行だけ外れる
    - `id` string, required: 行の文書 ID。新しい行は [A-Za-z0-9_-]{1,128}
    - `character_id` string, required
    - `speaker_id` integer, nullable
    - `emotion` string, nullable
    - `pose` string, nullable
    - `effects` string, nullable
    - `camera_mode` 'dynamic' | 'summary' | 'null', nullable
    - `material_image_url` string, nullable
    - `background_image_url` string, nullable
    - `bgm_path` string, nullable
    - `pitch_scale` number, nullable
    - `text` string, required
    - `is_shorts_cut` boolean, nullable
    - `clear_audio` boolean: この行の音声を外す（利用者が音声の削除を押した）
    - `restore` object: 新しく作る行にだけ使う、表に列の無い項目（元に戻した行の章・強調・図解・写真・素材の位置・読み・このプロジェクトの音声）。既にある行では無視する

## Response `200`

保存できた（何も変わっていなければ書かずに今の版を返す）

- object
  - `success` boolean
  - `projectId` string
  - `version` integer: 保存後の版。次の PUT の expectedVersion
  - `wrote` boolean
  - `lineCount` integer
  - `created` string[]
  - `updated` string[]
  - `deleted` string[]
  - `audioInvalidated` string[]: 音声を外した行の id
  - `lines` object[]: 保存後の全行（index 順）
    - `id` string
    - `index` integer

## Other responses

- `400`: リクエスト不正。何も書いていない
- `401`: 未ログイン
- `403`: 他人のプロジェクト
- `404`: プロジェクトが無い
- `409`: 読んだあとに台本が別の場所（AI など）で変更された。何も書いていない。最新を読み込んでから保存する

---

[API](https://skmtc.dev/yukkurigen/apis/yukkurigen-ai-operated-api.md) · [All operations](https://skmtc.dev/yukkurigen/apis/yukkurigen-ai-operated-api/llms.txt) · [OpenAPI document](https://skmtc.dev/yukkurigen/apis/yukkurigen-ai-operated-api/revisions/ba5f36b016da?raw)
