# 翻訳

> 文字起こしと同時に、または後から別の言語へ翻訳し、二か国語や翻訳のみのテキスト・SRT・VTTを取得します。

Canonical: https://transcript1.com/ja/docs/translation
Language: ja
Last updated: 2026-10-31

transcript1はまずメディアを文字起こしし、続いて文字起こしのテキストをお好きな言語へ翻訳します。翻訳はセグメントごとに対応づけられ、元のタイムスタンプと話者がそのまま保たれます。翻訳するのはテキストだけで、吹き替えや翻訳音声はありません。

翻訳は無料です。使う分数は0分で、使用履歴には無料の「Translation」項目として表示されます。文字起こしの分数はこれまでどおり差し引かれ、翻訳が失敗しても文字起こしが失敗したり返金されたりすることはありません。

## 文字起こしと同時に翻訳する

文字起こしを作成するリクエストに`translate_to`を加えます。`es`や`en`のような、小文字2文字のISO 639-1コードです。`POST /v1/transcriptions`のJSON本文にある動画リンク、チャンクアップロードの予約、1回で済むmultipartアップロードのいずれでも使えます。

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "translate_to": "es"}'
```

ファイルをアップロードするときは、`translate_to`をフォームフィールドとして送ります。

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F file=@interview.m4a \
  -F translate_to=en
```

MCPの`transcribe`ツールも`translate_to`を受け取ります。1回のリクエストで指定できる翻訳先は1言語です。

## すでにある文字起こしを翻訳する

完了した文字起こしの翻訳を依頼します。

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/translations" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"language": "en"}'
```

APIは`202`を返します。

```json
{
  "transcription_id": "tr_8fK2Lm0PqRsTuVwXyZaBcD",
  "language": "en",
  "status": "processing"
}
```

| ステータス | 意味 |
|---|---|
| `404` | 文字起こしが見つかりません。 |
| `409 transcript_not_ready` | 文字起こしがまだ`completed`ではありません。 |
| `422` | 言語が有効な2文字のコードではありません。 |

この呼び出しは冪等です。`processing`または`completed`の翻訳はそのまま返り、`failed`の翻訳は再試行されます。MCPツール`translate_transcription`は`id`と`language`を受け取ります。

## 翻訳を読み出す

`GET /v1/transcriptions/:id`と、テキスト・SRT・VTTのダウンロードは`translation`を受け付けます。

| `translation` | 結果 |
|---|---|
| `both` （デフォルト） | JSONのセグメントに`translation`フィールドが付きます。テキストでは翻訳の行が原文の下に入ります。SRTとVTTの各キューは2行で、原文、翻訳の順です。 |
| `only` | 翻訳が`text`の代わりになります。タイムスタンプと話者は変わりません。 |
| `none` | 原文の文字起こしのみ。 |

レスポンスには`translation`オブジェクトが入ります。翻訳を依頼していない場合は`null`です。

```json
{
  "translation": { "language": "es", "status": "completed" }
}
```

`status`は`processing`、`completed`、`failed`のいずれかです。翻訳が失敗した場合は`error`メッセージも付きます。`wait`は依頼した翻訳の完了も待ち、待機時間を超えるとステータスは`processing`になります。MCPの`get_transcription`ツールにも同じ値を取る`translation`パラメーターがあります。

## Webhook

変更のない`transcription.completed`と`transcription.failed`に加え、翻訳の結果を知らせるイベントが2つあります。

| `type` | 送信されるタイミング |
|---|---|
| `transcription.translation.completed` | 依頼した翻訳が`completed`になったとき。 |
| `transcription.translation.failed` | 依頼した翻訳が`failed`になったとき。 |

`data`は文字起こしオブジェクトに`translation: { language, status, error }`を加えたものです。署名と配信ルールは[Webhooks](https://transcript1.com/ja/docs/webhooks)をご覧ください。
