Aqua APIリファレンス

Aqua APIでは、音声入力と音声による編集、保存済みの音声入力の参照、文字起こしのカスタマイズと対応するアプリ設定の管理、Avalonによる音声の文字起こしができます。

APIには2種類のルートがあります。製品ルートはAquaのオブジェクト形式、ErrorEnvelope、X-RateLimit-*レスポンスヘッダーを使います。文字起こしルートはOpenAI互換で、公式SDKをそのまま使えるリクエスト・レスポンス・エラー形式を維持しています。そのため、durationなどの項目名や自由形式のlanguage文字列は製品ルートと異なります。

ベースURL

https://api.aquavoice.com/v1

認証

すべてのエンドポイントでAPIキーをBearerトークンとして使用

認証

すべてのルートでAPIキーをBearerトークンとして送ります。キーはhttps://app.aquavoice.com/api-dashboardで作成できます。音声入力、文字起こし、セッション、カスタマイズ、設定、MCPの全アクセスを持ち、従来のava_キーも使えます。OAuthトークンはread・writeスコープを持ち、操作に示すスコープはOAuthのみに適用されます。リソースhttps://api.aquavoice.com/v1用のトークンは製品ルート、https://api.aquavoice.com/mcp用はMCPで使えます。1つのトークンに両方のリソースを含められます。

組織キーは、製品・音声入力ルートで1人のメンバーとして動作します。GET /meと同じメンバーIDを使い、Aqua-User: usr_<id>ヘッダーを送ってください。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。無効なアカウントは403 account_disabledを返します。

課金

最初のキーを作成するとアカウントが有効になります。最初の1ドル分は無料です。その後はAPIダッシュボードで支払い方法を追加してください。音声入力は1時間0.49ドル、文字起こしは1時間0.39ドルで、秒単位・最低10秒分の課金です。Stripeから毎月、または利用額が200ドルに達した時点で請求します。失敗したリクエストと冪等な再実行は課金しません。

請求のエラーは402 payment_method_required、402 billing_past_due、403 subscription_requiredです。本文のbilling_urlからAPIダッシュボードの請求ページを開けます。

MCPで接続

AIアシスタントからAquaのセッション、文字起こしのカスタマイズ、設定を利用できます。

  1. 01接続先URLをコピーします:https://api.aquavoice.com/mcp
  2. 02リモートMCPサーバーとして追加します。Claude: Customize > Connectors > Add > Add custom connectorを開き、Continue、Add、Connectの順に進みます。ChatGPT: Plugins > Add > Create custom MCP serverを開き、チェックボックスを選択してCreate as a pluginを押します。
  3. 03Aquaにログインしてアクセスを許可し、会話内でAquaを有効にします。

MCPエンドポイント

https://api.aquavoice.com/mcp

AIサービス側がリモートMCPに対応している必要があり、ワークスペース管理者の承認が必要な場合もあります。接続前に権限をご確認ください。一部のクライアントは読み取りと書き込みをまとめて要求します。

Account

現在のユーザー、認証情報、履歴の利用可否。

現在のユーザーを取得

GET/me

プライバシー設定や組織の保持ポリシーで履歴が使えない場合も呼び出せます。その場合、history_availableはfalseです。

パラメーター

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

bash
curl https://api.aquavoice.com/v1/me \
  -H "Authorization: Bearer <api-key>"
json
{
  "id": "usr_1daef426873f44baaf2096903dc7283e",
  "object": "user",
  "email": "maya@northstar.studio",
  "name": "Maya Chen",
  "created_at": "2026-08-11T17:03:00Z",
  "credential": {
    "id": "key_7d4d4d5ad69942fe9ceef628f5ba7bdd",
    "method": "api_key",
    "scopes": [
      "read"
    ]
  },
  "plan": "pro",
  "privacy_mode": false,
  "history_available": true
}

セッション

保存済みの音声入力と文字起こし。

保存済みセッションを一覧・検索

