curl --request POST 'https://api.voicecheap.ai/v1/actions/transcripts_get' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"projectId":"project_launch_2026","source":"original","outputFormat":"json","includeSpeakerLabels":false}'
const input = {
projectId: 'project_launch_2026',
source: 'original',
outputFormat: 'json',
includeSpeakerLabels: false,
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/transcripts_get', {
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);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/transcripts_get",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"projectId": "project_launch_2026", "source": "original", "outputFormat": "json", "includeSpeakerLabels": False},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"format": "json",
"transcript": {
"source": "original",
"language": "fr",
"duration": 75,
"text": "Bienvenue au lancement.",
"speakers": [
{
"id": 0,
"label": "Speaker 1"
}
],
"segments": [
{
"index": 0,
"text": "Bienvenue au lancement.",
"begin": 0,
"end": 2,
"duration": 2,
"speaker": 0,
"language": "fr"
}
]
},
"contentType": "application/json"
}
}
文字起こしと編集
プロジェクトの文字起こしを取得またはエクスポート
原文または翻訳済みの文字起こしを JSON、SRT、VTT で取得します。必要に応じて話者ラベルを含められます。
POST
/
v1
/
actions
/
transcripts_get
curl --request POST 'https://api.voicecheap.ai/v1/actions/transcripts_get' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"projectId":"project_launch_2026","source":"original","outputFormat":"json","includeSpeakerLabels":false}'
const input = {
projectId: 'project_launch_2026',
source: 'original',
outputFormat: 'json',
includeSpeakerLabels: false,
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/transcripts_get', {
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);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/transcripts_get",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"projectId": "project_launch_2026", "source": "original", "outputFormat": "json", "includeSpeakerLabels": False},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"format": "json",
"transcript": {
"source": "original",
"language": "fr",
"duration": 75,
"text": "Bienvenue au lancement.",
"speakers": [
{
"id": 0,
"label": "Speaker 1"
}
],
"segments": [
{
"index": 0,
"text": "Bienvenue au lancement.",
"begin": 0,
"end": 2,
"duration": 2,
"speaker": 0,
"language": "fr"
}
]
},
"contentType": "application/json"
}
}
原文または翻訳済みの文字起こしを JSON、SRT、VTT で取得します。必要に応じて話者ラベルを含められます。
必要な権限:
POST https://api.voicecheap.ai/v1/actions/transcripts_get
認証と権限
string
必須
このヘッダーに VoiceCheap API キーを指定してください。同じ API キーを Authorization: Bearer で送信することもできます。OAuth アクセストークンは MCP
でのみ使用でき、この REST エンドポイントでは使用できません。
transcription:read.
有効な有料サブスクリプションが必要です。権限によってチーム内のロール、リソースの所有権、メディアクレジット、プランの制限が変わることはありません。
パラメーター
string
必須
テキスト値。最小文字数: 1. 最大文字数: 200. パターン:
^[^/\\]+$.string
テキスト値。許容値: “original”, “translated”. デフォルト値: “original”.
string
テキスト値。許容値: “afrikaans”, “albanian”, “amharic”, “arabic”, “armenian”, “assamese”, “azerbaijani”, “basque”, “belarusian”, “bengali”, “bosnian”, “bulgarian”, “catalan”, “croatian”, “czech”, “danish”, “dutch”, “english”, “british english”, “estonian”, “finnish”, “french”, “french canadian”, “galician”, “german”, “greek”, “gujarati”, “hebrew”, “hindi”, “hungarian”, “icelandic”, “indonesian”, “irish”, “italian”, “japanese”, “kannada”, “kazakh”, “khmer”, “korean”, “lao”, “latvian”, “lithuanian”, “macedonian”, “malay”, “malayalam”, “mandarin”, “marathi”, “mongolian”, “nepali”, “norwegian”, “persian”, “polish”, “portuguese”, “brazilian portuguese”, “pt_brazil”, “punjabi”, “romanian”, “russian”, “serbian”, “slovak”, “slovenian”, “spanish”, “swahili”, “swedish”, “tagalog”, “tamil”, “telugu”, “thai”, “turkish”, “ukrainian”, “urdu”, “vietnamese”, “welsh”, “yoruba”, “zulu”.
string
テキスト値。許容値: “json”, “srt”, “vtt”. デフォルト値: “json”.
boolean
真偽値。デフォルト値: false.
完全な入力スキーマ
完全な入力スキーマ
以下の JSON Schema は、ディスカバリーで公開される正確なフィールド名、ネストされた型、デフォルト値、範囲、許容値を保持しています。フィールド間の追加ルールは操作の注意事項に記載されています。
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[^/\\\\]+$"
},
"source": {
"default": "original",
"type": "string",
"enum": ["original", "translated"]
},
"targetLanguage": {
"type": "string",
"enum": [
"afrikaans",
"albanian",
"amharic",
"arabic",
"armenian",
"assamese",
"azerbaijani",
"basque",
"belarusian",
"bengali",
"bosnian",
"bulgarian",
"catalan",
"croatian",
"czech",
"danish",
"dutch",
"english",
"british english",
"estonian",
"finnish",
"french",
"french canadian",
"galician",
"german",
"greek",
"gujarati",
"hebrew",
"hindi",
"hungarian",
"icelandic",
"indonesian",
"irish",
"italian",
"japanese",
"kannada",
"kazakh",
"khmer",
"korean",
"lao",
"latvian",
"lithuanian",
"macedonian",
"malay",
"malayalam",
"mandarin",
"marathi",
"mongolian",
"nepali",
"norwegian",
"persian",
"polish",
"portuguese",
"brazilian portuguese",
"pt_brazil",
"punjabi",
"romanian",
"russian",
"serbian",
"slovak",
"slovenian",
"spanish",
"swahili",
"swedish",
"tagalog",
"tamil",
"telugu",
"thai",
"turkish",
"ukrainian",
"urdu",
"vietnamese",
"welsh",
"yoruba",
"zulu"
]
},
"outputFormat": {
"default": "json",
"type": "string",
"enum": ["json", "srt", "vtt"]
},
"includeSpeakerLabels": {
"default": false,
"type": "boolean"
}
},
"required": ["projectId"],
"additionalProperties": false
}
リクエスト例
例に記載されたリソース識別子とメディアキーを、ご自身のアカウントで返された値に置き換えてください。同じ変更操作を再試行する場合は、リクエスト識別子を変更しないでください。curl --request POST 'https://api.voicecheap.ai/v1/actions/transcripts_get' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"projectId":"project_launch_2026","source":"original","outputFormat":"json","includeSpeakerLabels":false}'
const input = {
projectId: 'project_launch_2026',
source: 'original',
outputFormat: 'json',
includeSpeakerLabels: false,
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/transcripts_get', {
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);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/transcripts_get",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"projectId": "project_launch_2026", "source": "original", "outputFormat": "json", "includeSpeakerLabels": False},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
レスポンス
初回実行が成功すると、操作結果を data に格納して HTTP 200 を返します。同じリクエストを再送した場合は、代わりに保存済みリクエストの状態を返すことがあります。例はサポートされるレスポンスの一例であり、すべての任意フィールドを示すものではありません。 指定形式の文字起こしオブジェクトを返します。JSON には format、transcript、contentType が含まれ、SRT/VTT にはさらに content と fileExtension が含まれます。{
"data": {
"format": "json",
"transcript": {
"source": "original",
"language": "fr",
"duration": 75,
"text": "Bienvenue au lancement.",
"speakers": [
{
"id": 0,
"label": "Speaker 1"
}
],
"segments": [
{
"index": 0,
"text": "Bienvenue au lancement.",
"begin": 0,
"end": 2,
"duration": 2,
"speaker": 0,
"language": "fr"
}
]
},
"contentType": "application/json"
}
}
結果フィールド
| フィールド | 説明 |
|---|---|
data.format | json、srt、vtt のいずれか。 |
data.contentType | application/json、application/x-subrip; charset=utf-8、または text/vtt; charset=utf-8。 |
data.content | srt/vtt の場合のみ含まれる字幕テキスト。 |
data.fileExtension | テキストエクスポートにのみ使用する srt または vtt。 |
data.transcript.source | original または translated。 |
data.transcript.language | 文字起こしの言語。 |
data.transcript.duration | 保存済みメディアの長さと最終セグメントの終了時刻のうち、大きい方の値(秒)。 |
data.transcript.text | 空でないセグメントテキストを結合したもの。 |
data.transcript.speakers | 数値の id で並べ替えた一意の話者。生成された Speaker N ラベルを含みます。 |
data.transcript.segments | begin と index で並べ替えた正規化済みセグメント。index、text、begin、end、duration、speaker、language、および任意の confidence、finalSpeedFactor、words を含みます。 |
data.transcript.workId | 翻訳済みの文字起こしの場合に含まれます。 |
data.transcript.targetLanguage | 翻訳済みの文字起こしの場合に含まれます。 |
data.transcript.segments[].begin | 開始時刻。秒単位で、小数点以下 3 桁に正規化されます。 |
data.transcript.segments[].end | 終了時刻。秒単位で、小数点以下 3 桁に正規化されます。 |
data.transcript.segments[].duration | 正の値のセグメント長。秒単位。 |
data.transcript.segments[].speaker | 0 から始まる話者番号。 |
data.transcript.segments[].finalSpeedFactor | 任意の、翻訳音声の長さをセグメントの時間枠で割り、小数点以下 3 桁に丸めた値。1 を超える場合は、音声の速度を上げる必要があったことを示します。 |
設定:outputFormat srt; source translated, targetLanguage english, includeSpeakerLabels true。
話者接頭辞付きの翻訳済み文字起こしと SRT 内容を返します。HTTP 200
{
"data": {
"format": "srt",
"transcript": {
"source": "translated",
"language": "english",
"duration": 75,
"text": "Welcome to the product launch.",
"speakers": [
{
"id": 0,
"label": "Speaker 1"
}
],
"segments": [
{
"index": 0,
"text": "Welcome to the product launch.",
"begin": 0,
"end": 2,
"duration": 2,
"speaker": 0,
"language": "english",
"finalSpeedFactor": 1.08
}
],
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24",
"targetLanguage": "english"
},
"content": "1\n00:00:00,000 --> 00:00:02,000\nSpeaker 1: Welcome to the product launch.\n",
"contentType": "application/x-subrip; charset=utf-8",
"fileExtension": "srt"
}
}
outputFormat は vtt、source は translated、targetLanguage は english、includeSpeakerLabels は true。
翻訳済み文字起こしと、音声ラベル付きのWEBVTTコンテンツを返します。HTTP 200
{
"data": {
"format": "vtt",
"transcript": {
"source": "translated",
"language": "english",
"duration": 75,
"text": "Welcome to the product launch.",
"speakers": [
{
"id": 0,
"label": "Speaker 1"
}
],
"segments": [
{
"index": 0,
"text": "Welcome to the product launch.",
"begin": 0,
"end": 2,
"duration": 2,
"speaker": 0,
"language": "english",
"finalSpeedFactor": 1.08
}
],
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24",
"targetLanguage": "english"
},
"content": "WEBVTT\n\n1\n00:00:00.000 --> 00:00:02.000\n<v Speaker 1>Welcome to the product launch.\n",
"contentType": "text/vtt; charset=utf-8",
"fileExtension": "vtt"
}
}
操作の注意事項
- source のデフォルトは original、outputFormat は json、includeSpeakerLabels は false です。source が translated の場合は targetLanguage が必要です。
- 翻訳済み文字起こしでは、targetLanguage に一致する最新の言語ワークを選択します。このアクションに workId または translatedVersionId の入力はありません。
- SRT と VTT のエクスポートも JSON のアクション結果です。content に字幕テキストが入り、同じオブジェクト内で transcript も引き続き利用できます。このハンドラーはそのままダウンロードできる生のレスポンスを返しません。
- includeSpeakerLabels はテキストエクスポートの字幕キューにのみ影響します。SRT は Speaker N: の接頭辞、VTT は音声タグを使用します。
- 保存済みの文字起こし単語がある場合、index、text、speaker、および任意の confidence を公開します。単語単位のタイムスタンプは新たに推定しません。生成音声のタイミング情報がある場合、翻訳済みセグメントに finalSpeedFactor が含まれることがあります。
使用量
正常に実行された呼び出しごとに、月間 API/MCP 呼び出し回数を 1 回消費します。メディアクレジットと、その操作固有の生成枠も適用されます。エラー
| HTTP ステータス | コード | 意味または対処方法 |
|---|---|---|
| 400 | CREDENTIAL_IN_QUERY | access_token または api_key クエリパラメーターに認証情報が指定されています。認証情報はヘッダーで送信してください。 |
| 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 | AMBIGUOUS_TEAM_API_KEY | 認証情報のユーザーが複数のチームに属しているため、課金コンテキストが曖昧です。 |
| 403 | FORBIDDEN | 認証済み実行者は、このプロジェクトにアクセスできません。 |
| 403 | INSUFFICIENT_SCOPE | 必要な権限をすべて付与するか、別の認証情報を使用してください。 |
| 403 | INTEGRATION_PLAN_UNSUPPORTED | アカウントの連携上限を確認できませんでした。 |
| 403 | SUBSCRIPTION_REQUIRED | 有効な有料サブスクリプションを使用してください。 |
| 403 | TEAM_OWNER_NOT_FOUND | 実効的なチームオーナーのアカウントが見つかりませんでした。 |
| 404 | PROJECT_NOT_FOUND | アクセス可能なアカウントにこのプロジェクトは存在しません。 |
| 404 | TRANSCRIPT_NOT_FOUND | 指定されたソースと翻訳先言語に、使用可能な文字起こしが存在しません。 |
| 409 | TRANSCRIPT_NOT_READY | 指定された原文または翻訳済み文字起こしは、まだ processing 状態です。 |
| 429 | INTEGRATION_MONTHLY_LIMIT_REACHED | 月次リセットを待つか、プランを変更してください。 |
| 429 | INTEGRATION_RATE_LIMIT_REACHED | Retry-After がある場合は指定時間を待ち、バックオフを使用してください。 |
| 500 | INTERNAL_ERROR | 変更操作を再試行するか判断する前に、保存済みリクエストの状態とリソースの履歴を確認してください。 |
| 503 | SERVER_RESTARTING | サーバーが再起動中です。少し待ってから再試行し、変更操作では同じリクエスト識別子を使用してください。 |
{
"code": "INSUFFICIENT_SCOPE",
"message": "This credential does not permit the requested action.",
"status": 403,
"details": {
"requiredScopes": ["transcription:read"]
}
}
このページは役に立ちましたか?

