インジェスト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キーの取得
- KoeIQにログインし、設定 → APIキー に移動します。
- キーを生成 をクリックします。
- 表示されたキーをコピーして安全な場所に保管します(再表示はできません)。
⚠️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 Unauthorized | APIキーが無効または欠落しています。 |
| 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つの分析(サマリー・感情・意図・品質)が自動実行されます。