GET/sessions

OAuthスコープ: read

ユーザーが閲覧できる保存済みの音声入力を新しい順に返します。非表示化・削除されたセッションと、ユーザーが消去した履歴は含みません。プライバシーモードは今後の保存を停止しますが、過去の履歴は非表示にしません。企業のゼロデータ保持ポリシーでは製品履歴を利用できません。検索では、意味のある検索語すべてが一つの文字起こしに含まれる必要があります。結果には一致したソースと該当箇所を中心とした抜粋が含まれます。参照によって新たなAI処理が始まることはありません。

パラメーター

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

cursor

string

クエリパラメーター. 前のページの不透明なnext_cursor。30日で期限が切れ、元のフィルターに紐付きます。変更または期限切れのカーソルはinvalid_cursorを返します。

長さ:0〜2048

limit

integer

クエリパラメーター.

既定値:25 · 範囲:1〜100

query

string

クエリパラメーター.

長さ:1〜500

since

string

クエリパラメーター.

until

string

クエリパラメーター.

bash
curl https://api.aquavoice.com/v1/sessions \
  -H "Authorization: Bearer <api-key>"
json
{
  "object": "list",
  "data": [
    {
      "object": "session",
      "id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
      "created_at": "2026-08-11T17:03:00Z",
      "updated_at": "2026-08-11T17:03:00Z",
      "status": "stopped",
      "title": "The beta is stable enough to expand next week.",
      "app": "Zoom",
      "duration_seconds": 1842.7,
      "word_count": 4218,
      "preview": "The beta is stable enough to expand next week."
    }
  ],
  "has_more": false,
  "next_cursor": null
}

保存済みセッションを取得

GET/sessions/{session_id}

OAuthスコープ: read

パラメーター

session_id

string必須

パスパラメーター. 存在しないセッションと他のユーザーのセッションは、どちらも404 session_not_foundを返します。

パターン:^ses_[0-9a-f]{32}$

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

bash
curl https://api.aquavoice.com/v1/sessions/ses_a1e2c85b1cbf43af9dc678a1a7423dcc \
  -H "Authorization: Bearer <api-key>"
json
{
  "object": "session",
  "id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
  "created_at": "2026-08-11T17:03:00Z",
  "updated_at": "2026-08-11T17:03:00Z",
  "status": "stopped",
  "title": "The beta is stable enough to expand next week.",
  "app": "Zoom",
  "duration_seconds": 1842.7,
  "word_count": 4218,
  "preview": "The beta is stable enough to expand next week."
}

保存済みセッションの文字起こしを取得

GET/sessions/{session_id}/transcript

OAuthスコープ: read

最終文章の全文と、保存されていれば整形前の音声認識結果の全文を返します。

パラメーター

session_id

string必須

パスパラメーター. 存在しないセッションと他のユーザーのセッションは、どちらも404 session_not_foundを返します。

パターン:^ses_[0-9a-f]{32}$

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

bash
curl https://api.aquavoice.com/v1/sessions/ses_a1e2c85b1cbf43af9dc678a1a7423dcc/transcript \
  -H "Authorization: Bearer <api-key>"
json
{
  "object": "transcript",
  "session_id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
  "final_text": "The beta is stable enough to expand next week.",
  "raw_text": "the beta is stable enough to expand next week"
}

セッションへのフィードバックを設定

POST/sessions/{session_id}/feedback

OAuthスコープ: write

自分が所有する1つのセッションへのフィードバックを作成または置き換えます。corrected_textには、Aquaの出力の代わりに意図していた正確な文章を指定します。

パラメーター

session_id

string必須

パスパラメーター. 存在しないセッションと他のユーザーのセッションは、どちらも404 session_not_foundを返します。

パターン:^ses_[0-9a-f]{32}$

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

リクエスト本文

feedback_type

string enum必須

次のいずれか: positive negative

message

string

Aquaが正しく、または誤って認識した内容。

