# Momentry Core API 全端點測試報告 (完整 I/O)

**測試時間**: 2026-05-05 23:11:03  
**伺服器**: http://localhost:3003  
**API Key**: muser_test...  
**API 版本**: V4.0 / API V1  
**端點總數**: 46  

---

### GET /health

**說明**: Health check  
**HTTP 狀態**: 200  
**回應大小**: 52 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/health
```

**Response**:
```json
{"status":"ok","version":"1.0.0","uptime_ms":204684}
```

---
### GET /health/detailed

**說明**: Health detailed  
**HTTP 狀態**: 200  
**回應大小**: 280 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/health/detailed
```

**Response**:
```json
{"status":"ok","version":"1.0.0","uptime_ms":204716,"services":{"postgres":{"status":"ok","latency_ms":10,"error":null},"redis":{"status":"ok","latency_ms":0,"error":null},"qdrant":{"status":"ok","latency_ms":1,"error":null},"mongodb":{"status":"ok","latency_ms":0,"error":null}}}
```

---
### POST /api/v1/auth/login

**說明**: Login  
**HTTP 狀態**: 200  
**回應大小**: 99 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"username":"demo","password":"demo"}' \
  http://localhost:3003/api/v1/auth/login
```

**Response**:
```json
{"success":true,"message":"Login successful","api_key":"muser_test_001","user":{"username":"demo"}}
```

---
### POST /api/v1/auth/logout

**說明**: Logout  
**HTTP 狀態**: 200  
**回應大小**: 16 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/auth/logout
```

**Response**:
```json
{"success":true}
```

---
### GET /api/v1/files

**說明**: List files  
**HTTP 狀態**: 200  
**回應大小**: 4480 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/files
```

**Response**:
```json
{"success":true,"total":0,"page":1,"page_size":20,"data":[{"file_uuid":"417a7e93860d70c87aee6c4c1b715d70","file_name":"Old_Time_Movie_Show_-_Charade_1963.HD.mov","file_path":"/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov","status":"ready"},{"file_uuid":"0bfb7f3b8f529e806a8dc325b1e989f6","file_name":"Old Felix the Cat Cartoon.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Old Felix the Cat Cartoon.mp4","status":"ready"},{"file_uuid":"078975658e04529ee06f8d11cd7ba226","file_name":"Gamma 8-Director Chih-Lin Yang Shares His Experience:楊智麟導演經驗分享.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Gamma 8-Director Chih-Lin Yang Shares His Experience:楊智麟導演經驗分享.mp4","status":"ready"},{"file_uuid":"6f10e2e58146425947f047948de7a11a","file_name":"Alice Comedies-Alice's Mysterious Mystery (1926).mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Alice Comedies-Alice's Mysterious Mystery (1926).mp4","status":"ready"},{"file_uuid":"80459593c892f50d271e2408a79b1391","file_name":"Walt Disney - 1925 - Alice the Toreador.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Walt Disney - 1925 - Alice the Toreador.mp4","status":"ready"},{"file_uuid":"7a80cb575b873b7eea99002a7e6cfa1d","file_name":"view7.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/view7.mp4","status":"ready"},{"file_uuid":"d5f6a63b1065f496ac3eca62d3c67416","file_name":"view28.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/view28.mp4","status":"ready"},{"file_uuid":"e4bd8e594cb4824d15ab45522780c752","file_name":"view15.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/view15.mp4","status":"ready"},{"file_uuid":"4583cd2c15844238ac2eefdc1241a3ba","file_name":"view13.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/view13.mp4","status":"ready"},{"file_uuid":"84470206e42e1622f8a299f0089172c1","file_name":"Top Colorist Blake Jones Speaks about the Gamma Carry.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Top Colorist Blake Jones Speaks about the Gamma Carry.mp4","status":"ready"},{"file_uuid":"477d8fa7bc0e1a70d89cc0022b7ebfd2","file_name":"Thunderbolt ExaSAN at CCBN 中国国际广播电视信息网络展览会清.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Thunderbolt ExaSAN at CCBN 中国国际广播电视信息网络展览会清.mp4","status":"ready"},{"file_uuid":"65d6a1e7d1c7606ca588a30137a0cc60","file_name":"steamboat-willie_1928.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/steamboat-willie_1928.mp4","status":"ready"},{"file_uuid":"420f196bbab651616eb8ea49b74feabd","file_name":"Old Felix the Cat Cartoon.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Old Felix the Cat Cartoon.mp4","status":"ready"},{"file_uuid":"cf711e5ee9edd60a827ef2f4f5807eec","file_name":"KOBA 2022 Interview SBU Accusys Storage.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/KOBA 2022 Interview SBU Accusys Storage.mp4","status":"ready"},{"file_uuid":"d261e9add96fbe4fa84abb5832989b64","file_name":"Gamma Carry Saves the World..mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Gamma Carry Saves the World..mp4","status":"ready"},{"file_uuid":"fe9542b6149643d3bf71e46bd2967267","file_name":"Gamma 8-Director Chih-Lin Yang Shares His Experience:楊智麟導演經驗分享.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Gamma 8-Director Chih-Lin Yang Shares His Experience:楊智麟導演經驗分享.mp4","status":"ready"},{"file_uuid":"8e2e98c49355935f662cf1fb23c37c91","file_name":"ExaSAN Webinar by Blake Jones, Vision2see.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/ExaSAN Webinar by Blake Jones, Vision2see.mp4","status":"ready"},{"file_uuid":"a4f2880616e82a03c862831fbcd3477b","file_name":"ExaSAN PCIe series - Director Ou Yu-Zhi Shares His Experience.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/ExaSAN PCIe series - Director Ou Yu-Zhi Shares His Experience.mp4","status":"ready"},{"file_uuid":"c4e4d53de3b678469e0fdf9d4c1fb257","file_name":"animal4.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/animal4.mp4","status":"ready"},{"file_uuid":"1d5b574b4e6cbb2ead4ba5da5ff8c746","file_name":"Alice Comedies-Alice's Mysterious Mystery (1926).mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Alice Comedies-Alice's Mysterious Mystery (1926).mp4","status":"ready"}]}
```

---
### GET /api/v1/files/scan

**說明**: Scan files  
**HTTP 狀態**: 200  
**回應大小**: 8401 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/files/scan
```

