ドキュメントクイックスタート

クイックスタート

APIキーを発行し、動画リンクやファイルから文字起こしを取得します。cURL、Python、Node.jsのサンプルで始められます。

APIのベースURLはhttps://api.transcript1.comです。AuthorizationヘッダーにAPIキーを付けてリクエストします。このページでは、キーの発行から動画リンクやファイルの送信、文字起こしテキストの取得までを試します。

1. アカウントを登録し、APIキーを発行する

登録ページで、メールアドレス、Google、Microsoftのいずれかを使ってアカウントを作成します。メール認証を済ませると、60分の無料枠を使えます。この無料枠はアカウントごとに1回限りです。GoogleやMicrosoftで登録した場合は、登録直後から使えます。カードの登録はいりません。

次に、ダッシュボードの「API keys」(/dashboard/account/tokens)でキーを発行します。キーはt1_で始まり、確認できるのは発行時だけです。その場でコピーして、環境変数TRANSCRIPT1_API_KEYに設定してください。

export TRANSCRIPT1_API_KEY="t1_..."

YouTube、X、TikTok、Instagram、Facebook、Bluesky、Twitch、Dailymotion、Pinterest、LinkedIn、Snapchatの動画リンクを送れます。公開されている録画のうち、どの動画やURL形式を使えるかは対応リンクと文字起こしの設定で確認してください。APIがリンクからプラットフォームを判定するので、platformは省略できます。ここではYouTubeの動画を使います。

POST /v1/transcriptionsに動画のURLを指定します。クエリにwait=60を付けると、最大60秒間、処理の終了を待ってからレスポンスを返します。ただし、作成時のレスポンスに文字起こしテキストは含まれません。

Pythonの例では、続けてGET /v1/transcriptions/:id?wait=60を呼び出してテキストを取得します。Node.js SDKは環境変数TRANSCRIPT1_API_KEYを読み込み、完了までの待機も処理します。

cURL

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"}'

Python

import os
import requests
 
headers = {"Authorization": f"Bearer {os.environ['TRANSCRIPT1_API_KEY']}"}
response = requests.post(
    "https://api.transcript1.com/v1/transcriptions?wait=60",
    headers=headers,
    json={"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"},
)
response.raise_for_status()
transcription = response.json()
while True:
    transcription = requests.get(
        f"https://api.transcript1.com/v1/transcriptions/{transcription['id']}?wait=60",
        headers=headers,
    ).json()
    if transcription["status"] in ("completed", "failed", "canceled"):
        break
 
if transcription["status"] == "completed":
    print(transcription["transcript"]["text"])
else:
    print(transcription["status"], transcription["error"])

Node.js

次のコードをindex.mjsに保存し、node index.mjsで実行してください。拡張子を.jsにする場合は、package.jsonに"type": "module"を設定します。

// npm i @transcript1/sdk
import { Transcript1 } from '@transcript1/sdk';
 
const t1 = new Transcript1();
const transcription = await t1.transcribe('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
console.log(transcription.transcript.text);

設定を省略すると、YouTube、X、TikTok、Bluesky、Dailymotion、LinkedInでは、動画の元の言語の字幕を優先します。使える字幕トラックがなければ、AIが音声を文字起こしします。YouTubeとXの字幕の扱いは従来と同じです。YouTube以外の字幕で取得できるのはセグメント単位のタイムスタンプだけで、単語ごとのタイムスタンプはありません。

字幕があっても、source=sttまたは話者分離を指定するとAI文字起こしを使います。captions(字幕のみ)では音声をダウンロードせず、音声認識(STT)も行いません。用途に合わせた選び方は対応リンクと文字起こしの設定で確認できます。

3. 文字起こしを取得する

まずHTTPステータスを確認します。200でも、文字起こしに成功したとは限りません。

  • 200:待機中に処理が終了しました。statusはcompleted、failed、canceledのいずれかです。
  • 202:まだ処理中です。GET /v1/transcriptions/:id?wait=60で再度取得してください。このリクエストも最大60秒待機します。statusが最終ステータスになるまで繰り返します。

completedになった文字起こしの例です。一部のフィールドは省略しています。

{
  "id": "tr_8fK2Lm0PqRsTuVwXyZaBcD",
  "object": "transcription",
  "status": "completed",
  "transcript_source": "youtube_captions",
  "language": "en",
  "billed_minutes": 4,
  "transcript": {
    "text": "Welcome back to the channel. Today we are looking at how transcripts are made.",
    "speakers": [],
    "segments": [
      { "start": 0, "end": 4.2, "speaker": null, "language": "en", "text": "Welcome back to the channel." },
      { "start": 4.2, "end": 9.8, "speaker": null, "language": "en", "text": "Today we are looking at how transcripts are made." }
    ]
  }
}

全文はtranscript.textから取得します。transcript.segmentsにはタイムスタンプ付きのセグメントが入り、各セグメントのstartとendは秒で表します。

プレーンテキストや字幕ファイルで受け取るには、形式にtext、srt、vttのいずれかを指定してください。

curl "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD?format=srt" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY"

上の例はGET /v1/transcriptions/:id?format=srtです。指定した形式で取得できるのは、completedになってからです。それまではJSONオブジェクトが返るので、引き続きステータスを確認できます。

4. 手元のファイルを送る

手元の音声・動画ファイルも文字起こしできます。95MBまでなら、multipart/form-dataで1リクエストにまとめて送れます。

curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F [email protected]

95MBを超えるファイルは、2GBまでチャンクに分けて送れます。途中で中断しても再開できます。実装方法はファイルのアップロードで説明しています。

関連ドキュメント

最終更新 2026年10月14日