長さ:0〜5000

corrected_text

string

正しい出力の全文。

長さ:0〜40000

bash
curl -X POST https://api.aquavoice.com/v1/sessions/ses_a1e2c85b1cbf43af9dc678a1a7423dcc/feedback \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"feedback_type":"positive","message":"...","corrected_text":"..."}'
json
{
  "object": "session_feedback",
  "session_id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
  "feedback_type": "positive",
  "message": "Keep the product name capitalized.",
  "corrected_text": "Send this from Aqua Voice.",
  "updated_at": "2026-08-11T17:03:00Z"
}

セッションへのフィードバックを削除

DELETE/sessions/{session_id}/feedback

OAuthスコープ: write

セッションに保存されたフィードバックを削除します。

パラメーター

session_id

string必須

パスパラメーター. 存在しないセッションと他のユーザーのセッションは、どちらも404 session_not_foundを返します。

パターン:^ses_[0-9a-f]{32}$

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

bash
curl -X DELETE https://api.aquavoice.com/v1/sessions/ses_a1e2c85b1cbf43af9dc678a1a7423dcc/feedback \
  -H "Authorization: Bearer <api-key>"

音声入力

ユーザーの設定とカスタマイズを適用する、Aquaの音声入力と音声編集。

音声入力または文章の編集

POST/dictations

OAuthスコープ: write

通常のAqua音声入力処理を実行し、文章が完成すると返します。音声の文字起こしと整形の間、最大210秒間リクエストを開いたままにします。公開のバックグラウンドジョブは作りません。Idempotency-Keyを送信し、接続が切れたら同じキーで同じリクエストを再試行してください。最終結果は24時間再利用でき、追加の推論や課金はありません。音声の処理を開始した後で上流の成否が不明な場合も、そのキーの最終結果として扱い、再試行で音声入力が重複しないようにします。

ユーザーの言語設定、辞書、置換、カスタム指示、カジュアルメッセージ設定を適用します。リクエストのlanguageは、この音声入力に限り保存済み言語を上書きします。返されるsession_idはAquaの履歴に保存されたセッションを識別します。プライバシーとゼロデータ保持設定も適用され、保持が無効なら文章を返すだけで保存しません。

組織キーは1人のメンバーとして動作します。Aqua-UserにメンバーのユーザーIDを指定してください。音声入力の料金はキーを所有するアカウントに請求されます。

編集モードにはoperation=editとselected_textを使います。任意のテキスト・アプリ項目で、アプリへ入力するときと同じ周囲の文脈を渡せます。

音声入力と編集モードは同じ料金です。請求の項目をご確認ください。

パラメーター

Idempotency-Key

string

Header. 任意の冪等性キー。同じ論理リクエストの再試行には、1〜255文字の表示可能ASCII文字列を同じ値で使います。最終結果は24時間再利用でき、内容が異なる場合は409 idempotency_conflictを返します。

長さ:1〜255

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

リクエスト本文(multipart/form-data)

audio

file必須

標準の16 kHz、モノラル、PCM16 WAVファイル。最大10分です。

operation

string enum

selected_textへ話した指示を適用するにはeditを使います。

次のいずれか: dictate edit

既定値:dictate

selected_text

string

operationがeditの場合は必須。

長さ:0〜6000

language

LanguageCode

次のいずれか: auto ar be bn bg yue ca hr cs da nl en et fi fr gl de el he hi hu id ga it ja ko lv lt ms mt cmn mr mn no fa pl pt ro ru sl es sw sv ta th tr uk ur vi cy yi

app

string

文章を使用するアプリの名前。

長さ:0〜255

app_bundle_id

string

アプリのバンドルIDまたはパッケージ名。

長さ:0〜255

text_before

string

挿入位置または選択範囲の直前の文章。

長さ:0〜6000

text_after

string

挿入位置または選択範囲の直後の文章。

長さ:0〜6000

focused_element_description

string