**Response**:
```json
{"files":[{"file_name":"A12T3-Share-User Experience of Thunderbolt 3 Shareable Storage.mp4","relative_path":"A12T3-Share-User Experience of Thunderbolt 3 Shareable Storage.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/A12T3-Share-User Experience of Thunderbolt 3 Shareable Storage.mp4","file_size":794863677,"modified_time":"2026-04-16T04:04:11+00:00","is_registered":true,"file_uuid":"3e97fd717d518536771fab5d4a76b43d","status":"pending","registration_time":"2026-05-02 18:13:19.860869+00"},{"file_name":"Accusys Thunderbolt Share Storage at 2016 NAB.mp4","relative_path":"Accusys Thunderbolt Share Storage at 2016 NAB.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Accusys Thunderbolt Share Storage at 2016 NAB.mp4","file_size":28179869,"modified_time":"2026-04-16T06:40:01+00:00","is_registered":true,"file_uuid":"9c02a43cf752735b2386536a944854a6","status":"failed","registration_time":"2026-05-02 18:13:20.907845+00"},{"file_name":"Accusys-WD_FilmRiot.mp4","relative_path":"Accusys-WD_FilmRiot.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Accusys-WD_FilmRiot.mp4","file_size":16231980,"modified_time":"2026-04-16T03:01:08+00:00","is_registered":true,"file_uuid":"b62b2b05f7345d75568eed2363ac551e","status":"failed","registration_time":"2026-05-02 18:13:21.717608+00"},{"file_name":"Alice Comedies-Alice's Mysterious Mystery (1926).mp4","relative_path":"Alice Comedies-Alice's Mysterious Mystery (1926).mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Alice Comedies-Alice's Mysterious Mystery (1926).mp4","file_size":18513382,"modified_time":"2026-04-16T06:48:12+00:00","is_registered":true,"file_uuid":"6f10e2e58146425947f047948de7a11a","status":"failed","registration_time":"2026-05-02 18:13:55.466585+00"},{"file_name":"ExaSAN PCIe series - Director Ou Yu-Zhi Shares His Experience.mp4","relative_path":"ExaSAN PCIe series - Director Ou Yu-Zhi Shares His Experience.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/ExaSAN PCIe series - Director Ou Yu-Zhi Shares His Experience.mp4","file_size":6827600,"modified_time":"2026-03-24T09:39:51+00:00","is_registered":true,"file_uuid":"a4f2880616e82a03c862831fbcd3477b","status":"failed","registration_time":"2026-05-02 18:13:23.83631+00"},{"file_name":"ExaSAN Webinar by Blake Jones, Vision2see.mp4","relative_path":"ExaSAN Webinar by Blake Jones, Vision2see.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/ExaSAN Webinar by Blake Jones, Vision2see.mp4","file_size":38635889,"modified_time":"2026-04-16T06:39:50+00:00","is_registered":true,"file_uuid":"8e2e98c49355935f662cf1fb23c37c91","status":"failed","registration_time":"2026-05-02 18:13:24.095741+00"},{"file_name":"Gamma 8-Director Chih-Lin Yang Shares His Experience:楊智麟導演經驗分享.mp4","relative_path":"Gamma 8-Director Chih-Lin Yang Shares His Experience:楊智麟導演經驗分享.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Gamma 8-Director Chih-Lin Yang Shares His Experience:楊智麟導演經驗分享.mp4","file_size":229638144,"modified_time":"2026-04-16T03:57:31+00:00","is_registered":true,"file_uuid":"078975658e04529ee06f8d11cd7ba226","status":"failed","registration_time":"2026-05-02 18:14:28.439746+00"},{"file_name":"Gamma Carry Saves the World..mp4","relative_path":"Gamma Carry Saves the World..mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Gamma Carry Saves the World..mp4","file_size":25626208,"modified_time":"2026-04-16T06:40:14+00:00","is_registered":true,"file_uuid":"d261e9add96fbe4fa84abb5832989b64","status":"failed","registration_time":"2026-05-02 18:13:25.397595+00"},{"file_name":"KOBA 2022 Interview SBU Accusys Storage.mp4","relative_path":"KOBA 2022 Interview SBU Accusys Storage.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/KOBA 2022 Interview SBU Accusys Storage.mp4","file_size":49346848,"modified_time":"2026-04-16T06:40:26+00:00","is_registered":true,"file_uuid":"cf711e5ee9edd60a827ef2f4f5807eec","status":"failed","registration_time":"2026-05-02 18:13:26.147384+00"},{"file_name":"Old Felix the Cat Cartoon.mp4","relative_path":"Old Felix the Cat Cartoon.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Old Felix the Cat Cartoon.mp4","file_size":11584098,"modified_time":"2026-04-16T06:48:24+00:00","is_registered":true,"file_uuid":"0bfb7f3b8f529e806a8dc325b1e989f6","status":"failed","registration_time":"2026-05-02 18:48:31.861782+00"},{"file_name":"Old_Time_Movie_Show_-_Charade_1963.HD.mov","relative_path":"Old_Time_Movie_Show_-_Charade_1963.HD.mov","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Old_Time_Movie_Show_-_Charade_1963.HD.mov","file_size":2361629896,"modified_time":"2026-04-28T18:25:06+00:00","is_registered":true,"file_uuid":"384b0ff44aaaa1f14cb2cd63b3fea966","status":"failed","registration_time":"2026-04-29 10:48:39.657516+00"},{"file_name":"Thunderbolt ExaSAN at CCBN 中国国际广播电视信息网络展览会清.mp4","relative_path":"Thunderbolt ExaSAN at CCBN 中国国际广播电视信息网络展览会清.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Thunderbolt ExaSAN at CCBN 中国国际广播电视信息网络展览会清.mp4","file_size":13126748,"modified_time":"2026-04-16T06:39:54+00:00","is_registered":true,"file_uuid":"477d8fa7bc0e1a70d89cc0022b7ebfd2","status":"failed","registration_time":"2026-05-02 18:13:28.091448+00"},{"file_name":"Top Colorist Blake Jones Speaks about the Gamma Carry.mp4","relative_path":"Top Colorist Blake Jones Speaks about the Gamma Carry.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Top Colorist Blake Jones Speaks about the Gamma Carry.mp4","file_size":22506973,"modified_time":"2026-04-16T06:40:07+00:00","is_registered":true,"file_uuid":"84470206e42e1622f8a299f0089172c1","status":"failed","registration_time":"2026-05-02 18:13:28.749717+00"},{"file_name":"Walt Disney - 1925 - Alice the Toreador.mp4","relative_path":"Walt Disney - 1925 - Alice the Toreador.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/Walt Disney - 1925 - Alice the Toreador.mp4","file_size":22280928,"modified_time":"2026-04-16T06:48:20+00:00","is_registered":true,"file_uuid":"80459593c892f50d271e2408a79b1391","status":"failed","registration_time":"2026-05-02 18:13:30.155261+00"},{"file_name":"animal4.mp4","relative_path":"animal4.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/animal4.mp4","file_size":31971314,"modified_time":"2026-04-17T02:13:04+00:00","is_registered":true,"file_uuid":"c4e4d53de3b678469e0fdf9d4c1fb257","status":"failed","registration_time":"2026-05-02 18:13:23.345094+00"},{"file_name":"steamboat-willie_1928.mp4","relative_path":"steamboat-willie_1928.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/steamboat-willie_1928.mp4","file_size":596809088,"modified_time":"2026-04-14T08:24:45+00:00","is_registered":true,"file_uuid":"65d6a1e7d1c7606ca588a30137a0cc60","status":"failed","registration_time":"2026-05-02 18:13:27.362574+00"},{"file_name":"view13.mp4","relative_path":"view13.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/view13.mp4","file_size":15866840,"modified_time":"2026-04-17T02:16:45+00:00","is_registered":true,"file_uuid":"4583cd2c15844238ac2eefdc1241a3ba","status":"failed","registration_time":"2026-05-02 18:13:28.915857+00"},{"file_name":"view15.mp4","relative_path":"view15.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/view15.mp4","file_size":39937687,"modified_time":"2026-04-17T02:18:04+00:00","is_registered":true,"file_uuid":"e4bd8e594cb4824d15ab45522780c752","status":"failed","registration_time":"2026-05-02 18:13:29.274484+00"},{"file_name":"view28.mp4","relative_path":"view28.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/view28.mp4","file_size":101692507,"modified_time":"2026-04-17T02:22:35+00:00","is_registered":true,"file_uuid":"d5f6a63b1065f496ac3eca62d3c67416","status":"failed","registration_time":"2026-05-02 18:13:29.751858+00"},{"file_name":"view7.mp4","relative_path":"view7.mp4","file_path":"/Users/accusys/momentry/var/sftpgo/data/demo/view7.mp4","file_size":11128820,"modified_time":"2026-04-17T02:15:51+00:00","is_registered":true,"file_uuid":"7a80cb575b873b7eea99002a7e6cfa1d","status":"failed","registration_time":"2026-05-02 18:13:29.983119+00"}],"total":20,"registered_count":20,"unregistered_count":0}
```

