> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.voicecheap.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 文字起こしセグメントを編集

> 原文または翻訳文の編集をキューに追加します。再試行に備えて、requestId には固定の UUID が必要です。segment_actions_list をポーリングして完了を確認してください。

原文または翻訳文の編集をキューに追加します。再試行に備えて、requestId には固定の UUID が必要です。segment\_actions\_list をポーリングして完了を確認してください。

```http theme={null}
POST https://api.voicecheap.ai/v1/actions/segments_text_update
```

## 認証と権限

<ParamField header="x-api-key" type="string" required>
  このヘッダーに VoiceCheap API キーを指定してください。同じ API キーを Authorization: Bearer で送信することもできます。OAuth アクセストークンは MCP
  でのみ使用でき、この REST エンドポイントでは使用できません。
</ParamField>

必要な権限: `transcription:write`.

有効な有料サブスクリプションが必要です。権限によってチーム内のロール、リソースの所有権、メディアクレジット、プランの制限が変わることはありません。

## パラメーター

<ParamField body="projectId" type="string" required>
  テキスト値。

  最小文字数: 1. 最大文字数: 200. パターン: `^[^/\\]+$`.
</ParamField>

<ParamField body="segmentIndex" type="integer" required>
  整数値。

  最小値: 0. 最大値: 9007199254740991.
</ParamField>

<ParamField body="requestId" type="string">
  トランスポート境界では任意です。省略すると、検証前にサーバーが識別子を補完します。レスポンスを受信できなかった場合に安全に復旧できるよう、固定の UUID v4 を指定してください。

  形式: "uuid". パターン: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$`.
</ParamField>

<ParamField body="source" type="string" required>
  テキスト値。

  許容値: "original", "translated".
</ParamField>

<ParamField body="workId" type="string">
  テキスト値。

  最小文字数: 1. 最大文字数: 200. パターン: `^[^/\\]+$`.
</ParamField>

<ParamField body="text" type="string" required>
  テキスト値。

  最大文字数: 3000.
</ParamField>

<ParamField body="enableEditing" type="boolean">
  真偽値。
</ParamField>

<Accordion title="完全な入力スキーマ">
  以下の JSON Schema は、ディスカバリーで公開される正確なフィールド名、ネストされた型、デフォルト値、範囲、許容値を保持しています。フィールド間の追加ルールは操作の注意事項に記載されています。

  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "projectId": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200,
        "pattern": "^[^/\\\\]+$"
      },
      "segmentIndex": {
        "type": "integer",
        "minimum": 0,
        "maximum": 9007199254740991
      },
      "requestId": {
        "type": "string",
        "format": "uuid",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
        "description": "UUID v4 for this action. Reuse the same ID with identical arguments on retries."
      },
      "source": {
        "type": "string",
        "enum": ["original", "translated"]
      },
      "workId": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200,
        "pattern": "^[^/\\\\]+$"
      },
      "text": {
        "type": "string",
        "maxLength": 3000
      },
      "enableEditing": {
        "type": "boolean"
      }
    },
    "required": ["projectId", "segmentIndex", "source", "text"],
    "additionalProperties": false
  }
  ```
</Accordion>

## 冪等性

変更操作ごとに、requestId または Idempotency-Key HTTP ヘッダーに UUID v4 を指定してください。ネットワーク障害後の再試行では、同じ識別子と同一の引数を使用します。両方を指定する場合は一致させる必要があります。保存済みリクエストを再取得しても、操作は再実行されず、月間呼び出し回数も追加で消費されません。失敗または中断したリクエストは自動的には再開されません。

すべての変更操作は、再試行時に同じリクエストがまだ実行中であれば、通常の初回実行が同期処理であっても HTTP 202 を返す場合があります。実行が完了していても resultStored が false の場合、再試行では元の結果ではなく、保存済みリクエストの状態を HTTP 200 で返します。出力は対応するドメインの履歴、結果、またはダウンロードアクションで取得してください。

## リクエスト例