対象入力欄のアクセシビリティ上の説明。

長さ:0〜1000

bash
curl -X POST https://api.aquavoice.com/v1/dictations \
  -H "Authorization: Bearer <api-key>" \
  -F "audio=@audio.wav" \
  -F "operation=dictate" \
  -F "language=auto"
json
{
  "object": "dictation",
  "session_id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
  "operation": "dictate",
  "raw_text": "hello aqua can you send the update",
  "text": "Hello, Aqua! Can you send the update?",
  "language": "auto",
  "duration_seconds": 2.84,
  "edit_unclear": false,
  "edit_deleted": false
}

Customizations

辞書の用語、文字列の置換、文字起こしのカスタム指示。

文字起こしのカスタマイズを取得

GET/customizations

OAuthスコープ: read

パラメーター

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

bash
curl https://api.aquavoice.com/v1/customizations \
  -H "Authorization: Bearer <api-key>"
json
{
  "object": "customizations",
  "revision": 12,
  "updated_at": "2026-08-11T17:03:00Z",
  "dictionary": [
    "Aquaphone"
  ],
  "replacements": [
    {
      "from": "AV",
      "to": "Aqua Voice"
    }
  ],
  "custom_instructions": "Keep issue keys such as AQUA-142 in uppercase."
}

文字起こしのカスタマイズ操作を適用

PATCH/customizations

OAuthスコープ: write

最新の状態に対してすべての操作をアトミックに適用します。全体が成功するか、何も変更しないかのいずれかです。各操作は変更手順ではなく、希望する状態を指定するため、先に読み取る必要はありません。expected_revisionを送ると、より新しい変更への上書きを拒否します(409 transcript_customizations_conflict)。dry_run: trueを送ると、保存せずに適用予定の状態とresultsを取得できます。

パラメーター

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

リクエスト本文

expected_revision

integer

任意。指定したリビジョンが現在と異なる場合、書き込みは409で失敗します。

範囲:0〜…

dry_run

boolean

保存せずに検証とレスポンスの計算を行います。

既定値:false

operations

array of CustomizationOperation必須

項目数:1〜100

bash
curl -X PATCH https://api.aquavoice.com/v1/customizations \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"expected_revision":42,"dry_run":true,"operations":[{"type":"dictionary_add","word":"..."}]}'
json
null

Settings

公開APIが対応するAquaアプリの設定。

アプリの設定を取得

GET/settings

OAuthスコープ: read

パラメーター

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

bash
curl https://api.aquavoice.com/v1/settings \
  -H "Authorization: Bearer <api-key>"
json
{
  "object": "settings",
  "language": "auto",
  "casual_messaging": true
}

アプリの設定を更新

PATCH/settings

OAuthスコープ: write

リクエストにある項目だけを変更します。nullと不明な項目は拒否します。

パラメーター

Aqua-User

string

Header. 製品・音声入力ルートで組織キーを使う場合に必要なメンバーのユーザーID。GET /meが返すIDと同じです。ヘッダーがなければ400 user_required、有効なメンバーでなければ403 user_not_memberを返します。文字起こしルートと個人キーでは無視します。

パターン:^usr_[0-9a-f]{32}$

リクエスト本文

language

LanguageCode

次のいずれか: auto ar be bn bg yue ca hr cs da nl en et fi fr gl de el he hi hu id ga it ja ko lv lt ms mt cmn mr mn no fa pl pt ro ru sl es sw sv ta th tr uk ur vi cy yi

casual_messaging

boolean

bash
curl -X PATCH https://api.aquavoice.com/v1/settings \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"language":"auto","casual_messaging":true}'
json
{
  "object": "settings",
  "language": "auto",
  "casual_messaging": true
}

文字起こし(Avalon)

Avalonのバッチ音声認識。OpenAI互換。