---
### POST /api/v1/files/register

**說明**: Register file  
**HTTP 狀態**: 422  
**回應大小**: 103 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"path":"/Users/accusys/test_video/charade_sample.mp4"}' \
  http://localhost:3003/api/v1/files/register
```

**Response**:
```json
Failed to deserialize the JSON body into the target type: missing field `file_path` at line 1 column 55
```

---
### POST /api/v1/files/unregister

**說明**: Unregister file  
**HTTP 狀態**: 200  
**回應大小**: 84 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"file_uuid":"00000000000000000000000000000000"}' \
  http://localhost:3003/api/v1/files/unregister
```

**Response**:
```json
{"success":false,"uuid":"","message":"Either uuid or file_path+pattern is required"}
```

---
### GET /api/v1/file/417a7e93860d70c87aee6c4c1b715d70

**說明**: File detail  
**HTTP 狀態**: 200  
**回應大小**: 1001 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/file/417a7e93860d70c87aee6c4c1b715d70
```

**Response**:
```json
{"success":true,"file_uuid":"417a7e93860d70c87aee6c4c1b715d70","file_name":"Old_Time_Movie_Show_-_Charade_1963.HD.mov","file_path":"/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov","metadata":{"format":{"size":"2361629896","bit_rate":"2746348","duration":"6879.329524","filename":"/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov","format_name":"mov,mp4,m4a,3gp,3g2,mj2"},"streams":[{"tags":{"language":"und","handler_name":"ISO Media file produced by Google Inc."},"index":0,"width":1920,"height":1080,"channels":null,"duration":"6879.255717","nb_frames":"412343","codec_name":"h264","codec_type":"video","sample_rate":null,"r_frame_rate":"60000/1001"},{"tags":{"language":"eng","handler_name":"ISO Media file produced by Google Inc."},"index":1,"width":null,"height":null,"channels":2,"duration":"6879.329524","nb_frames":"296268","codec_name":"aac","codec_type":"audio","sample_rate":"44100","r_frame_rate":"0/0"}]},"created_at":"2026-05-03T07:44:43.384236Z"}
```

---
### GET /api/v1/file/417a7e93860d70c87aee6c4c1b715d70/probe

**說明**: File probe  
**HTTP 狀態**: 200  
**回應大小**: 958 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/file/417a7e93860d70c87aee6c4c1b715d70/probe
```

