# クイックスタート

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

Canonical: https://transcript1.com/ja/docs/getting-started
Language: ja
Last updated: 2026-10-14

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

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

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

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

```bash
export TRANSCRIPT1_API_KEY="t1_..."
```

## 2. 動画のリンクを送る

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

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

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

### cURL

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

### Python

```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"`を設定します。

```javascript
// 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）も行いません。用途に合わせた選び方は[対応リンクと文字起こしの設定](https://transcript1.com/ja/docs/sources-and-options)で確認できます。

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

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

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

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

```json
{
  "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`のいずれかを指定してください。

```bash
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リクエストにまとめて送れます。

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

95MBを超えるファイルは、2GBまでチャンクに分けて送れます。途中で中断しても再開できます。実装方法は[ファイルのアップロード](https://transcript1.com/ja/docs/uploads)で説明しています。

## 関連ドキュメント

- [対応リンクと文字起こしの設定](https://transcript1.com/ja/docs/sources-and-options)：字幕とAI文字起こしの選び方、話者分離、言語を確認できます。
- [ファイルのアップロード](https://transcript1.com/ja/docs/uploads)：1リクエストで送る方法と、分割して送る方法を説明しています。
- [Webhook](https://transcript1.com/ja/docs/webhooks)：処理が終わったときに署名付きリクエストで通知を受け取れます。
- [MCPサーバー](https://transcript1.com/ja/docs/mcp)：Claude、ChatGPT、Cursor、VS Code、Claude Codeからの使い方を確認できます。
- [APIリファレンス](https://transcript1.com/ja/docs/api-reference)：全エンドポイントとパラメーターの仕様を調べられます。