互換性
OpenAI公式のPythonまたはJavaScript SDKを使用できます。ベースURLは https://api.aquavoice.com/v1 、モデルはavalon-v1.5.
タイムアウト
同期リクエストは最大210秒待機します。保存済みのジョブが 504 request_timeoutを返した場合、レスポンス本文のerror.job_idでジョブを指定し、ポーリングで状況を確認できます。
再試行
再試行時には1〜255文字のIdempotency-Key を送信してください。同じリクエストの結果は24時間再利用でき、推論や課金は重複しません。同じキーで異なる内容を送ると、次のエラーを返します: 409.
制限
レスポンスにはx-should-retry と、必要に応じて Retry-After およびx-ratelimit-* ヘッダーが含まれます。料金は次の項目をご覧ください: 課金.

音声を同期処理で文字に起こす

POST/audio/transcriptions

全体の期限は210秒です。ジョブの保存後に待機がタイムアウトしても処理は続きます。504 request_timeoutのエラー本文にerror.job_idが入るので、そのジョブをポーリングして状態を確認してください。レスポンスのx-request-idヘッダーにも同じ値が入ります。

パラメーター

Idempotency-Key

string

Header. 任意の冪等性キー。同じ論理リクエストの再試行には、1〜255文字の表示可能ASCII文字列を同じ値で使います。最終結果は24時間再利用でき、内容が異なる場合は409 idempotency_conflictを返します。

長さ:1〜255

X-Client-Request-Id

string

Header. 任意の関連付け用の値。最大512文字の表示可能ASCII文字列です。冪等性は提供しません。

長さ:0〜512

リクエスト本文(multipart/form-data)

file

file必須

flac、mp3、mp4、mpeg、mpga、m4a、ogg、wav、webm形式の音声。最大256 MiB、デコード後の音声時間は最大4時間です。

model

string enum必須

使用するAvalonモデル。

次のいずれか: avalon-v1.5

language

string

ISO 639-1の言語コード。省略またはautoで自動検出します。

prompt

string

文字起こしの文脈や語彙のヒント。

response_format

string enum

応答形式。標準はjsonで、diarizeがtrueの場合はdiarized_jsonです。話者を区別した文字起こしではdiarized_json、srt、vttのみ対応します。

次のいずれか: json text srt vtt verbose_json diarized_json

既定値:json

diarize

boolean

各単語の話者をラベルで示します。結果には話者ごとの発話と単語の時刻が含まれます。話者ID(spk_0、spk_1など)は最初に話した順です。一つの文字起こしで最大8人の話者に対応します。

既定値:false

max_speakers

integer

話者ラベルの最大数。diarizeと併用する場合のみ指定できます。検出された発話量が多い話者のラベルを残し、それ以外の話者の単語は、残した話者のうち最も近いものに割り当てます。モデルが検出する話者の数自体は変わりません。

範囲:1〜8

temperature

number enum

互換性のための項目で、動作には影響しません。0以外は未対応です。

次のいずれか: 0

stream

boolean enum

Avalonはバッチ専用のため、falseのみ受け付けます。

次のいずれか: false

既定値:false

timestamp_granularities

array of string enum

verbose_jsonでのsegmentのみ対応。

bash
curl -X POST https://api.aquavoice.com/v1/audio/transcriptions \
  -H "Authorization: Bearer <api-key>" \
  -F "file=@audio.mp3" \
  -F "model=avalon-v1.5" \
  -F "language=auto"
json
{
  "text": "The beta is stable enough to expand next week.",
  "usage": {
    "type": "duration",
    "seconds": 17.8
  }
}

非同期の文字起こしを開始

POST/audio/transcription-jobs

音声を検証してジョブを保存したら返します。返されたジョブIDで状態を確認するか、result_urlが現れたら結果を取得してください。

パラメーター

Idempotency-Key

string

Header. 任意の冪等性キー。同じ論理リクエストの再試行には、1〜255文字の表示可能ASCII文字列を同じ値で使います。最終結果は24時間再利用でき、内容が異なる場合は409 idempotency_conflictを返します。