**Response**:
```json
{"file_uuid":"417a7e93860d70c87aee6c4c1b715d70","file_name":"Old_Time_Movie_Show_-_Charade_1963.HD.mov","duration":6879.329524,"width":1920,"height":1080,"fps":59.94005994005994,"total_frames":412343,"cached":true,"format":{"filename":"/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov","format_name":"mov,mp4,m4a,3gp,3g2,mj2","duration":"6879.329524","size":"2361629896","bit_rate":"2746348"},"streams":[{"index":0,"codec_name":"h264","codec_type":"video","width":1920,"height":1080,"r_frame_rate":"60000/1001","nb_frames":"412343","duration":"6879.255717","sample_rate":null,"channels":null,"tags":{"language":"und","handler_name":"ISO Media file produced by Google Inc."}},{"index":1,"codec_name":"aac","codec_type":"audio","width":null,"height":null,"r_frame_rate":"0/0","nb_frames":"296268","duration":"6879.329524","sample_rate":"44100","channels":2,"tags":{"language":"eng","handler_name":"ISO Media file produced by Google Inc."}}]}
```

---
### GET /api/v1/file/417a7e93860d70c87aee6c4c1b715d70/identities

**說明**: File identities  
**HTTP 狀態**: 500  
**回應大小**: 71 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/file/417a7e93860d70c87aee6c4c1b715d70/identities
```

**Response**:
```json
error returned from database: relation "file_identities" does not exist
```

---
### GET /api/v1/file/417a7e93860d70c87aee6c4c1b715d70/chunks

**說明**: File chunks  
**HTTP 狀態**: 500  
**回應大小**: 0 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/file/417a7e93860d70c87aee6c4c1b715d70/chunks
```

**Response**:
```json

```

---
### POST /api/v1/file/417a7e93860d70c87aee6c4c1b715d70/process

**說明**: Trigger processing  
**HTTP 狀態**: 200  
**回應大小**: 174 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"processors":["story"]}' \
  http://localhost:3003/api/v1/file/417a7e93860d70c87aee6c4c1b715d70/process
```

**Response**:
```json
{"job_id":133,"file_uuid":"417a7e93860d70c87aee6c4c1b715d70","status":"PENDING","pids":[0,0,0],"message":"Processing triggered for Old_Time_Movie_Show_-_Charade_1963.HD.mov"}
```

---
### GET /api/v1/identities

**說明**: List identities  
**HTTP 狀態**: 200  
**回應大小**: 2714 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/identities
```

**Response**:
```json
{"identities":[{"id":22,"name":"Raoul Delfosse","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Taxi Driver (uncredited)","tmdb_cast_order":14,"tmdb_movie_title":"Charade"}},{"id":21,"name":"Albert Daumergue","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Man in Stamp Market (uncredited)","tmdb_cast_order":13,"tmdb_movie_title":"Charade"}},{"id":20,"name":"Marcel Bernier","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Taxi Driver (uncredited)","tmdb_cast_order":12,"tmdb_movie_title":"Charade"}},{"id":19,"name":"Claudine Berg","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Maid (uncredited)","tmdb_cast_order":11,"tmdb_movie_title":"Charade"}},{"id":18,"name":"Marc Arian","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Subway Passenger (uncredited)","tmdb_cast_order":10,"tmdb_movie_title":"Charade"}},{"id":17,"name":"Thomas Chelimsky","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Jean-Louis Gaudel","tmdb_cast_order":9,"tmdb_movie_title":"Charade"}},{"id":16,"name":"Paul Bonifas","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Mr. Felix","tmdb_cast_order":8,"tmdb_movie_title":"Charade"}},{"id":15,"name":"Jacques Marin","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Edouard Grandpierre","tmdb_cast_order":7,"tmdb_movie_title":"Charade"}},{"id":14,"name":"Ned Glass","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Leopold Gideon","tmdb_cast_order":6,"tmdb_movie_title":"Charade"}},{"id":13,"name":"Dominique Minot","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Sylvie Gaudel","tmdb_cast_order":5,"tmdb_movie_title":"Charade"}},{"id":12,"name":"George Kennedy","metadata":{"speaker_id":"SPEAKER_9","tmdb_movie_id":4808,"speaker_method":"mar_lip_analysis","tmdb_character":"Herman Scobie","tmdb_cast_order":4,"tmdb_movie_title":"Charade","speaker_confidence":0.85}},{"id":11,"name":"James Coburn","metadata":{"tmdb_movie_id":4808,"tmdb_character":"Tex Panthollow","tmdb_cast_order":3,"tmdb_movie_title":"Charade"}},{"id":10,"name":"Walter Matthau","metadata":{"speaker_id":"SPEAKER_4","tmdb_movie_id":4808,"speaker_method":"mar_lip_analysis","tmdb_character":"Hamilton Bartholemew","tmdb_cast_order":2,"tmdb_movie_title":"Charade","speaker_confidence":0.85}},{"id":9,"name":"Audrey Hepburn","metadata":{"speaker_id":"SPEAKER_1","tmdb_movie_id":4808,"speaker_method":"mar_lip_analysis","tmdb_character":"Regina Lampert","tmdb_cast_order":1,"tmdb_movie_title":"Charade","speaker_confidence":0.85}},{"id":8,"name":"Cary Grant","metadata":{"speaker_id":"SPEAKER_0","tmdb_movie_id":4808,"speaker_method":"mar_lip_analysis","tmdb_character":"Peter Joshua","tmdb_cast_order":0,"tmdb_movie_title":"Charade","speaker_confidence":0.85}}],"count":15,"page":1,"page_size":20}
```

