◆ API 參考
Seeknetic API 文檔
使用 Seeknetic 雲端 API 生成 embeddings 與 tags、管理集合,並完成語義檢索工作流。
API 區域端點
| 區域 | 基礎 URL | 狀態 |
|---|---|---|
| 日本東京 | https://api.jp.seeknetic.com | 可用 |
| 美國俄勒岡州 | https://api.us.seeknetic.com | 即將推出 |
| 中國北京 | https://api.cn.seeknetic.com | 即將推出 |
認證
所有模型服務端點都需要 API 密鑰認證。
使用 API 密鑰
你可以透過以下兩種方式提供 API 密鑰:
方式 1:X-API-Key 頭(推薦)
curl https://api.jp.seeknetic.com/video_tagging \
-H "X-API-Key: {your_api_key}" \
-H "Content-Type: application/json" 方式 2:Authorization 頭
curl https://api.jp.seeknetic.com/video_tagging \
-H "Authorization: Bearer {your_api_key}" \
-H "Content-Type: application/json" 視頻 Embedding
將視頻或文本編碼為向量表示,用於語義搜索和相似度計算。
POST /video_embedding/encode_video
將視頻編碼為 embedding 向量(同步處理)。
請求 curl
鑑權
X-API-KeyContent-Type
application/json請求體
{"video_url":"https://..."}bash
curl -X POST "https://api.jp.seeknetic.com/video_embedding/encode_video" \
-H "X-API-Key: {your_api_key}" \
-H "Content-Type: application/json" \
-d '{"video_url":"https://example.com/video.mp4"}' 示例 python
python
import requests
import base64
# Using video URL
response = requests.post(
"https://api.jp.seeknetic.com/video_embedding/encode_video",
headers={
"X-API-Key": "{your_api_key}",
"Content-Type": "application/json"
},
json={"video_url": "https://example.com/video.mp4"}
)
result = response.json()
print(f"Embedding dimension: {len(result['embeddings'][0])}") POST /video_embedding/encode_text
將文本編碼為 embedding 向量,用於語義搜索。
使用此端點創建可與視頻 embedding 比較的查詢 embedding。
請求 curl
鑑權
X-API-KeyContent-Type
application/json請求體
{"text":"..."}bash
curl -X POST "https://api.jp.seeknetic.com/video_embedding/encode_text" \
-H "X-API-Key: {your_api_key}" \
-H "Content-Type: application/json" \
-d '{"text":"A dog playing in the park"}' 示例 python
python
import requests
response = requests.post(
"https://api.jp.seeknetic.com/video_embedding/encode_text",
headers={
"X-API-Key": "{your_api_key}",
"Content-Type": "application/json"
},
json={"text": "A dog playing in the park"}
)
result = response.json()
print(f"Text embedding dimension: {len(result['embedding'])}") POST /video_embedding/encode_video/async
提交視頻進行異步 embedding 提取。
請求 curl
鑑權
X-API-KeyContent-Type
application/json請求體
{"video_url":"https://..."}bash
curl -X POST "https://api.jp.seeknetic.com/video_embedding/encode_video/async" \
-H "X-API-Key: {your_api_key}" \
-H "Content-Type: application/json" \
-d '{"video_url":"https://example.com/video.mp4"}' 示例 python
python
import requests
import time
# 1. Submit async task
response = requests.post(
"https://api.jp.seeknetic.com/video_embedding/encode_video/async",
headers={
"X-API-Key": "{your_api_key}",
"Content-Type": "application/json"
},
json={"video_url": "https://example.com/video.mp4"}
)
request_id = response.json()["request_id"]
print(f"Task submitted, Request ID: {request_id}")
# 2. Poll status until completion
while True:
status_response = requests.get(
f"https://api.jp.seeknetic.com/async_status/{request_id}",
headers={"X-API-Key": "{your_api_key}"}
)
status_data = status_response.json()
status = status_data['status']
if status == 'completed':
embedding = status_data['embedding']
print(f"Complete! Dimension: {len(embedding)}")
break
elif status == 'failed':
print(f"Failed: {status_data['error_message']}")
break
time.sleep(2) GET /async_status/{request_id}
查詢異步任務的狀態和結果。
請求 curl
鑑權
X-API-Key路徑參數
request_id 狀態流轉:
pending
→
processing
→
completed
bash
curl -X GET "https://api.jp.seeknetic.com/async_status/{request_id}" \
-H "X-API-Key: {your_api_key}" 示例 python
python
import requests
request_id = "your_request_id_from_async_call"
response = requests.get(
f"https://api.jp.seeknetic.com/async_status/{request_id}",
headers={"X-API-Key": "{your_api_key}"}
)
status_data = response.json()
print(f"Status: {status_data['status']}")
if status_data['status'] == 'completed':
print(f"Result: {status_data['embedding']}") 視頻 Tagging
分析視頻的鏡頭大小、攝像機運動、拍攝角度等元數據信息。
POST /video_tagging
分析視頻並提取元數據(同步處理)。
支持視頻 URL 和 Base64 編碼的視頻數據。
請求 curl
鑑權
X-API-KeyContent-Type
application/json請求體
{"video_url":"https://..."}bash
curl -X POST "https://api.jp.seeknetic.com/video_tagging" \
-H "X-API-Key: {your_api_key}" \
-H "Content-Type: application/json" \
-d '{"video_url":"https://example.com/video.mp4"}' 示例 python
python
import requests
response = requests.post(
"https://api.jp.seeknetic.com/video_tagging",
headers={
"X-API-Key": "{your_api_key}",
"Content-Type": "application/json"
},
json={"video_url": "https://example.com/video.mp4"}
)
result = response.json()
print(f"Tags: {result['tags']}") POST /video_tagging/async
提交視頻進行異步標簽提取。
請求 curl
鑑權
X-API-KeyContent-Type
application/json請求體
{"video_url":"https://..."}bash
curl -X POST "https://api.jp.seeknetic.com/video_tagging/async" \
-H "X-API-Key: {your_api_key}" \
-H "Content-Type: application/json" \
-d '{"video_url":"https://example.com/video.mp4"}' 示例 python
python
import requests
# Submit async tagging task
response = requests.post(
"https://api.jp.seeknetic.com/video_tagging/async",
headers={
"X-API-Key": "{your_api_key}",
"Content-Type": "application/json"
},
json={"video_url": "https://example.com/video.mp4"}
)
request_id = response.json()["request_id"]
print(f"Tagging task submitted, Request ID: {request_id}") 視頻管理
視頻管理服務提供視頻集合管理和語義搜索功能。
視頻集合
POST /collections
創建新的視頻集合。
請求 curl
鑑權
X-API-KeyContent-Type
application/json請求體
{"name":"...","description":"..."}bash
curl -X POST "https://api.jp.seeknetic.com/collections" \
-H "X-API-Key: {your_api_key}" \
-H "Content-Type: application/json" \
-d '{"name":"My Video Collection","description":"Test collection"}' 示例 python
python
import requests
response = requests.post(
"https://api.jp.seeknetic.com/collections",
headers={
"X-API-Key": "{your_api_key}",
"Content-Type": "application/json"
},
json={
"name": "My Video Collection",
"description": "Test collection"
}
)
result = response.json()
print(f"Collection ID: {result['collection_id']}") GET /collections
列出所有視頻集合。
請求 curl
鑑權
X-API-Keybash
curl -X GET "https://api.jp.seeknetic.com/collections" \
-H "X-API-Key: {your_api_key}" 示例 python
python
import requests
response = requests.get(
"https://api.jp.seeknetic.com/collections",
headers={"X-API-Key": "{your_api_key}"}
)
collections = response.json()
for collection in collections:
print(f"Collection: {collection['name']} (ID: {collection['id']})") POST /collections/{collection_id}/search
在集合中搜索相似的視頻片段(基於語義向量搜索)。
請求 curl
鑑權
X-API-KeyContent-Type
application/json路徑參數
collection_id請求體
{"text":"...","top_k":10}bash
curl -X POST "https://api.jp.seeknetic.com/collections/{collection_id}/search" \
-H "X-API-Key: {your_api_key}" \
-H "Content-Type: application/json" \
-d '{"text":"A dog playing in the park","top_k":10}' 示例 python
python
collection_id = "3d146cd7-4ecb-4dca-bf97-a271a143ee44"
response = requests.post(
f"https://api.jp.seeknetic.com/collections/{collection_id}/search",
headers={
"X-API-Key": "{your_api_key}",
"Content-Type": "application/json"
},
json={
"text": "A dog playing in the park",
"top_k": 10
}
)
for result in response.json()['results']:
print(f"Video: {result['video_id']}, Similarity: {result['similarity']:.2f}") 視頻管理
視頻上傳和處理採用異步處理模式。
POST /collections/{collection_id}/videos/upload
直接上傳視頻文件(推薦用於 < 100MB 的文件)。
請求 curl
鑑權
X-API-KeyContent-Type
multipart/form-data路徑參數
collection_id請求體
file (multipart)bash
curl -X POST "https://api.jp.seeknetic.com/collections/{collection_id}/videos/upload" \
-H "X-API-Key: {your_api_key}" \
-F "file=@video.mp4" 示例 python
python
import requests
collection_id = "your_collection_id"
with open("video.mp4", "rb") as video_file:
files = {"file": video_file}
response = requests.post(
f"https://api.jp.seeknetic.com/collections/{collection_id}/videos/upload",
headers={"X-API-Key": "{your_api_key}"},
files=files
)
result = response.json()
print(f"Video uploaded, ID: {result['video_id']}") GET /videos/{video_id}/status
輕量級狀態查詢,用於監控視頻處理進度。
請求 curl
鑑權
X-API-Key路徑參數
video_idbash
curl -X GET "https://api.jp.seeknetic.com/videos/{video_id}/status" \
-H "X-API-Key: {your_api_key}" 處理階段:
- uploaded: 已上傳,等待處理
- processing: 處理中
- processed: 處理完成
- failed: 處理失敗
示例 python
python
import requests
video_id = "your_video_id"
response = requests.get(
f"https://api.jp.seeknetic.com/videos/{video_id}/status",
headers={"X-API-Key": "{your_api_key}"}
)
status_data = response.json()
print(f"Status: {status_data['status']}")
print(f"Progress: {status_data.get('progress', 'N/A')}%") 錯誤處理
常見錯誤碼
| 狀態碼 | 說明 | 解決方法 |
|---|---|---|
| 400 | 請求參數錯誤 | 檢查請求 JSON 格式和必需字段 |
| 401 | API 密鑰無效 | 檢查 API 密鑰是否正確 |
| 404 | 資源不存在 | 檢查 URL 路徑和資源 ID |
| 429 | 超過速率限制 | 降低請求頻率或升級計劃 |
| 500 | 服務器內部錯誤 | 聯繫技術支持 |
| 502 | 外部 API 錯誤 | 外部服務暫時不可用,稍後重試 |
| 504 | 請求超時 | 嘗試使用異步接口或更小的視頻 |
速率限制
- 每個 API 密鑰都有獨立的速率限制(QPS - 每秒查詢數)
- 速率限制在創建 API 密鑰時設置
- 超出限制將返回 429 錯誤