長さ:1〜255

X-Client-Request-Id

string

Header. 任意の関連付け用の値。最大512文字の表示可能ASCII文字列です。冪等性は提供しません。

長さ:0〜512

リクエスト本文(multipart/form-data)

file

file必須

flac、mp3、mp4、mpeg、mpga、m4a、ogg、wav、webm形式の音声。最大256 MiB、デコード後の音声時間は最大4時間です。

model

string enum必須

使用するAvalonモデル。

次のいずれか: avalon-v1.5

language

string

ISO 639-1の言語コード。省略またはautoで自動検出します。

prompt

string

文字起こしの文脈や語彙のヒント。

response_format

string enum

応答形式。標準はjsonで、diarizeがtrueの場合はdiarized_jsonです。話者を区別した文字起こしではdiarized_json、srt、vttのみ対応します。

次のいずれか: json text srt vtt verbose_json diarized_json

既定値:json

diarize

boolean

各単語の話者をラベルで示します。結果には話者ごとの発話と単語の時刻が含まれます。話者ID(spk_0、spk_1など)は最初に話した順です。一つの文字起こしで最大8人の話者に対応します。

既定値:false

max_speakers

integer

話者ラベルの最大数。diarizeと併用する場合のみ指定できます。検出された発話量が多い話者のラベルを残し、それ以外の話者の単語は、残した話者のうち最も近いものに割り当てます。モデルが検出する話者の数自体は変わりません。

範囲:1〜8

temperature

number enum

互換性のための項目で、動作には影響しません。0以外は未対応です。

次のいずれか: 0

stream

boolean enum

Avalonはバッチ専用のため、falseのみ受け付けます。

次のいずれか: false

既定値:false

timestamp_granularities

array of string enum

verbose_jsonでのsegmentのみ対応。

bash
curl -X POST https://api.aquavoice.com/v1/audio/transcription-jobs \
  -H "Authorization: Bearer <api-key>" \
  -F "file=@audio.mp3" \
  -F "model=avalon-v1.5" \
  -F "language=auto"
json
{
  "id": "req_01k2j4wr1ns8h4f7s2ckm6h1p9",
  "object": "transcription.job",
  "status": "queued",
  "created_at": "2026-08-11T17:03:00Z",
  "completed_at": null,
  "audio_duration_seconds": 17.8,
  "error_code": null,
  "result_url": null
}

非同期の文字起こしジョブを取得

GET/audio/transcription-jobs/{job_id}

パラメーター

job_id

string必須

パスパラメーター.

bash
curl https://api.aquavoice.com/v1/audio/transcription-jobs/... \
  -H "Authorization: Bearer <api-key>"
json
{
  "id": "req_01k2j4wr1ns8h4f7s2ckm6h1p9",
  "object": "transcription.job",
  "status": "queued",
  "created_at": "2026-08-11T17:03:00Z",
  "completed_at": null,
  "audio_duration_seconds": 17.8,
  "error_code": null,
  "result_url": null
}

完了した文字起こし結果を取得

GET/audio/transcription-jobs/{job_id}/result

待機中は409 job_not_completeを返します。再試行可能なエラーで、標準の再試行ヘッダーを含みます。

パラメーター

job_id

string必須

パスパラメーター.

bash
curl https://api.aquavoice.com/v1/audio/transcription-jobs/.../result \
  -H "Authorization: Bearer <api-key>"
json
{
  "text": "The beta is stable enough to expand next week.",
  "usage": {
    "type": "duration",
    "seconds": 17.8
  }
}

文字起こしモデルを一覧表示

GET/models
bash
curl https://api.aquavoice.com/v1/models \
  -H "Authorization: Bearer <api-key>"
json
{
  "object": "list",
  "data": [
    {
      "id": "avalon-v1.5",
      "object": "model",
      "created": 1754870400,
      "owned_by": "aqua"
    }
  ]
}

文字起こしモデルを取得