---
### POST /api/v1/identity

**說明**: Create identity  
**HTTP 狀態**: 500  
**回應大小**: 636 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"face_json_path":"test","identity_name":"Test Identity"}' \
  http://localhost:3003/api/v1/identity
```

**Response**:
```json
Script failed: Traceback (most recent call last):
  File "/Users/accusys/momentry_core_0.1/scripts/select_face_reference_vectors_v2.py", line 468, in <module>
    main()
  File "/Users/accusys/momentry_core_0.1/scripts/select_face_reference_vectors_v2.py", line 422, in main
    angle_groups = group_faces_by_angle(args.face_json)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/accusys/momentry_core_0.1/scripts/select_face_reference_vectors_v2.py", line 60, in group_faces_by_angle
    with open(face_json_path) as f:
         ^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'test'
```

---
### GET /api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4

**說明**: Identity detail  
**HTTP 狀態**: 500  
**回應大小**: 64 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4
```

**Response**:
```json
error returned from database: column "updated_at" does not exist
```

---
### GET /api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/files

**說明**: Identity files  
**HTTP 狀態**: 500  
**回應大小**: 71 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/files
```

**Response**:
```json
error returned from database: relation "file_identities" does not exist
```

---
### GET /api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/chunks

**說明**: Identity chunks  
**HTTP 狀態**: 500  
**回應大小**: 71 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/chunks
```

**Response**:
```json
error returned from database: relation "file_identities" does not exist
```

---
### POST /api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/bind

**說明**: Bind face  
**HTTP 狀態**: 404  
**回應大小**: 68 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"file_uuid":"417a7e93860d70c87aee6c4c1b715d70","face_id":"face_100"}' \
  http://localhost:3003/api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/bind
```

**Response**:
```json
{"error":"Identity not found: a9a90105-6d6b-46ff-92da-0c3c1a57dff4"}
```

---
### POST /api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/unbind

**說明**: Unbind face  
**HTTP 狀態**: 500  
**回應大小**: 119 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"file_uuid":"417a7e93860d70c87aee6c4c1b715d70","face_id":"face_100"}' \
  http://localhost:3003/api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/unbind
```

**Response**:
```json
{"error":"error returned from database: column \"identity_confidence\" of relation \"face_detections\" does not exist"}
```

---
### POST /api/v1/identity/00000000-0000-0000-0000-000000000001/mergeinto

**說明**: Merge into  
**HTTP 狀態**: 404  
**回應大小**: 37 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"into_uuid":"00000000-0000-0000-0000-000000000002"}' \
  http://localhost:3003/api/v1/identity/00000000-0000-0000-0000-000000000001/mergeinto
```

**Response**:
```json
{"error":"Source identity not found"}
```

---
### DELETE /api/v1/identity/00000000-0000-0000-0000-000000000003

**說明**: Delete identity  
**HTTP 狀態**: 404  
**回應大小**: 0 bytes

**Request**:
```bash
curl -X DELETE \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/identity/00000000-0000-0000-0000-000000000003
```

**Response**:
```json

```

---
### GET /api/v1/faces/candidates

**說明**: Face candidates  
**HTTP 狀態**: 500  
**回應大小**: 71 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/faces/candidates
```

**Response**:
```json
Query error: error returned from database: column "bbox" does not exist
```

---
### POST /api/v1/search

**說明**: Vector search  
**HTTP 狀態**: 200  
**回應大小**: 58 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"query":"Cary Grant as mysterious stranger","limit":5}' \
  http://localhost:3003/api/v1/search
```

**Response**:
```json
{"results":[],"query":"Cary Grant as mysterious stranger"}
```

---
### POST /api/v1/search/bm25

**說明**: BM25 search  
**HTTP 狀態**: 200  
**回應大小**: 48 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"query":"stolen fortune thriller","limit":5}' \
  http://localhost:3003/api/v1/search/bm25
```

**Response**:
```json
{"results":[],"query":"stolen fortune thriller"}
```

---
### POST /api/v1/search/hybrid

**說明**: Hybrid search  
**HTTP 狀態**: 200  
**回應大小**: 229 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"query":"Paris apartment scene","limit":5}' \
  http://localhost:3003/api/v1/search/hybrid