例に記載されたリソース識別子とメディアキーを、ご自身のアカウントで返された値に置き換えてください。同じ変更操作を再試行する場合は、リクエスト識別子を変更しないでください。

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST 'https://api.voicecheap.ai/v1/actions/segments_text_update' \
    --header "x-api-key: $VOICECHEAP_API_KEY" \
    --header 'Content-Type: application/json' \
    --data '{"projectId":"project_launch_2026","segmentIndex":0,"requestId":"41321bda-e243-4b6f-96a4-622cd047c991","source":"original","text":"Bienvenue au lancement de VoiceCheap."}'
  ```

  ```javascript JavaScript theme={null}
  const input = {
    projectId: 'project_launch_2026',
    segmentIndex: 0,
    requestId: '41321bda-e243-4b6f-96a4-622cd047c991',
    source: 'original',
    text: 'Bienvenue au lancement de VoiceCheap.',
  };
  const response = await fetch('https://api.voicecheap.ai/v1/actions/segments_text_update', {
    method: 'POST',
    headers: {
      'x-api-key': process.env.VOICECHEAP_API_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(input),
  });
  const body = await response.json();
  if (!response.ok) throw new Error(body.code + ': ' + body.message);
  console.log(body);
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://api.voicecheap.ai/v1/actions/segments_text_update",
      headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
      json={"projectId": "project_launch_2026", "segmentIndex": 0, "requestId": "41321bda-e243-4b6f-96a4-622cd047c991", "source": "original", "text": "Bienvenue au lancement de VoiceCheap."},
      timeout=120,
  )
  body = response.json()
  if not response.ok:
      raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
  print(body)
  ```
</RequestExample>

## レスポンス

初回実行が成功すると、操作結果を data に格納して HTTP 200 を返します。同じリクエストを再送した場合は、代わりに保存済みリクエストの状態を返すことがあります。例はサポートされるレスポンスの一例であり、すべての任意フィールドを示すものではありません。

原文または翻訳文の編集について、キューへの受け入れ結果と最新のキュースナップショットを返します。

<ResponseExample>
  ```json HTTP 200 theme={null}
  {
    "data": {
      "status": "queued",
      "jobId": "41321bda-e243-4b6f-96a4-622cd047c991",
      "queue": {
        "projectId": "project_launch_2026",
        "revision": 1,
        "items": [
          {
            "id": "41321bda-e243-4b6f-96a4-622cd047c991",
            "action": {
              "type": "text",
              "segmentIndex": 0,
              "source": "original"
            },
            "status": "queued",
            "createdAt": 1792152000000
          }
        ]
      }
    },
    "requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
  }
  ```

  ```json HTTP 202 replay_running theme={null}
  {
    "data": {
      "requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
      "operation": "segments_text_update",
      "createdAt": 1792144800000,
      "updatedAt": 1792144820000,
      "status": "running",
      "pollAfterSeconds": 5
    },
    "requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
  }
  ```

  ```json HTTP 200 replay_completed_without_result theme={null}
  {
    "data": {
      "requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
      "operation": "segments_text_update",
      "createdAt": 1792144800000,
      "updatedAt": 1792144820000,
      "status": "completed",
      "resultStored": false,
      "message": "The action completed. Retrieve its output from the corresponding history or resource action."
    },
    "requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
  }
  ```
</ResponseExample>

## 結果フィールド

| フィールド | 説明 |
| - | - |
| `data.status` | このジョブがワーカーに取得された、または開始済みの場合は started、それ以外は queued。どちらも完了を意味しません。 |
| `data.jobId` | キュージョブの識別子。送信時の固定 requestId と同じ値です。 |
| `data.queue` | 最新のプロジェクトキュースナップショット。すでにジョブが running または終了状態になっている場合があります。 |
| `data.queue.projectId` | 親プロジェクトの識別子。 |
| `data.queue.revision` | キュースナップショットのリビジョン。projects\_get.segmentStructureRevision とは独立しています。 |
| `data.queue.items` | プロジェクトのアクションの進行状況：ジョブ識別子、アクションのメタデータ、状態、タイムスタンプ、および任意の公開 errorCode。 |
| `data.queue.items[].id` | ジョブ識別子。元のキュー送信の requestId と一致します。 |
| `data.queue.items[].action` | アクションのメタデータのみ：type、segmentIndex、および任意の workId、translatedVersionId、source。送信されたテキスト、時間値、再生成の指示は返されません。 |
| `data.queue.items[].status` | queued、running、completed、failed、cancelled のいずれか。 |
| `data.queue.items[].createdAt` | キュー項目の作成時刻（Unixミリ秒）。 |
| `data.queue.items[].startedAt` | 省略可能な初回開始時刻。Unix 時間のミリ秒単位。 |
| `data.queue.items[].finishedAt` | 省略可能な終了時刻。Unix 時間のミリ秒単位。 |
| `data.queue.items[].errorCode` | 任意の公開エラーコード。分類されていない失敗には ACTION\_FAILED を使用します。 |
| `data.queue.items[].seenAt` | 認証済みの閲覧者のみに対応する、任意の確認時刻。 |

## リクエストの復旧とポーリング

接続が切断された後も同じ識別子を使用してください。resultStored が false の場合は、対応する履歴、結果、またはダウンロードアクションで出力を取得します。進捗を確認するためだけに、別の生成を開始しないでください。

```bash theme={null}
curl --request POST 'https://api.voicecheap.ai/v1/actions/action_request_get' \
  --header "x-api-key: $VOICECHEAP_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{"requestId":"41321bda-e243-4b6f-96a4-622cd047c991","operation":"segments_text_update"}'
