9.1 KiB
9.1 KiB
Momentry Core API 教育訓練手冊
對象: marcom 團隊
版本: V1.2 | 日期: 2026-03-25
1. 快速開始
基本資訊
| 項目 | 值 |
|---|---|
| API 網址 | https://api.momentry.ddns.net |
| 認證方式 | Header X-API-Key |
| 格式 | JSON |
Demo 測試帳號
API Key(用於 API 認證)
X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69
SFTPGo(用於影片上傳)
| 項目 | 值 |
|---|---|
| SFTP 主機 | sftpgo.momentry.ddns.net |
| SFTP 連接埠 | 2022 |
| 用戶名 | demo |
| 密碼 | demopassword123 |
| Web 管理介面 | https://sftpgo.momentry.ddns.net |
使用方式:透過 SFTP 上傳影片,系統會自動註冊並處理。
2. 快速範例
查詢所有影片
curl -s -H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69" \
"https://api.momentry.ddns.net/api/v1/videos"
查詢單一影片
curl -s -H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69" \
"https://api.momentry.ddns.net/api/v1/videos/{uuid}"
查詢處理任務狀態
curl -s -H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69" \
"https://api.momentry.ddns.net/api/v1/jobs/{uuid}"
3. API 端點說明
3.1 影片相關
GET /api/v1/videos
取得所有影片列表
回應範例:
{
"videos": [
{
"uuid": "5dea6618a606e7c7",
"filename": "demo_video.mp4",
"duration": 123.45,
"status": "ready",
"created_at": "2026-03-25T10:00:00Z"
}
]
}
GET /api/v1/videos/:uuid
取得單一影片詳情
3.2 搜尋與分段查詢
POST /api/v1/search
向量搜尋,查詢分段(Chunk)詳情
請求參數:
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
query |
string | 是 | 搜尋關鍵字 |
limit |
number | 否 | 回傳數量(預設 10) |
uuid |
string | 否 | 只搜尋指定影片 |
請求範例:
{
"query": "天氣",
"limit": 10,
"uuid": "5dea6618a606e7c7"
}
回應範例:
{
"results": [
{
"uuid": "39567a0eb16f39fd",
"chunk_id": "sentence_1471",
"chunk_type": "sentence",
"start_time": 5309.08,
"end_time": 5311.08,
"text": "influenced by a vital way,",
"score": 0.68
}
],
"query": "天氣"
}
Chunk 欄位說明:
| 欄位 | 說明 | 範例 |
|---|---|---|
uuid |
影片唯一識別碼 | 39567a0eb16f39fd |
chunk_id |
分段識別碼 | sentence_1471 |
chunk_type |
分段類型 | sentence / cut / time / trace / story |
start_time |
開始時間(秒) | 5309.08 |
end_time |
結束時間(秒) | 5311.08 |
text |
內容文字 | influenced by a vital way |
score |
相似度分數(0-1) | 0.68 |
Chunk 類型說明:
| 類型 | 說明 | 來源 |
|---|---|---|
sentence |
語音轉文字片段 | ASR 處理 |
cut |
場景變化片段 | CUT 處理 |
time |
固定時間分段 | 系統自動切割 |
trace |
軌跡追蹤片段 | YOLO 追蹤 |
story |
故事線片段(父子關係) | Story 分析 |
POST /api/v1/n8n/search
n8n 專用搜尋(包含完整影片網址 media_url)
請求參數: 與 /search 相同
回應範例:
{
"query": "天氣",
"count": 2,
"hits": [
{
"id": "sentence_1471",
"vid": "39567a0eb16f39fd",
"start": 5309.08,
"end": 5311.08,
"title": "Chunk sentence_1471",
"text": "influenced by a vital way,",
"score": 0.68,
"file_path": "/Users/accusys/momentry/var/sftpgo/data/demo/video.mp4"
}
]
}
與 /search 的差異:
| 欄位 | /search |
/n8n/search |
|---|---|---|
| 影片 UUID | uuid |
vid |
| Chunk ID | chunk_id |
id |
| 開始時間 | start_time |
start |
| 結束時間 | end_time |
end |
| 相似度分數 | score |
score |
| 檔案路徑 | ❌ | ✅ file_path |
注意:
file_path是影片的實際路徑,可用於本地播放。
3.3 任務相關
3.4 任務相關
GET /api/v1/jobs/:uuid
查詢處理任務狀態
回應範例:
{
"uuid": "9760d0820f0cf9a7",
"video_uuid": "5dea6618a606e7c7",
"status": "completed",
"progress": 100,
"created_at": "2026-03-25T10:00:00Z",
"completed_at": "2026-03-25T10:05:00Z"
}
GET /api/v1/jobs
查詢所有任務
查詢參數:
| 參數 | 說明 | 範例 |
|---|---|---|
status |
篩選狀態 | pending, processing, completed, failed |
limit |
回傳數量 | 10 |
範例:
curl -s -H "X-API-Key: ..." \
"https://api.momentry.ddns.net/api/v1/jobs?status=completed&limit=5"
3.5 系統管理
POST /api/v1/config/cache
切換快取功能(管理員專用)
請求範例:
{
"enabled": true
}
回應範例:
{
"cache_enabled": true,
"message": "Cache toggled successfully"
}
POST /api/v1/unregister
刪除影片及其所有關聯資料(管理員專用)
請求範例:
{
"uuid": "5dea6618a606e7c7"
}
回應範例:
{
"success": true,
"message": "Video unregistered successfully",
"uuid": "5dea6618a606e7c7"
}
注意: 此操作會刪除影片及其所有分段、處理結果、縮圖等關聯資料,無法復原。
3.6 健康檢查
GET /health
服務健康狀態(無需認證)
回應:
{
"status": "ok",
"version": "0.9.20260325_144654"
}
4. n8n Workflow 範例
4.1 基本設定
在 n8n workflow 中使用 HTTP Request 節點:
┌─────────────────┐
│ HTTP Request │
├─────────────────┤
│ Method: GET │
│ URL: https://api.momentry.ddns.net/api/v1/videos
│ Headers: │
│ X-API-Key: │
│ [YOUR_KEY] │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 處理回應資料 │
└─────────────────┘
4.2 範例:檢查任務狀態
// n8n Function Node 範例
const jobUuid = $input.item.json.uuid;
return [{
json: {
method: "GET",
url: `https://api.momentry.ddns.net/api/v1/jobs/${jobUuid}`,
headers: {
"X-API-Key": "YOUR_API_KEY"
}
}
}];
5. 常見問題
Q: 返回 401 錯誤怎麼辦?
確認 Header 中有正確的 X-API-Key 值
Q: 如何確認影片處理完成?
GET /api/v1/jobs/{uuid}
檢查 status 是否為 completed
Q: 查不到資料?
確認 UUID 格式正確(16碼 hex 字串)
6. 快速參考卡
┌─────────────────────────────────────────────────────────────┐
│ Momentry API 速查 │
├─────────────────────────────────────────────────────────────┤
│ 查詢所有影片 GET /api/v1/videos │
│ 查詢單一影片 GET /api/v1/videos/:uuid │
│ 向量搜尋 POST /api/v1/search │
│ n8n 搜尋 POST /api/v1/n8n/search │
│ 查詢任務狀態 GET /api/v1/jobs/:uuid │
│ 查詢所有任務 GET /api/v1/jobs │
│ 快取設定 POST /api/v1/config/cache (管理員) │
│ 刪除影片 POST /api/v1/unregister (管理員) │
│ 健康檢查 GET /health (免認證) │
├─────────────────────────────────────────────────────────────┤
│ Header: X-API-Key: [YOUR_KEY] │
│ URL: https://api.momentry.ddns.net │
└─────────────────────────────────────────────────────────────┘
附錄:回應狀態說明
任務狀態 (status)
| 狀態 | 說明 |
|---|---|
pending |
等待處理 |
processing |
處理中 |
completed |
已完成 |
failed |
處理失敗 |
影片狀態 (status)
| 狀態 | 說明 |
|---|---|
uploading |
上傳中 |
pending |
等待處理 |
processing |
處理中 |
ready |
已就緒 |
error |
錯誤 |
附錄:版本歷史
| 版本 | 日期 | 內容 | 操作人 |
|---|---|---|---|
| V1.0 | 2026-03-25 | 初版建立 | OpenCode |
| V1.1 | 2026-03-25 | 新增快取/刪除 API、搜尋端點文件 | OpenCode |
| V1.2 | 2026-03-25 | 新增 Chunk 欄位說明、類型、播放方式 | OpenCode |
| V1.3 | 2026-03-25 | 新增 Demo 測試帳號(SFTPGo) | OpenCode |