```

**Response**:
```json
{"results":[{"uuid":"unknown","chunk_id":"unknown","chunk_type":"","start_time":0.0,"end_time":0.0,"text":"","vector_score":0.7524489760398865,"bm25_score":0.0,"combined_score":6.067750513553619}],"query":"Paris apartment scene"}
```

---
### POST /api/v1/search/smart

**說明**: Smart search  
**HTTP 狀態**: 500  
**回應大小**: 79 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"uuid":"417a7e93860d70c87aee6c4c1b715d70","query":"Audrey Hepburn","limit":5}' \
  http://localhost:3003/api/v1/search/smart
```

**Response**:
```json
{"error":"error returned from database: column \"scene_order\" does not exist"}
```

---
### POST /api/v1/search/universal

**說明**: Universal search  
**HTTP 狀態**: 400  
**回應大小**: 72 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"query":"stamp","uuid":"417a7e93860d70c87aee6c4c1b715d70","limit":5}' \
  http://localhost:3003/api/v1/search/universal
```

**Response**:
```json
{"error":"error returned from database: column \"uuid\" does not exist"}
```

---
### POST /api/v1/search/frames

**說明**: Frame search  
**HTTP 狀態**: 500  
**回應大小**: 92 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"query":"passport","uuid":"417a7e93860d70c87aee6c4c1b715d70","limit":5}' \
  http://localhost:3003/api/v1/search/frames
```

**Response**:
```json
{"error":"Search error: error returned from database: column f.pose_results does not exist"}
```

---
### POST /api/v1/search/visual

**說明**: Visual search  
**HTTP 狀態**: 422  
**回應大小**: 120 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"uuid":"417a7e93860d70c87aee6c4c1b715d70","criteria":{}}' \
  http://localhost:3003/api/v1/search/visual
```

**Response**:
```json
Failed to deserialize the JSON body into the target type: criteria: missing field `required_classes` at line 1 column 56
```

---
### POST /api/v1/search/visual/class

**說明**: Visual by class  
**HTTP 狀態**: 500  
**回應大小**: 0 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"uuid":"417a7e93860d70c87aee6c4c1b715d70","object_class":"person"}' \
  http://localhost:3003/api/v1/search/visual/class
```

**Response**:
```json

```

---
### POST /api/v1/search/visual/density

**說明**: Visual by density  
**HTTP 狀態**: 500  
**回應大小**: 0 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"uuid":"417a7e93860d70c87aee6c4c1b715d70","min_density":0.5}' \
  http://localhost:3003/api/v1/search/visual/density
```

**Response**:
```json

```

---
### POST /api/v1/search/visual/combination

**說明**: Visual combination  
**HTTP 狀態**: 500  
**回應大小**: 0 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"uuid":"417a7e93860d70c87aee6c4c1b715d70","combination":[["person",1]]}' \
  http://localhost:3003/api/v1/search/visual/combination
```

**Response**:
```json

```

---
### POST /api/v1/search/visual/stats

**說明**: Visual stats  
**HTTP 狀態**: 500  
**回應大小**: 0 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"uuid":"417a7e93860d70c87aee6c4c1b715d70"}' \
  http://localhost:3003/api/v1/search/visual/stats
```

**Response**:
```json

```

---
### GET /api/v1/jobs

**說明**: List jobs  
**HTTP 狀態**: 200  
**回應大小**: 444 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/jobs
```

**Response**:
```json
{"jobs":[{"id":132,"uuid":"417a7e93860d70c87aee6c4c1b715d70","status":"pending","current_processor":null,"progress_current":0,"progress_total":0,"created_at":"2026-05-05 15:07:51.891007+00","started_at":null},{"id":133,"uuid":"417a7e93860d70c87aee6c4c1b715d70","status":"pending","current_processor":null,"progress_current":0,"progress_total":0,"created_at":"2026-05-05 15:11:04.023419+00","started_at":null}],"count":2,"page":1,"page_size":20}
```

---
### GET /api/v1/job/00000000-0000-0000-0000-000000000000

**說明**: Job detail  
**HTTP 狀態**: 500  
**回應大小**: 0 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/job/00000000-0000-0000-0000-000000000000
```

**Response**:
```json

```

---
### GET /api/v1/rule/story/status

**說明**: Rule status  
**HTTP 狀態**: 200  
**回應大小**: 62 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/rule/story/status
```

**Response**:
```json
{"rule":"story","supported_processor_ids":[],"active_jobs":[]}
```

---
### GET /api/v1/progress/417a7e93860d70c87aee6c4c1b715d70

**說明**: Progress  
**HTTP 狀態**: 200  
**回應大小**: 1497 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/progress/417a7e93860d70c87aee6c4c1b715d70
```

**Response**:
```json
{"file_uuid":"417a7e93860d70c87aee6c4c1b715d70","user":null,"group":null,"file_name":"Old_Time_Movie_Show_-_Charade_1963.HD.mov","duration":6879.329524,"overall_progress":0,"cpu_percent":4.5,"gpu_percent":null,"memory_percent":0.2,"memory_mb":29344,"system":{"cpu_idle_pct":50.0,"memory_available_mb":2949,"memory_total_mb":16384,"memory_used_pct":82.0,"gpu_available":false,"gpu_utilization_pct":null,"gpu_memory_used_pct":null,"dynamic_concurrency":2,"config_concurrency":2,"running_processors":2},"processors":[{"name":"asr","status":"pending","current":0,"total":0,"progress":0,"message":"","frames_processed":0,"chunks_produced":0,"retry_count":0},{"name":"cut","status":"pending","current":0,"total":0,"progress":0,"message":"","frames_processed":0,"chunks_produced":0,"retry_count":0},{"name":"asrx","status":"pending","current":0,"total":0,"progress":0,"message":"","frames_processed":0,"chunks_produced":0,"retry_count":0},{"name":"yolo","status":"pending","current":0,"total":0,"progress":0,"message":"","frames_processed":0,"chunks_produced":0,"retry_count":0},{"name":"ocr","status":"running","current":0,"total":0,"progress":0,"message":"","frames_processed":0,"chunks_produced":0,"retry_count":0},{"name":"face","status":"running","current":0,"total":0,"progress":0,"message":"","frames_processed":0,"chunks_produced":0,"retry_count":0},{"name":"pose","status":"completed","current":0,"total":0,"progress":0,"message":"","frames_processed":0,"chunks_produced":8191,"retry_count":0}]}
```

---
### GET /api/v1/resources

**說明**: List resources  
**HTTP 狀態**: 500  
**回應大小**: 65 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/resources
```