```

```json HTTP 200 theme={null}
{
  "data": {
    "requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
    "operation": "segments_text_update",
    "status": "completed",
    "createdAt": 1792144800000,
    "updatedAt": 1792144820000,
    "resultStored": true,
    "result": {
      "status": "queued",
      "jobId": "41321bda-e243-4b6f-96a4-622cd047c991",
      "queue": {
        "projectId": "project_launch_2026",
        "revision": 1,
        "items": [
          {
            "id": "41321bda-e243-4b6f-96a4-622cd047c991",
            "action": {
              "type": "text",
              "segmentIndex": 0,
              "source": "original"
            },
            "status": "queued",
            "createdAt": 1792152000000
          }
        ]
      }
    }
  }
}
```

## 操作の注意事項

* 対象の編集に 1 つの UUID v4 requestId を使用し、再試行時も同じ引数で再利用してください。jobId はこの requestId と一致します。
* 受け入れ時には started または queued を返し、完了を示すものではありません。segment\_actions\_list をポーリングし、items\[].id が jobId と一致する項目が completed、failed、cancelled になるまで確認した後、transcripts\_get と projects\_get を再取得してください。
* queue.revision はキューの状態を追跡するもので、原文セグメント構造のリビジョンではありません。キューのアクションは受け入れ時の構造を記録します。後から互換性のない構造変更があると、その項目は SEGMENT\_STRUCTURE\_CHANGED で失敗する場合があります。
* 論理的に同じセグメントを対象とする処理待ちアクションは、1件だけ受け付けられます。新しい requestId を使っても SEGMENT\_ACTION\_ALREADY\_PENDING は回避できません。
* キュー実行時の失敗は、成功済みの送信結果を変更せず、items\[].status の failed と errorCode に表示されます。
* 原文を編集する場合は workId と enableEditing を省略してください。原文を編集すると、すべての言語別ワークでそのセグメントが翻訳待ちになります。新しい音声は自動生成されません。
* 翻訳文を編集する場合は source に translated を指定し、workId を渡してください。transcription:write と translations:write の両方の権限が必要です。
* enableEditing は翻訳文の編集でのみ使用でき、手動翻訳モードを明示的に切り替えます。翻訳文を編集すると、音声を再生成せずにテキストと編集状態が更新されます。
* アクションスキーマでは空のテキスト文字列も許可されます。セグメントの削除には、すべての言語の整合性を保つため、専用の segments\_delete を使用してください。
* 送信、キャンセル、ポーリング、再実行を含むキュー応答には、アクションのメタデータのみが含まれます。文字起こしの内容は、必要な transcription:read 権限で transcripts\_get を使用して取得してください。

## 使用量

正常に実行された呼び出しごとに、月間 API/MCP 呼び出し回数を 1 回消費します。メディアクレジットと、その操作固有の生成枠も適用されます。

## エラー

| HTTP ステータス | コード | 意味または対処方法 |
| - | - | - |
| 400 | `BAD_REQUEST` | 原文セグメントのインデックスが存在しないか、キューの引数が無効です。 |
| 400 | `CREDENTIAL_IN_QUERY` | access\_token または api\_key クエリパラメーターに認証情報が指定されています。認証情報はヘッダーで送信してください。 |
| 400 | `IDEMPOTENCY_CONFLICT` | Idempotency-Key ヘッダーとリクエストボディの requestId は一致させる必要があります。 |
| 400 | `INVALID_REQUEST_ID` | UUID v4 の requestId または Idempotency-Key を指定してください。 |
| 400 | `SEGMENT_QUEUE_FULL` | このプロジェクトには、すでに処理待ちのセグメントアクションが 50 件あります。 |
| 400 | `VALIDATION_ERROR` | スキーマに従って入力を修正してください。無効な値や整合性のない値は実行前に拒否されます。 |
| 401 | `API_KEY_EXPIRED` | API キーの有効期限が切れています。 |
| 401 | `INVALID_API_KEY` | 有効期限内の有効な API キーを指定してください。 |
| 401 | `INVALID_CREDENTIAL` | Authorization ヘッダーの形式が不正、または x-api-key と競合しています。 |
| 401 | `MISSING_CREDENTIAL` | 利用可能なヘッダー認証情報が指定されていないか、4096文字を超えています。 |
| 401 | `USER_NOT_FOUND` | 認証情報に対応するアカウントはすでに存在しません。 |
| 403 | `ACCOUNT_UNAVAILABLE` | 操作を実行するアカウントまたは請求対象アカウントが利用できないか、削除中です。 |
| 403 | `AMBIGUOUS_TEAM_API_KEY` | 認証情報のユーザーが複数のチームに属しているため、課金コンテキストが曖昧です。 |
| 403 | `FORBIDDEN` | 認証済み実行者は、このプロジェクトにアクセスできません。 |
| 403 | `INSUFFICIENT_SCOPE` | 翻訳テキストの編集には、追加で translations:write が必要です。 |
| 403 | `INTEGRATION_PLAN_UNSUPPORTED` | アカウントの連携上限を確認できませんでした。 |
| 403 | `SUBSCRIPTION_REQUIRED` | 有効な有料サブスクリプションを使用してください。 |
| 403 | `TEAM_OWNER_NOT_FOUND` | 実効的なチームオーナーのアカウントが見つかりませんでした。 |
| 404 | `PROJECT_NOT_FOUND` | アクセス可能なアカウントにこのプロジェクトは存在しません。 |
| 404 | `TRANSLATION_NOT_FOUND` | 翻訳編集ワークはこのプロジェクトに属していません。 |
| 409 | `CONCURRENT_ACTION_LIMIT_REACHED` | このアカウントでは、すでに 10 件の連携アクションが実行中です。新しいアクションを開始する前に、既存のリクエストをポーリングしてください。 |
| 409 | `IDEMPOTENCY_CONFLICT` | 識別子を再利用する場合は、同じ操作と引数でのみ使用してください。 |
| 409 | `SEGMENT_ACTION_ALREADY_PENDING` | 同じ論理セグメントを対象とするアクションが、すでに queued または running です。 |
| 409 | `SEGMENT_STRUCTURE_BUSY` | セグメント構造の変更処理が進行中です。再送信する前にプロジェクトを再読み込みしてください。 |
| 429 | `INTEGRATION_MONTHLY_LIMIT_REACHED` | 月次リセットを待つか、プランを変更してください。 |
| 429 | `INTEGRATION_RATE_LIMIT_REACHED` | Retry-After がある場合は指定時間を待ち、バックオフを使用してください。 |
| 500 | `INTERNAL_ERROR` | 変更操作を再試行するか判断する前に、保存済みリクエストの状態とリソースの履歴を確認してください。 |
| 503 | `ACTION_RESULT_UNAVAILABLE` | アクションは実行されましたが、結果を保存できませんでした。新しい生成を開始する前に、保存済みリクエストの状態とリソース履歴を確認してください。 |
| 503 | `INTERNAL_ERROR` | 開発サーバーでセグメントキューが無効になっているため、アクションは受け入れられませんでした。 |
| 503 | `SERVER_RESTARTING` | サーバーが再起動中です。少し待ってから再試行し、変更操作では同じリクエスト識別子を使用してください。 |

```json theme={null}
{
  "code": "INSUFFICIENT_SCOPE",
  "message": "This credential does not permit the requested action.",
  "status": 403,
  "details": {
    "requiredScopes": ["transcription:write"]
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.