ドキュメント/インジェストAPI

インジェストAPI

録音システム・CRM・電話基盤から通話ファイルをプログラムでKoeIQに取り込みます。人手作業なしで自動処理を実現します。

概要

インジェストAPIはX-API-Keyヘッダーで認証するRESTエンドポイントです。JWTトークンは不要で、サーバーサイドの自動連携に最適です。

  • エンドポイント: POST /api/ingest/upload
  • 認証: X-API-Key: <your_key>
  • Content-Type: multipart/form-data
  • 対応フォーマット: WAV, MP3, M4A, OGG(最大500MB)

APIキーの取得

  1. KoeIQにログインし、設定 → APIキー に移動します。
  2. キーを生成 をクリックします。
  3. 表示されたキーをコピーして安全な場所に保管します(再表示はできません)。
⚠️APIキーはシークレット情報です。クライアントサイドコードや公開リポジトリには絶対に含めないでください。

リクエストパラメータ

パラメータ必須説明
file音声ファイル(WAV / MP3 / M4A / OGG)
call_id任意一意の通話ID。重複する場合は409を返します。
language任意文字起こし言語コード(例: ja-JP, en-US)。省略時はデフォルト設定を使用。
operator_id任意担当エージェントID(CRM/HRシステムのID)。スコアカード連携に必要。
customer_id任意顧客ID(レポートフィルタに使用)。
department任意部門名または部門コード。
call_date任意通話日時(ISO 8601形式: 2026-03-16T09:30:00Z)。

コードサンプル — cURL

curl -X POST https://app.koeiq.com/api/ingest/upload \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "file=@/path/to/call.wav" \
  -F "call_id=CRM-20260316-001" \
  -F "language=ja-JP" \
  -F "operator_id=agent-42"

コードサンプル — Python

import requests

with open("call.wav", "rb") as f:
    resp = requests.post(
        "https://app.koeiq.com/api/ingest/upload",
        headers={"X-API-Key": "YOUR_API_KEY"},
        files={"file": ("call.wav", f, "audio/wav")},
        data={
            "call_id": "CRM-20260316-001",
            "language": "ja-JP",
            "operator_id": "agent-42",
        },
    )
print(resp.json())  # {"voicelog_id": "...", "status": "queued"}

コードサンプル — Node.js

const form = new FormData();
form.append("file", fs.createReadStream("call.wav"), "call.wav");
form.append("call_id", "CRM-20260316-001");
form.append("language", "ja-JP");
form.append("operator_id", "agent-42");

const res = await fetch("https://app.koeiq.com/api/ingest/upload", {
  method: "POST",
  headers: { "X-API-Key": "YOUR_API_KEY", ...form.getHeaders() },
  body: form,
});
console.log(await res.json());

レスポンス

HTTPステータス意味
200 OKファイルをS3にアップロードし、処理キューに追加しました。
409 Conflict同じcall_idが既に存在します。
413 Payload Too Largeファイルサイズが500MBを超えています。
401 UnauthorizedAPIキーが無効または欠落しています。
429 Too Many Requestsレート制限に達しました(1分あたり60リクエスト)。

Pre-signed URL(大容量ファイル向け)

500MB近い大容量ファイルや、クライアントから直接S3にアップロードしたい場合は、Pre-signed URLエンドポイントを使用します。

# Step 1: Pre-signed URLを取得
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://app.koeiq.com/api/ingest/presign?call_id=CRM-001&language=ja-JP"

# Step 2: 返却されたURLに直接アップロード
curl -X PUT "<presigned_url>" \
  -H "Content-Type: audio/wav" \
  --data-binary @call.wav
💡自動分析: 管理設定で「自動分析を有効化」をオンにすると、文字起こし完了後に4つの分析(サマリー・感情・意図・品質)が自動実行されます。

次のステップ

ドキュメントトップサポートに問い合わせる →