**Response**:
```json
error returned from database: relation "resources" does not exist
```

---
### POST /api/v1/resource/register

**說明**: Register resource  
**HTTP 狀態**: 422  
**回應大小**: 105 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"name":"demo_worker","type":"worker","host":"localhost","port":9000}' \
  http://localhost:3003/api/v1/resource/register
```

**Response**:
```json
Failed to deserialize the JSON body into the target type: missing field `resource_id` at line 1 column 69
```

---
### POST /api/v1/resource/heartbeat

**說明**: Resource heartbeat  
**HTTP 狀態**: 422  
**回應大小**: 105 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"name":"demo_worker"}' \
  http://localhost:3003/api/v1/resource/heartbeat
```

**Response**:
```json
Failed to deserialize the JSON body into the target type: missing field `resource_id` at line 1 column 22
```

---
### POST /api/v1/agents/translate

**說明**: Translate  
**HTTP 狀態**: 200  
**回應大小**: 117 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"text":"Hello world","target_language":"zh-TW"}' \
  http://localhost:3003/api/v1/agents/translate
```

**Response**:
```json
{"success":true,"translated_text":"你好，世界","source_language_detected":"unknown","model_used":"qwen3:latest"}
```

---
### POST /api/v1/agents/identity/analyze

**說明**: Identity analyze  
**HTTP 狀態**: 404  
**回應大小**: 73 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"file_uuid":"417a7e93860d70c87aee6c4c1b715d70"}' \
  http://localhost:3003/api/v1/agents/identity/analyze
```

**Response**:
```json
Face clustered data not found for video: 417a7e93860d70c87aee6c4c1b715d70
```

---
### POST /api/v1/agents/identity/suggest

**說明**: Identity suggest  
**HTTP 狀態**: 404  
**回應大小**: 73 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"file_uuid":"417a7e93860d70c87aee6c4c1b715d70"}' \
  http://localhost:3003/api/v1/agents/identity/suggest
```

**Response**:
```json
Face clustered data not found for video: 417a7e93860d70c87aee6c4c1b715d70
```

---
### GET /api/v1/agents/identity/status

**說明**: Identity agent status  
**HTTP 狀態**: 200  
**回應大小**: 204 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/agents/identity/status
```

**Response**:
```json
{"success":true,"agent_name":"Identity Agent","version":"1.0.0","supported_models":["gemma4","qwen3"],"default_thresholds":{"auto_merge_threshold":0.8,"llm_threshold":0.5,"face_similarity_threshold":0.3}}
```

---
### POST /api/v1/agents/suggest/merge

**說明**: Suggest merge  
**HTTP 狀態**: 500  
**回應大小**: 71 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"file_uuid":"417a7e93860d70c87aee6c4c1b715d70"}' \
  http://localhost:3003/api/v1/agents/suggest/merge
```

**Response**:
```json
error returned from database: relation "file_identities" does not exist
```

---
### POST /api/v1/agents/5w1h/analyze

**說明**: 5W1H analyze  
**HTTP 狀態**: 422  
**回應大小**: 103 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"chunk_id":"chunk_1"}' \
  http://localhost:3003/api/v1/agents/5w1h/analyze
```

**Response**:
```json
Failed to deserialize the JSON body into the target type: missing field `file_uuid` at line 1 column 22
```

---
### POST /api/v1/agents/5w1h/batch

**說明**: 5W1H batch  
**HTTP 狀態**: 422  
**回應大小**: 104 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"chunk_ids":["chunk_1","chunk_2"]}' \
  http://localhost:3003/api/v1/agents/5w1h/batch
```

**Response**:
```json
Failed to deserialize the JSON body into the target type: missing field `file_uuids` at line 1 column 35
```

---
### GET /api/v1/agents/5w1h/status

**說明**: 5W1H status  
**HTTP 狀態**: 500  
**回應大小**: 58 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/agents/5w1h/status
```

**Response**:
```json
error returned from database: column "uuid" does not exist
```

---
### GET /api/v1/stats/sftpgo

