# Momentry Core API 端點總覽 | 項目 | 內容 | |------|------| | 版本 | V1.1 | | 日期 | 2026-03-25 | --- ## Base URL | 環境 | URL | |------|-----| | 本地 | `http://localhost:3002` | | 外部 | `https://api.momentry.ddns.net` | --- ## 認證 除健康檢查端點外,所有 API 端點都需要 API Key。 ### Header 方式 ```bash curl -H "X-API-Key: your-api-key" http://localhost:3002/api/v1/videos ``` ### 響應 - `401 Unauthorized` - 缺少或無效的 API Key - `200 OK` - 認證成功 ### 取得 API Key 使用 CLI 建立: ```bash ./target/release/momentry api-key create "My API Key" --key-type user ``` --- ## 端點列表 ### 健康檢查(公開) | 方法 | 端點 | 說明 | |------|------|------| | GET | `/health` | 基本健康檢查 | | GET | `/health/detailed` | 詳細健康檢查(含服務狀態) | **範例**: ```bash curl http://localhost:3002/health # {"status":"ok","version":"0.1.0","uptime_ms":123456} ``` --- ### 影片搜尋 | 方法 | 端點 | 說明 | |------|------|------| | POST | `/api/v1/search` | 語意搜尋(標準格式) | | POST | `/api/v1/n8n/search` | 語意搜尋(n8n 專用格式) | | POST | `/api/v1/search/hybrid` | 混合搜尋 | **標準搜尋** (`/api/v1/search`): ```bash curl -X POST http://localhost:3002/api/v1/search \ -H "Content-Type: application/json" \ -d '{"query": "test", "limit": 10}' ``` **n8n 格式搜尋** (`/api/v1/n8n/search`): ```bash curl -X POST http://localhost:3002/api/v1/n8n/search \ -H "Content-Type: application/json" \ -d '{"query": "test", "limit": 10}' ``` --- ### 影片管理 | 方法 | 端點 | 說明 | |------|------|------| | POST | `/api/v1/register` | 註冊影片 | | POST | `/api/v1/probe` | 探測影片資訊(不註冊) | | GET | `/api/v1/videos` | 列出所有影片 | | GET | `/api/v1/lookup` | 查詢影片資訊 | | GET | `/api/v1/progress/:uuid` | 取得處理進度 | **註冊影片**: ```bash curl -X POST http://localhost:3002/api/v1/register \ -H "Content-Type: application/json" \ -d '{"path": "/path/to/video.mp4"}' ``` **探測影片** (不註冊,只取得影片資訊): ```bash curl -X POST http://localhost:3002/api/v1/probe \ -H "Content-Type: application/json" \ -d '{"path": "./demo/video.mp4"}' ``` **Probe 回應範例**: ```json { "uuid": "a1b10138a6bbb0cd", "file_name": "video.mp4", "duration": 120.5, "width": 1920, "height": 1080, "fps": 30.0, "cached": false, "format": { "filename": "/path/to/video.mp4", "format_name": "mov,mp4,m4a,3gp,3g2,mj2", "duration": "120.5", "size": "12345678", "bit_rate": "819200" }, "streams": [ { "index": 0, "codec_name": "h264", "codec_type": "video", "width": 1920, "height": 1080, "r_frame_rate": "30/1", "duration": "120.5" } ] } ``` **列出影片**: ```bash curl http://localhost:3002/api/v1/videos ``` **查詢影片**: ```bash curl "http://localhost:3002/api/v1/lookup?uuid=5dea6618a606e7c7" ``` **處理進度**: ```bash curl http://localhost:3002/api/v1/progress/5dea6618a606e7c7 ``` --- ## 端點對照表 | 功能 | n8n 使用 | WordPress 使用 | curl 測試 | |------|-----------|----------------|------------| | 健康檢查 | ✓ | ✓ | ✓ | | 語意搜尋 | ✓ (n8n格式) | ✓ (標準格式) | ✓ | | 影片探測 | ✓ | ✓ | ✓ | | 註冊影片 | ✓ | ✓ | ✓ | | 列出影片 | ✓ | ✓ | ✓ | | 查詢影片 | ✓ | ✓ | ✓ | | 處理進度 | ✓ | ✓ | ✓ | --- ## 回應格式 ### n8n 格式 (`/api/v1/n8n/search`) ```json { "query": "charade", "count": 10, "hits": [ { "id": "sentence_0001", "vid": "a1b10138a6bbb0cd", "start": 48.8, "end": 55.44, "title": "Chunk sentence_0001", "text": "...", "score": 0.92, "media_url": "https://wp.momentry.ddns.net/video.mp4" } ] } ``` ### 標準格式 (`/api/v1/search`) ```json { "results": [ { "uuid": "a1b10138a6bbb0cd", "chunk_id": "sentence_0001", "chunk_type": "sentence", "start_time": 48.8, "end_time": 55.44, "text": "...", "score": 0.92 } ], "query": "charade" } ``` --- ## HTTP 狀態碼 | 狀態 | 說明 | |------|------| | 200 | 成功 | | 400 | 請求格式錯誤 | | 404 | 端點或資源不存在 | | 500 | 伺服器內部錯誤 | | 502 | API 服務未啟動 | --- ## 錯誤處理 ### 502 Bad Gateway **原因**: Momentry API 服務未啟動 **解決**: ```bash sudo launchctl load /Library/LaunchDaemons/com.momentry.api.plist ``` --- ## 相關文件 - [API_INDEX.md](./API_INDEX.md) - 文件總覽(起點) - [API_EXAMPLES.md](./API_EXAMPLES.md) - **完整範例總覽(curl / n8n / WordPress)** - [API_N8N_GUIDE.md](./API_N8N_GUIDE.md) - n8n 詳細指南 - [API_WORDPRESS_GUIDE.md](./API_WORDPRESS_GUIDE.md) - WordPress 詳細指南 - [API_CURL_EXAMPLES.md](./API_CURL_EXAMPLES.md) - curl 範例