GET/models/{model}

パラメーター

model

string必須

パスパラメーター.

bash
curl https://api.aquavoice.com/v1/models/avalon-v1.5 \
  -H "Authorization: Bearer <api-key>"
json
{
  "id": "avalon-v1.5",
  "object": "model",
  "created": 1754870400,
  "owned_by": "aqua"
}

オブジェクト

リクエストとレスポンスのオブジェクト。列挙値は今後追加される可能性があります。

Principal

id

string必須

パターン:^usr_[0-9a-f]{32}$

object

"user"必須

email

string必須

name

string, nullable必須

created_at

string, nullable必須

credential

Credential必須

plan

string enum必須

次のいずれか: free pro max team enterprise

privacy_mode

boolean必須

history_available

boolean必須

組織ポリシーが履歴の保存を許可する場合にtrue。

json
{
  "id": "usr_1daef426873f44baaf2096903dc7283e",
  "object": "user",
  "email": "maya@northstar.studio",
  "name": "Maya Chen",
  "created_at": "2026-08-11T17:03:00Z",
  "credential": {
    "id": "key_7d4d4d5ad69942fe9ceef628f5ba7bdd",
    "method": "api_key",
    "scopes": [
      "read"
    ]
  },
  "plan": "pro",
  "privacy_mode": false,
  "history_available": true
}

SessionSummary

object

"session"必須

id

string必須

パターン:^ses_[0-9a-f]{32}$

created_at

string必須

updated_at

string必須

status

string必須

title

string必須

app

string, nullable必須

duration_seconds

number, nullable必須

word_count

integer必須

preview

string必須

match

SessionSearchMatch

json
{
  "object": "session",
  "id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
  "created_at": "2026-08-11T17:03:00Z",
  "updated_at": "2026-08-11T17:03:00Z",
  "status": "stopped",
  "title": "The beta is stable enough to expand next week.",
  "app": "Zoom",
  "duration_seconds": 1842.7,
  "word_count": 4218,
  "preview": "The beta is stable enough to expand next week.",
  "match": {
    "source": "final_text",
    "snippet": "The team approved a wider beta for Tuesday."
  }
}

SessionDetail

object

"session"必須

id

string必須

パターン:^ses_[0-9a-f]{32}$

created_at

string必須

updated_at

string必須

status

string必須

title

string必須

app

string, nullable必須

duration_seconds

number, nullable必須

word_count

integer必須

preview

string必須

json
{
  "object": "session",
  "id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
  "created_at": "2026-08-11T17:03:00Z",
  "updated_at": "2026-08-11T17:03:00Z",
  "status": "stopped",
  "title": "The beta is stable enough to expand next week.",
  "app": "Zoom",
  "duration_seconds": 1842.7,
  "word_count": 4218,
  "preview": "The beta is stable enough to expand next week."
}

SessionTranscript

object

"transcript"必須

session_id

string必須

パターン:^ses_[0-9a-f]{32}$

final_text

string必須

raw_text

string, nullable必須

json
{
  "object": "transcript",
  "session_id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
  "final_text": "The beta is stable enough to expand next week.",
  "raw_text": "the beta is stable enough to expand next week"
}

DictationResult

object

"dictation"必須

session_id

string必須

パターン:^ses_[0-9a-f]{32}$

operation

string enum必須

次のいずれか: dictate edit

raw_text

string必須

Aquaで整形する前の音声認識結果。

text

string必須

そのまま挿入、または編集結果として置換できるAquaの最終文章。

language

LanguageCode必須

次のいずれか: auto ar be bn bg yue ca hr cs da nl en et fi fr gl de el he hi hu id ga it ja ko lv lt ms mt cmn mr mn no fa pl pt ro ru sl es sw sv ta th tr uk ur vi cy yi

duration_seconds

number必須

範囲:0〜…

edit_unclear

boolean必須

編集モードが変更内容を判断できなかった場合にtrue。

edit_deleted