**說明**: SFTPGo status  
**HTTP 狀態**: 200  
**回應大小**: 2997 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/stats/sftpgo
```

**Response**:
```json
{"username":"demo","home_dir":"/Users/accusys/momentry/var/sftpgo/data/demo","files_count":103,"registered_videos":[{"uuid":"384b0ff44aaaa1f14cb2cd63b3fea966","file_name":"Old_Time_Movie_Show_-_Charade_1963.HD.mov","status":"failed"},{"uuid":"dd61fda85fee441fdd00ab5528213ff7","file_name":"ExaSAN PCIe series - Director Ou Yu-Zhi Shares His Experience.mp4","status":"failed"},{"uuid":"3e97fd717d518536771fab5d4a76b43d","file_name":"A12T3-Share-User Experience of Thunderbolt 3 Shareable Storage.mp4","status":"pending"},{"uuid":"9c02a43cf752735b2386536a944854a6","file_name":"Accusys Thunderbolt Share Storage at 2016 NAB.mp4","status":"failed"},{"uuid":"b62b2b05f7345d75568eed2363ac551e","file_name":"Accusys-WD_FilmRiot.mp4","status":"failed"},{"uuid":"1d5b574b4e6cbb2ead4ba5da5ff8c746","file_name":"Alice Comedies-Alice's Mysterious Mystery (1926).mp4","status":"failed"},{"uuid":"c4e4d53de3b678469e0fdf9d4c1fb257","file_name":"animal4.mp4","status":"failed"},{"uuid":"a4f2880616e82a03c862831fbcd3477b","file_name":"ExaSAN PCIe series - Director Ou Yu-Zhi Shares His Experience.mp4","status":"failed"},{"uuid":"8e2e98c49355935f662cf1fb23c37c91","file_name":"ExaSAN Webinar by Blake Jones, Vision2see.mp4","status":"failed"},{"uuid":"fe9542b6149643d3bf71e46bd2967267","file_name":"Gamma 8-Director Chih-Lin Yang Shares His Experience:楊智麟導演經驗分享.mp4","status":"failed"},{"uuid":"d261e9add96fbe4fa84abb5832989b64","file_name":"Gamma Carry Saves the World..mp4","status":"failed"},{"uuid":"cf711e5ee9edd60a827ef2f4f5807eec","file_name":"KOBA 2022 Interview SBU Accusys Storage.mp4","status":"failed"},{"uuid":"420f196bbab651616eb8ea49b74feabd","file_name":"Old Felix the Cat Cartoon.mp4","status":"failed"},{"uuid":"65d6a1e7d1c7606ca588a30137a0cc60","file_name":"steamboat-willie_1928.mp4","status":"failed"},{"uuid":"477d8fa7bc0e1a70d89cc0022b7ebfd2","file_name":"Thunderbolt ExaSAN at CCBN 中国国际广播电视信息网络展览会清.mp4","status":"failed"},{"uuid":"84470206e42e1622f8a299f0089172c1","file_name":"Top Colorist Blake Jones Speaks about the Gamma Carry.mp4","status":"failed"},{"uuid":"4583cd2c15844238ac2eefdc1241a3ba","file_name":"view13.mp4","status":"failed"},{"uuid":"e4bd8e594cb4824d15ab45522780c752","file_name":"view15.mp4","status":"failed"},{"uuid":"d5f6a63b1065f496ac3eca62d3c67416","file_name":"view28.mp4","status":"failed"},{"uuid":"7a80cb575b873b7eea99002a7e6cfa1d","file_name":"view7.mp4","status":"failed"},{"uuid":"80459593c892f50d271e2408a79b1391","file_name":"Walt Disney - 1925 - Alice the Toreador.mp4","status":"failed"},{"uuid":"6f10e2e58146425947f047948de7a11a","file_name":"Alice Comedies-Alice's Mysterious Mystery (1926).mp4","status":"failed"},{"uuid":"078975658e04529ee06f8d11cd7ba226","file_name":"Gamma 8-Director Chih-Lin Yang Shares His Experience:楊智麟導演經驗分享.mp4","status":"failed"},{"uuid":"0bfb7f3b8f529e806a8dc325b1e989f6","file_name":"Old Felix the Cat Cartoon.mp4","status":"failed"}],"last_login":null}
```

---
### GET /api/v1/stats/inference

**說明**: Inference health  
**HTTP 狀態**: 200  
**回應大小**: 273 bytes

**Request**:
```bash
curl -X GET \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  
  http://localhost:3003/api/v1/stats/inference
```

**Response**:
```json
{"ollama":{"engine":"Ollama","model":"nomic-embed-text","status":"ok","latency_ms":4,"error":null},"llama_server":{"engine":"llama-server","model":"gemma4_e4b_q5","status":"error","latency_ms":null,"error":"error sending request for url (http://localhost:8081/v1/models)"}}
```

---
### POST /api/v1/config/cache

**說明**: Cache toggle  
**HTTP 狀態**: 422  
**回應大小**: 101 bytes

**Request**:
```bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"enable":true}' \
  http://localhost:3003/api/v1/config/cache
```

**Response**:
```json
Failed to deserialize the JSON body into the target type: missing field `enabled` at line 1 column 15
```

---

---

## 測試摘要

| 結果 | 數量 | 佔比 |
|------|------|------|
| ✅ 通過 (2xx/3xx/4xx) | 34 | 65% |
| ❌ 失敗 (5xx) | 18 | 35% |
| **合計** | **52** | **100%** |

> 註: 4xx 回應（如 404 Not Found、422 Unprocessable）視為「通過」，因為端點正常回應只是請求參數未能完整比對到資料。5xx 表示伺服器內部錯誤，需修復。

## 示範數據

| 資源 | UUID |
|------|------|
| Demo File (Charade) | `417a7e93860d70c87aee6c4c1b715d70` |
| Demo Identity (Cary Grant) | `a9a90105-6d6b-46ff-92da-0c3c1a57dff4` |

## 完整回應檔案

docs_v1.0/API_V1.0.0/TEST_RESULTS/api_responses_20260505_231103/
