SSE API
Audio
連線資訊
| 項目 | 值 |
|---|---|
| 基礎路徑 | https://vas-poc.vurbo.ai/api/v1/sse |
| 協定 | HTTP |
| 認證方式 | Header X-API-Key: {KEY} |
注意:雖然路徑包含
/sse/,但此端點返回的是音訊檔案(非 SSE 串流)。支援 HTTP Range Request 實現拖曳播放。
端點總覽
| 方法 | 端點 | 說明 |
|---|---|---|
| GET | /api/v1/sse/audio/{taskId} | 音訊檔案播放 |
GET /api/v1/sse/audio/{taskId}
功能說明
串流播放指定任務的錄音檔案,支援 HTTP Range Request 實現拖曳播放。
與 音檔下載 API(
GET /api/v1/tasks/{taskId}/audio/export)的差異:
- 本端點:播放用途;支援 HTTP Range Request(可拖曳進度),適合 HTML5
<audio>元素或串流播放器。- 音檔下載:離線下載用途;回應附
Content-Disposition: attachment標頭,瀏覽器會直接儲存為檔案。
使用場景
- 播放錄音音訊
- 支援拖曳播放進度
認證方式
Header:X-API-Key(詳見 認證機制)
請求參數
| 參數 | 位置 | 類型 | 必填 | 說明 |
|---|---|---|---|---|
taskId | path | string | 是 | 錄音 ID(UUID) |
請求範例
# 下載完整音訊檔案
curl -X GET "https://vas-poc.vurbo.ai/api/v1/sse/audio/550e8400-e29b-41d4-a716-446655440000" \
-H "X-API-Key: vas_aB3dE5fG7hI9jK1lM3nO5pQ7rS9tU1vW" \
-o audio.m4a
# Range Request(部分下載)
curl -X GET "https://vas-poc.vurbo.ai/api/v1/sse/audio/550e8400-e29b-41d4-a716-446655440000" \
-H "X-API-Key: vas_aB3dE5fG7hI9jK1lM3nO5pQ7rS9tU1vW" \
-H "Range: bytes=0-1023" \
-o audio_part.m4a
回應格式
完整檔案(HTTP 200):
HTTP/1.1 200 OK
Content-Type: audio/mp4
Content-Length: 1234567
Accept-Ranges: bytes
Cache-Control: no-cache
注意:絕大多數錄音以 M4A 容器(AAC 編碼)回傳,
Content-Type為audio/mp4、副檔名為.m4a。實際Content-Type依錄音儲存格式而定(少數歷史 / 廣播錄音可能為audio/webm或audio/wav),請以 Response Header 為準。
部分檔案(HTTP 206 - Range Request):
HTTP/1.1 206 Partial Content
Content-Type: audio/mp4
Content-Length: 1024
Content-Range: bytes 0-1023/1234567
Accept-Ranges: bytes
特有錯誤碼
| 錯誤碼 | HTTP 狀態碼 | 說明 | 處理建議 |
|---|---|---|---|
recording_not_found | 404 | 找不到錄音 | 確認 taskId 正確 |
recording_audio_not_ready | 422 | 音檔尚未上傳完成 | 稍後重試 |
storage_download_failed | 500 | 儲存服務下載失敗 | 稍後重試 |
前端範例
async function playAudio(taskId, apiKey) {
const response = await fetch(
`https://vas-poc.vurbo.ai/api/v1/sse/audio/${taskId}`,
{
headers: {
'X-API-Key': apiKey
}
}
);
const blob = await response.blob();
const audioUrl = URL.createObjectURL(blob);
const audio = new Audio(audioUrl);
audio.play();
}
// 搭配 HTML5 Audio 元素使用
async function setupAudioPlayer(taskId, apiKey) {
const response = await fetch(
`https://vas-poc.vurbo.ai/api/v1/sse/audio/${taskId}`,
{
headers: {
'X-API-Key': apiKey
}
}
);
const blob = await response.blob();
const audioUrl = URL.createObjectURL(blob);
const audioElement = document.getElementById('audio-player');
audioElement.src = audioUrl;
audioElement.load();
}
版本:V1.5.7 最後更新:2026-05-20