boolean必須

編集モードが意図的に選択範囲を削除した場合にtrue。

json
{
  "object": "dictation",
  "session_id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
  "operation": "dictate",
  "raw_text": "hello aqua can you send the update",
  "text": "Hello, Aqua! Can you send the update?",
  "language": "auto",
  "duration_seconds": 2.84,
  "edit_unclear": false,
  "edit_deleted": false
}

SessionFeedback

object

"session_feedback"必須

session_id

string必須

パターン:^ses_[0-9a-f]{32}$

feedback_type

string enum必須

次のいずれか: positive negative

message

string, nullable必須

corrected_text

string, nullable必須

updated_at

string必須

json
{
  "object": "session_feedback",
  "session_id": "ses_a1e2c85b1cbf43af9dc678a1a7423dcc",
  "feedback_type": "positive",
  "message": "Keep the product name capitalized.",
  "corrected_text": "Send this from Aqua Voice.",
  "updated_at": "2026-08-11T17:03:00Z"
}

Customizations

object

"customizations"必須

revision

integer必須

範囲:0〜…

updated_at

string, nullable必須

dictionary

array of string必須

replacements

array of Replacement必須

custom_instructions

string必須

warning

string

更新結果のみ。辞書が音声認識の読み取り上限を超えた場合に含まれます。

json
{
  "object": "customizations",
  "revision": 12,
  "updated_at": "2026-08-11T17:03:00Z",
  "dictionary": [
    "Aquaphone"
  ],
  "replacements": [
    {
      "from": "AV",
      "to": "Aqua Voice"
    }
  ],
  "custom_instructions": "Keep issue keys such as AQUA-142 in uppercase.",
  "warning": "..."
}

Settings

object

"settings"必須

language

LanguageCode | null必須

casual_messaging

boolean, nullable必須

json
{
  "object": "settings",
  "language": "auto",
  "casual_messaging": true
}

ErrorEnvelope

error

ErrorDetail必須

json
{
  "error": {
    "code": "payment_method_required",
    "message": "Add a payment method to continue",
    "details": {},
    "docs_url": "https://aquavoice.com/docs/api#billing",
    "billing_url": "https://app.aquavoice.com/api-dashboard?tab=billing"
  }
}

Transcription

task

"transcribe"

text

string必須

language

string

duration

number

segments

array of object

usage

object必須

json
{
  "task": "transcribe",
  "text": "The beta is stable enough to expand next week.",
  "language": "en",
  "duration": 17.8,
  "segments": [
    {
      "start": 0,
      "end": 4.2,
      "text": "The beta is stable enough to expand next week."
    }
  ],
  "usage": {
    "type": "duration",
    "seconds": 17.8
  }
}

TranscriptionJob

id

string必須

object

"transcription.job"必須

status

string enum必須

次のいずれか: queued succeeded failed cancelled abandoned

created_at

string必須

completed_at

string, nullable必須

audio_duration_seconds

number, nullable必須

error_code

string, nullable必須

result_url

string, nullable必須

json
{
  "id": "req_01k2j4wr1ns8h4f7s2ckm6h1p9",
  "object": "transcription.job",
  "status": "queued",
  "created_at": "2026-08-11T17:03:00Z",
  "completed_at": null,
  "audio_duration_seconds": 17.8,
  "error_code": null,
  "result_url": null
}

Model

id

string必須

object

"model"必須

created

integer必須

owned_by

"aqua"必須

json
{
  "id": "avalon-v1.5",
  "object": "model",
  "created": 1754870400,
  "owned_by": "aqua"
}

AvalonError

error

object必須

json
{
  "error": {
    "message": "The uploaded file exceeds the size limit.",
    "type": "invalid_request_error",
    "param": "file",
    "code": "file_too_large",
    "job_id": "req_01k2j4wr1ns8h4f7s2ckm6h1p9",
    "docs_url": "...",
    "billing_url": "..."
  }
}