Hushscriptの自動文字起こしは、既存の音声録音を編集可能な文字起こし結果に変換します。 ブラウザアプリでは、端末内の動画から始めることもできます。Hushscriptが端末上で音声を 準備し、その音声だけをオンラインの音声認識サービスに送信します。結果はご自身で 確認・修正してください。人による校正や認証を提供する文字起こしサービスではありません。
自動文字起こしの流れ
- 録音を準備。 音声ファイルを用意するか、対応する音声リンクを取り込むか、 ブラウザアプリで声を録音します。動画の場合は、アプリが端末上で音声を準備できるよう、 端末内のファイルを選択します。
- 送信して文字起こし結果を待つ。 アプリがアップロードと処理状況の確認を行います。 エージェントはREST APIで準備済みの音声を分割アップロードするか、スコープで権限が 制限されたMCPツールを利用し、文字起こし結果ができるまでジョブの状態を確認できます。
- 確認してエクスポート。 アプリで文字起こし結果や話者ラベルを編集するか、APIで テキストを取得します。エージェントのトークンでも、付与されたスコープの範囲内で 文字起こし結果をエクスポートできます。
音声・動画の自動文字起こしソフトウェア
Hushscriptの自動文字起こしソフトウェアは、録音した発話を検索・編集・エクスポート できるテキストに変換します。アプリの録音機能で声を録音してから、文字起こしすることも できます。文字起こしせずに録音ファイルだけを作る場合は、録音サイト をご利用ください。
動画の自動文字起こしも、アプリが端末上で音声を抽出または変換した後は、同じ手順で テキストを扱えます。以下のRESTアップロード例では、準備済みの音声を使います。 端末内の動画ファイルをアプリで扱う場合は、動画の文字起こしの ブラウザでの手順をご覧ください。
自動文字起こしを無料で試せますか?
はい。公開プレビューでは、サインイン前に1つのファイル、対応する音声リンク、 またはブラウザでの録音から最大5分まで文字起こしできます。端末内の動画も、 ブラウザが音声を準備した後に利用できます。全体の文字起こしにはアカウントが必要です。 対象の個人アカウントはカード確認後に無料30分を受け取れます(仕組みは料金ページ をご覧ください)。一方、マシンアカウントにはウェルカム分数がなく、サインアップ時に 購入したパックから始まります。
APIやMCPによる文字起こしの自動化
ブラウザアプリでは、録音を直接操作できます。文字起こしを自動化する場合は、 REST APIやMCPサーバーを使って、エージェントが準備済みの音声を アップロードし、ジョブの状態を確認し、文字起こし結果を取得・エクスポートできます。 エージェントは支払いを先に済ませるフローで、人のアカウント所有者を介さずに専用の アカウントを開設できます。ただし、ホスト型チェックアウトにはブラウザが必要で、 カード発行会社が認証手続きを求める場合もあります。個人の方は、アプリで既存の アカウントからスコープを指定したトークンを作成することもできます。ここでは、 マシンアカウントのサインアップから認証情報のローテーションまでを説明します。
サインアップ
POST /v1/agent/accountsはヘッドレスのサインアップを開始します。まだアカウントも
クッキーもトークンもなく、あるのは保留中の購入だけです。
curl -X POST https://api.hushscript.com/v1/agent/accounts \
-H "Content-Type: application/json" \
-d '{
"contact_email": "ops@example-agent.dev",
"pack_id": "300min",
"accept_terms_version": "2026-10-20",
"agent": {
"name": "research-crawler",
"platform": "langgraph",
"contact_url": "https://example-agent.dev/bots/research-crawler"
}
}'
{
"signup_id": "hsr1:eu:4c3a1f9e7b2d4e6f8a0c1b2d3e4f5061",
"claim_secret": "cs_9f3d2a1b7e6c4f5a8b9d0e1f2a3b4c5d",
"checkout_url": "https://checkout.stripe.com/c/pay/cs_test_a1B2c3D4e5F6",
"pack": "300min",
"amount": 599,
"currency": "usd",
"expires_at": 1789112400
}
contact_emailは領収書と通知専用で、ログインには使いません。pack_idは
45min、300min、900min、1800min、6000minのいずれかです。amountや
currencyは送信しないでください。どちらもサーバー側でパックから決まります。
サインアップ時に購入できるのは最も小さい2つのパック、45minと300minだけです。
それより大きいpack_idは拒否されます。拒否のレスポンスには、現在購入できるパックの
一覧を示すdetails.allowed_packsが含まれるため、呼び出し側は推測せずに再試行できます。
それ以外のパックは購入量ではなく経過時間によって解放されます。詳しくは下記の
新規アカウントで購入できるパックをご覧ください。
accept_terms_versionは、サーバーの現在のポリシーバージョンと正確に一致する必要が
あります。一致しない場合はpolicy_version_staleで失敗し、レスポンスボディに現在の
値が示されます。任意のdata_regionヒントは、ネットワークの所在地から決まる地域と
一致する場合にのみ採用されます。任意のdry_run: trueは、Stripeセッションを作らず、
課金もせずにすべてを検証します。この場合のsignup_idにはdry_という接頭辞が付き、
クレームには使えません。
claim_secretはこのレスポンスで一度だけ表示されます。Hushscriptはそのハッシュのみを
保存します。クレームの呼び出し前にこれを失うと、サインアップを完了できなくなります。
クレームシークレットを復旧する手段はありません。支払い済みで未クレームの
サインアップは下記の返金処理に進みます。照会による復旧はできません。
自分のブラウザでチェックアウトを完了
checkout_urlはStripeのホスト型Checkoutページです。サインアップのこの手順には
ブラウザが必要ですが、人が操作するブラウザである必要はありません。エージェントは
独自の自動化で操作できます(カード情報の入力、送信、リダイレクトへの追従)。
いずれの場合もカード情報を扱うのはStripeで、Hushscriptはカード情報を受け取りません。
チェックアウトの完了とその後のクレームの期限は30分で、上記のexpires_atが示します。
1時間ごとの定期処理が、30分のクレーム期限とさらに1時間の猶予を過ぎた、支払い済みで 未クレームのサインアップを確認します。分数はクレーム時にのみ付与されるため、 全額の返金を試みます。返金に失敗した場合は再試行し、手作業での対応が必要になることも あります。特定の時点までに返金されることを保証するものではありません。
アカウントのクレーム
POST /v1/agent/accounts/{signup_id}/claimは、支払い済みで未クレームの
サインアップを、1回の呼び出しで実際のアカウントに変えます。
curl -X POST https://api.hushscript.com/v1/agent/accounts/hsr1:eu:4c3a1f9e7b2d4e6f8a0c1b2d3e4f5061/claim \
-H "Content-Type: application/json" \
-d '{"claim_secret": "cs_9f3d2a1b7e6c4f5a8b9d0e1f2a3b4c5d"}'
{
"user_id": "usr_7d1a2b3c4d5e6f708192a3b4c5d6e7f8",
"pat": "hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170",
"scopes": [
"transcripts:read",
"transcripts:write",
"transcribe",
"account:read",
"export",
"billing",
"pat:rotate"
],
"balance_seconds": 18000
}
クレームでは、ログインに利用できない合成の識別情報を持つアカウントを1つだけ作成し、
リクエストを何回再試行しても購入済みパックを一度だけ付与します。発行するPATは
1つで、それが上記のpatの値です。
レスポンスが失われた場合は、同じclaim_secretで呼び出しを繰り返してください。
クレームから1時間以内で、発行されたトークンが一度も使われていなければ、再試行は
同じアカウントについて、同じ形式のレスポンスと新しいpatを添えて201を返します。
失われたトークンは使えなくなります。トークンが初めて使われた後、または1時間が
過ぎた後の再試行には、agent_claim_invalidを返します。まだ処理中のクレームと
重なった再試行には、Retry-Afterヘッダー付きの429 rate_limitedが返ることが
あります。その時間を待ってから再試行してください。
最初のトークンには、文字起こし、文字起こし結果の読み取り・編集・エクスポート、 アカウント残高の読み取り、分数の購入、自身のローテーションが許可されます。 Insights、コンテキスト、組織のスコープと、設定を書き込むスコープは付与されません。 MCPサーバーが提供するのは、トークンのスコープで許可されたツールだけです。
シークレットが間違っている場合、signup_idが不明な場合、返金済み・期限切れの場合、
トークンがすでに使用済み、または1時間が過ぎた後の再クレームの場合は、すべて同じ
agent_claim_invalidエラーを返します。レスポンスから
区別できないのは意図的な設計です。シークレット自体が正しいことを確認して初めて
支払い状態を確認します。まだ支払いが確定していないCheckoutセッションの場合は、
代わりにwrong_stateを返します。
上記のbalance_secondsが開始時点の残高のすべてです。エージェントアカウントには、
個人の最初のアカウントのようなウェルカムボーナスやカード確認による無料分数は
ありません。購入済みパックの分数だけで始まります。これは意図的な仕様です。
アカウントが存在する前に、すでに支払いが済んでいるためです。
分数の追加購入
ここからは/v1/のインターフェースを使います。詳しくは
/developersをご覧ください。
curl -X POST https://api.hushscript.com/v1/billing/purchase \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170" \
-H "Content-Type: application/json" \
-d '{
"pack": "300min",
"quick_payment_method_id": "pm_1PqR2sT3uV4wX5yZ",
"idempotency_key": "purchase-2026-09-11-01"
}'
{
"balance_seconds": 36000
}
これにはbillingスコープが必要です。上記のクレームのレスポンスですでに付与されて
います。クレーム時には、トークンとアカウントの両方で課金も有効になります。人が
作成したトークンの場合は、billingスコープに加え、両方の課金設定を有効にする
必要があります。PATによる課金呼び出しには、Stripeを呼び出す課金ルート全体で、
1アカウントあたり1分間に60回という、より厳しい共通の制限があります。
制限はStripeへのリクエストの前に適用されます。
新規アカウントで購入できるパック
購入できるパックのサイズは、利用金額ではなく、支払いが確定してからの経過時間に よって解放されます。各購入が次の段階の条件に数えられるのは、その支払い日から 7日間が経過してからです。そのため、新規アカウントで短時間に購入を重ねても、 大きなパックは購入できません。
| 支払いから7日間を経過した確定済み決済 | 購入できるパック |
|---|---|
| まだない場合(クレーム直後を含む) | 45min、300min |
| 少なくとも45分相当 | 900min、1800minが加わる |
| 少なくとも15時間相当 | 6000minが加わる |
購入が拒否された場合は、単に失敗を返すのではなく、details.allowed_packsに現在の
購入可能なパックが示されます。サインアップには表の最初の行が適用されるため、
上記の手順では大きなパックではなく300minを購入しています。この段階制とは別に、
まだ支払いの異議申し立て期間を過ぎていない残高の消費速度には、直近24時間の
消費上限が適用されます。サインアップ時の購入も、直近24時間で3回までという
アカウントの購入試行回数に数えられます。枠の予約後に拒否された試行も数えられます。
文字起こし
アップロードと文字起こしは、ほかのアカウントと同じマルチパートのフローです。 このAPIの例で送信するのは準備済みの音声であり、端末内の元の動画ファイルではありません。
curl -X POST https://api.hushscript.com/v1/uploads \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170" \
-H "Content-Type: application/json" \
-d '{
"size_bytes": 48213504,
"duration_seconds": 1860,
"title": "weekly-standup-2026-09-11",
"idempotency_key": "upload-2026-09-11-01"
}'
{
"job_id": "job_3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d",
"part_urls": [
{ "n": 1, "url": "https://r2.hushscript.com/uploads/job_3a2b1c0d.../part-1?X-Amz-Signature=..." }
]
}
各パートをPUTでそれぞれの署名付きURLに送信します。その後、POSTで同じジョブの
/completeを呼び出し、送信した全パートのnとetagを添えます。続いてジョブの状態を
ポーリングします。
curl https://api.hushscript.com/v1/jobs/job_3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170"
{
"id": "job_3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d",
"state": "done",
"transcript_id": "trs_6f5e4d3c2b1a0908f7e6d5c4b3a29180"
}
curl https://api.hushscript.com/v1/transcripts/trs_6f5e4d3c2b1a0908f7e6d5c4b3a29180 \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170"
{
"id": "trs_6f5e4d3c2b1a0908f7e6d5c4b3a29180",
"language": "en",
"duration_seconds": 1860,
"body": "..."
}
認証情報のローテーション
マシンアカウントにはパスワードも利用可能なメールボックスもありません。そのため、 PATが漏洩した場合や交換が必要な場合に、パスワード忘れの手続きで復旧することは できません。代わりに、ローテーションを行います。
curl -X POST https://api.hushscript.com/v1/agent/credentials/rotate \
-H "Authorization: Bearer hsr1:eu:pat.k3n2j1.8f7e6d5c4b3a29180716253443526170"
{
"pat": "hsr1:eu:pat.p9q8r7.1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d",
"pat_id": "p9q8r7",
"scopes": [
"transcripts:read",
"transcripts:write",
"transcribe",
"account:read",
"export",
"billing",
"pat:rotate"
],
"expires_at": null
}
この呼び出しにボディは不要です。リクエストの認証に使ったトークンの後継を発行します。 新しいトークンは、元のトークンのスコープ、課金権限、名前、 クライアントラベル、有効期限のポリシーを引き継ぎます。このルートが操作するのは、 呼び出し元のトークンだけです。アカウントのほかの認証情報を一覧表示・発行・失効 させることはできません。マシンアカウントで認証情報を復旧する唯一の経路なので、 古いトークンを破棄する前にローテーションしてください。
古いトークンはすぐには失効しません。ローテーションの後、古いトークンで行えるのは
再度のローテーションだけです。これは、新しいトークンが最初のリクエストに成功するか、
1時間が経過するか、どちらか早いほうまで続きます。ほかのすべてのルートでは、古い
トークンはただちに401を返します。
新しいトークンを含むレスポンスが失われた場合は、新しいトークンが未使用のうちに、
古いトークンで再度ローテーションを呼び出してください。同じpat_idに対して新しい
シークレットが得られ、先に発行された新しいシークレットは使えなくなります。
新しいトークンが一度動作するまで、古いトークンを保管しておいてください。その後、
新しいトークンですぐに1回呼び出します。たとえばGET /v1/accountです。その最初の
成功したリクエストで、古いトークンは完全に無効になります。
エラー
| ステータス | コード | スラッグ | 意味 |
|---|---|---|---|
| 401 | 2000 | unauthorized |
ベアラートークンがないか、無効です |
| 403 | 2023 | pat_scope_missing |
必要なスコープがトークンにないか、アカウントで課金が無効になっています |
| 403 | 4021 | pat_purchase_requires_app |
保存済みカードが指定されていないか、決済が拒否されました。課金は発生していません |
| 403 | 4023 | pat_purchase_requires_authentication |
カード発行会社が、呼び出し側では完了できない認証を求めています。カード自体に問題はありません |
| 402 | 3001 | insufficient_balance |
ジョブを受け付けるだけの残高がありません |
| 429 | 5000 | rate_limited |
リクエストが多すぎます。Retry-Afterで指定された時間だけ待ってください |
以下は、エージェントのサインアップと購入制御に関するエラーです。購入回数の上限は、 個人アカウントでのPATによる購入にも適用されます。人のセッションによる購入は対象外です。
| ステータス | コード | スラッグ | 意味 |
|---|---|---|---|
| 409 | 4035 | agent_signup_pending |
このcontact_emailのサインアップがまだ未完了です。クレーム・返金・期限切れになるまで待つか、別のアドレスを使ってください |
| 401 | 4036 | agent_claim_invalid |
シークレットが間違っているか、サインアップが不明・返金済み・期限切れ、またはクレーム済みでトークンが使用済みか1時間が過ぎています。意図的に同じエラーを返します |
| 403 | 4037 | agent_pack_locked |
このアカウントの段階では、そのパックをまだ購入できません。details.allowed_packsに含まれるパックで再試行してください |
| 429 | 4038 | agent_purchase_capped |
直近24時間で3回の購入試行がありました。枠の予約後の失敗と、エージェントアカウントのサインアップ時の購入も含みます。認証情報を横断してアカウント単位で数えるため、ローテーションしてもリセットされません。details.retry_after_secondsを含みます |
クレームシークレット自体が正しいことを確認した後、未払いのCheckoutセッションには、
wrong_state(4001)を返します。agent_claim_invalidは返しません。すべてのエラーは
OpenAPIドキュメントをご覧ください。
制限
呼び出しは1分間に1,200回までです。エージェントアカウントでは、この枠は個々の トークンではなくアカウントに属します。ローテーションで引き継がれたすべての認証情報が 同じ枠を使うため、PATをローテーションしても新しいトークンに新たな枠は与えられません。 Stripeを呼び出すPATの課金処理には、1アカウントあたり1分間に60回という、より厳しい 共通の制限があります。対象はカード設定と購入、既定のカードの変更と削除、カード一覧の キャッシュにない情報の取得です。制限はStripeへの呼び出しの前に適用されます。 上記の24時間の購入回数上限も、認証情報ではなくアカウント単位で数えます。
詳しく知る
このページでは、アカウントの開設、分数の購入、認証情報の維持までを説明しています。 開設後にできることは、REST APIと、そこに掲載された完全な OpenAPIドキュメントをご覧ください。同じアカウントを 直接のHTTP呼び出しではなくツール経由で扱う場合は、MCPサーバーをご覧ください。