本篇是免費 token fuel 系列第 90 篇,研究 Reka Vision 官方的免費方案。它提供 3 小時、合計 180 分鐘的 indexed video,讓學生先試用影片索引、語意搜尋與影片問答;這是影片處理燃料,不是一般聊天模型的免費 token wallet,也不是每月自動補回的額度。查核日為 2026-08-25,實際帳戶與官方 pricing 變動時要重新讀回。

本篇分類為 CONDITIONAL_REKA_VISION_FREE_180_MINUTES_VIDEO_INDEXING。它對主要 AI agent 的價值,是把長影片轉成可搜尋、可問答的受控資料來源,適合練習 video RAG、時間戳引用、工具路由、索引狀態與資料刪除;不適合被誤寫成「免費聊天 token」或「永久免費 API」。
本文只做官方文件整理,不代註冊、不產生或取得 API key、不上傳影片、不執行 live request、不加入 billing、不預付 credit、不建立 MCP 連線,也不進行 WordPress 外部寫入。主要 agent 的文字問答燃料與影片資料燃料要分開記帳;人工 handoff 原則可延伸閱讀 YOLO LAB AI agent 使用 FAQ。
先把免費額度說準
Reka Vision pricing 頁目前寫明,Free Tier 是 3 free hours of indexed video,也就是總共 180 分鐘,用來評估 Vision API;內容包含 video indexing、search 與 Q&A capabilities。它沒有承諾每月重置、每天重置、每位學生一份,亦沒有承諾可把 180 分鐘拆成可轉移的聊天 token。因此 manifest 要記錄 indexed_video_minutes=180,不能記錄成 monthly_chat_tokens。
「3 小時」是影片輸入與索引的量度,不等於 agent 可以免費生成 3 小時影片,也不等於每段影片都能無限搜尋或無限問答。官方 Developer Tier 的價格表把 video indexing 以 input video minute 計算,search 以每次搜尋計算,QA 與 tagging 以 output token 計算;所以免費驗證與後續付費單位是不同欄位,不能相互換算。
function classifyRekaFuel(snapshot) {
if (snapshot.provider !== 'REKA') return 'PROVIDER_MISMATCH';
if (snapshot.product !== 'VISION') return 'PRODUCT_SCOPE_REVIEW';
if (snapshot.freeIndexedMinutes !== 180) return 'FREE_QUOTA_RECHECK';
if (snapshot.chatTokenBalance !== undefined) return 'TOKEN_UNIT_MISMATCH';
if (snapshot.billingRequired === true) return 'BILLING_HANDOFF';
return 'VIDEO_INDEX_CANARY';
}
Reka Vision 能替 agent 做什麼
官方 Vision API overview 把它定義為 managed service:平台替你預處理並保存影片與 embeddings,提供 upload、retrieve、list、delete、semantic search、video Q&A、metadata tagging、highlight clip generation,以及可供 agent client 使用的 MCP Server。這與把整段影片直接塞進聊天 prompt 不同,前者先建立可重用的影片索引,後者是單次多模態對話。
對學生 agent,第一個可靠 use case 是「影片課程檔案查找」:先把有權使用的公開或 synthetic demo 影片編入索引,再以自然語言搜尋片段,最後對特定 video id 做摘要或問答。輸出要保存 video id、命中的時間戳、搜尋 query、回答、索引版本與查核時間,否則下游 agent 只拿到一段沒有出處的自然語言。
它不是 Reka Chat 免費 token
Reka 的 FAQ 把 Reka Research、Reka Chat 與 Vision API 分開。Research 以每個 prompt 計價,Chat 依 prompt 與 completion tokens 計價,並可能另計圖片、影片與音訊;Vision 的 Developer Tier 則有影片分鐘、搜尋次數、QA output tokens 與 clip input minutes 等計價單位。本文只捕獲 Vision Free Tier,不把其他產品的價格或試用資格移植過來。
主要 agent 的 routing table 應把這個 provider 標成 video_indexing_only。需要一般文字規劃時,走既有文字模型;需要「影片中哪一段出現某物」時,才使用 Reka Vision;需要短於 30 秒的直接影片對話時,官方 QA 文件建議改用可接受多模態輸入的 Chat API。每一次 route 都要記錄燃料類型,不能以共用的 token counter 掩蓋不同成本。
官方申請與 key 邊界
官方 FAQ 指向 Reka Platform 的 API Keys 頁面建立或複製 key;這是使用者自行操作的帳戶步驟。Vision overview 說所有 Vision request 都需要在 X-Api-Key header 送出 key,API reference 也列出 Authorization Bearer 作為另一種認證形式。本文不替任何人點擊建立、不讀取瀏覽器內容、不接收貼出的 key。
主要 agent 只接受合法 owner 以 secret manager 或環境變數注入的 REKA_API_KEY。不要把 key 放進瀏覽器、前端 bundle、公開 notebook、影片 metadata、MCP 設定、Git、Issue、文章或 log。若要讓學生練習,提供 mock adapter 或受控 server-side route,不要把同一把 raw key 貼給整個班級。
function buildRekaHeaders(env) {
if (!env.REKA_API_KEY) return { error: 'KEY_NOT_INJECTED' };
return {
'X-Api-Key': env.REKA_API_KEY,
'Content-Type': 'application/json'
};
}
上段只示範 server-side header 形狀,REKA_API_KEY 是環境變數名稱,不是真實 secret。文章不執行 request;在沒有 owner 授權、付款邊界、影片權利與資料保存方案前,不能把 API key 當成可直接交給 agent 的免費燃料。
第一輪只用可刪除的影片 fixture
第一輪 canary 應選擇一段短的 synthetic 或公開授權影片,內容不要含學生臉孔、私人對話、客戶畫面、門牌、車牌、內部文件或尚未公開的產品。先記錄來源 URL、授權範圍、影片長度、檔案 hash、mime、建立時間與預定刪除日;免費不會替你取得影片的著作權,也不會自動消除個資風險。
每次 upload 以前先做本地檢查:檔案存在、長度在課程 cap 內、影片可播放、沒有敏感 metadata,並將這次索引預算扣除預估 input minutes。若影片權利、資料分類或實際長度無法讀回,狀態保持 VIDEO_RIGHTS_REVIEW,不要因免費額度即將失效就跳過審核。
function admitVideoFixture(video, budget) {
if (!video.syntheticOrLicensed) return 'RIGHTS_REVIEW';
if (video.containsPersonalData) return 'PERSONAL_DATA_STOP';
if (!Number.isFinite(video.durationMinutes)) return 'DURATION_READBACK_REQUIRED';
if (video.durationMinutes > budget.remainingMinutes) return 'FREE_MINUTE_STOP';
if (video.durationMinutes > budget.singleUploadCap) return 'LOCAL_SIZE_STOP';
return 'UPLOAD_CANARY_ALLOW';
}
Upload 與 indexing 是兩個狀態
官方文件的流程是呼叫 /v1/videos/upload,以 file 或 video URL 提交影片,並以 index=true 要求建立索引。API reference 的回應示例包含 video_id 與 status,但取得 upload response 不代表索引已完成。QA 文件要求影片成功 indexed 後才進行問答;若仍是 indexing,先等待而不是平行重送。
文件範例使用 X-Api-Key、multipart form 與 video_name。下方 shell 只是形狀示例,檔案路徑是假設值,沒有在本機執行;真正 route 仍要先確認帳戶的免費狀態、影片 input minutes、目前 rate limit 與 provider billing screen。
export REKA_API_KEY='owner-provided-placeholder'
curl -sS -X POST \
-H "X-Api-Key: ${REKA_API_KEY}" \
-F "file=@/path/to/synthetic-demo.mp4" \
-F "video_name=synthetic-demo.mp4" \
-F "index=true" \
"https://vision-agent.api.reka.ai/v1/videos/upload"
示例中的 placeholder 不是有效 key,且本文沒有呼叫 curl。若日後由 owner 授權執行,應把 response 保存為最小 metadata:video id、status、duration、input hash、free balance read-back 與 deletion deadline;不要把完整影片 payload、API header 或 presigned URL 寫進公開 log。
只把 indexed 狀態交給下游工具
索引流程至少有 upload initiated、indexing、indexed、failed 等狀態。agent adapter 不應只檢查 HTTP 200,而要輪詢或取得 video metadata,確認狀態真的為 indexed,並設定最大等待時間。逾時時保存狀態,進入人工審查;不要用重複 upload 來猜測服務是否已完成。
function acceptIndexReadback(video) {
const terminal = ['indexed', 'failed'];
if (!video.videoId) return 'VIDEO_ID_MISSING';
if (!terminal.includes(video.status)) return 'POLL_WITH_DEADLINE';
if (video.status === 'failed') return 'INDEX_FAILED_REVIEW';
if (!video.indexedAt) return 'INDEX_TIMESTAMP_MISSING';
return 'SEARCH_QA_ROUTE_ALLOW';
}
「indexed」只證明服務完成索引,不證明回答正確、不證明每個畫面都有辨識到、不證明 transcript 沒有錯,也不證明可以公開發布。學生 agent 要把時間戳和原始片段回看列為答案驗收,尤其是人物、數字、專有名詞與法律或醫療內容。
語意搜尋適合先找片段
官方 Video Search 使用 /v1/videos/search,以自然語言 query 搜尋已上傳影片;參數可以指定 max_results、threshold、video ids、group ids、時間範圍與是否產生 report。搜尋結果可能包含 score、開始與結束時間、caption、transcript、縮圖或 presigned URL,這些欄位都要視為需驗證的外部資料,不可直接當成事實。
function buildSearchRequest(query, videoIds = []) {
if (!query || query.length > 300) return { error: 'QUERY_REVIEW_REQUIRED' };
return {
query,
video_ids: videoIds,
max_results: 5,
threshold: 0.35,
generate_report: false
};
}
第一輪搜尋只允許一個 video id、最多五筆結果與固定 query,避免 agent 無限擴大 corpus。將 query、結果的時間戳、score、原文片段與查核者保存到本地課程帳本;若搜尋結果包含外部 URL,先確認 URL 的保存期限與權限,不把它當成永久下載連結。
影片 Q&A 需要 indexed video
官方 Video Q&A 文件說,影片先以 index=true 建立索引,確認 status 為 indexed 後,才用 /v1/qa/chat 對 video id 提問;它針對長於 30 秒的影片設計。短於或等於 30 秒的影片,官方建議改走 Chat API 的多模態輸入。這個門檻要寫進 agent router,不能只看檔案格式。
function buildVideoQaRequest(video) {
if (video.status !== 'indexed') return { error: 'INDEX_NOT_READY' };
if (video.durationSeconds <= 30) return { route: 'CHAT_MULTIMODAL' };
return {
route: 'REKA_VISION_QA',
body: {
video_id: video.videoId,
messages: [{
role: 'user',
content: 'Summarize the verified events and include timestamps.'
}],
stream: false
}
};
}
問答結果要保留原問題、video id、回答、是否 streaming、時間戳、使用的索引狀態與人工 verdict。不要讓回答自行觸發刪除、發佈、付款或外部訊息;影片問答是一個 read-only research tool,真正的動作仍需經過 allowlist 與人工作業。
Free Tier 與 Developer Tier 要分開
官方 pricing 的 Tier Comparison 將 Free Tier 設為 3 小時 indexed video;Developer 是 credit-based system、instant account access、small-scale projects,並依 standard rates 計價。免費額度用完後不能由 agent 自動新增 billing 或預付 credit。只要帳戶畫面出現 payment method、credit balance、insufficient balance 或升級要求,就停止並交給 owner。
官方目前列出的 Developer rates 包含 video indexing 每 input video minute 0.05 美元、video search 每次 0.005 美元、QA chat/stream/tagging 每 1M output tokens 2 美元,clip generation 另依 input video minute 計算;影片 storage 在 30 天自動刪除前不收 storage fee。這些價格是付費邊界的提示,不是學生已取得的免費 credit。
function gateRekaBilling(snapshot) {
if (snapshot.freeTier !== 'available') return 'FREE_STATUS_STOP';
if (snapshot.paymentMethodAttached) return 'PAYMENT_OWNER_REVIEW';
if (snapshot.prepaidCreditsEnabled) return 'CREDIT_OWNER_REVIEW';
if (snapshot.estimatedMinutes > snapshot.freeMinutesRemaining) return 'MINUTE_BUDGET_STOP';
return 'NO_BILLING_CANARY';
}
180 分鐘要做本地預算
課程不要直接把 180 分鐘全部交給自動 agent。先保留一部分作為重試與驗證緩衝,設定單檔上限、單日上限、總 project 上限與人工批准點。例如第一輪只取 5 分鐘 fixture,完成 upload、index、search、QA、刪除與帳本 read-back 後,才評估是否開放下一段;這能讓錯誤輸入不會吃掉整個免費池。
預算扣除應以官方 read-back 的影片分鐘為準,而不是以檔名或使用者口述估計。若服務回傳的影片長度、索引狀態、費用欄位或 free status 不完整,先記為 QUOTA_UNCERTAIN。不要為了證明 quota 還在而重複上傳同一段影片。
function reserveMinutes(ledger, video) {
if (ledger.status !== 'fresh') return 'LEDGER_REFRESH_REQUIRED';
if (video.durationMinutes <= 0) return 'DURATION_INVALID';
const remaining = ledger.freeMinutes - ledger.reservedMinutes;
if (video.durationMinutes > remaining) return 'FREE_MINUTE_STOP';
ledger.reservedMinutes += video.durationMinutes;
return { status: 'RESERVED', remaining: remaining - video.durationMinutes };
}
使用量帳本至少要有 provider、account owner、project、video id、原始 duration、估算與實際 input minutes、search request count、QA request count、output token read-back、free status、rate-limit remaining、billing status、last verified at 與 stop reason。這些欄位讓下一位維護者知道「還剩多少」是官方讀回、保守估算,還是尚未確認;沒有證據的空值不能被當成零。
若同一段影片需要反覆問答,先在本地保存經過刪除與權利審查的索引 record,重用同一個 video id,而不是每次重新 upload。重用也不代表可以無限搜尋;仍要扣 request、output token 與 project 的 local cap,並在每次回答前確認影片還在 retention window 內。
Rate limit 與免費分鐘是兩條線
Reka Vision rate-limit 文件目前把限制寫成每把 API key、每個 rolling 24-hour window 的 endpoint requests。文件列出的例子是 images upload 100、images search 100、videos upload 50、videos search 50、clips 10;這些是 request 次數,不是 180 分鐘。QA 的實際限制仍要以當日文件與 response headers 為準,不可把影片分鐘套用成 request quota。
每個 response 可以帶有 request limit、remaining、reset seconds 與 retry-after headers。adapter 要保存這些欄位,對 429 做有上限的 exponential backoff;若剩餘 request 很低,停止新工作,讓 owner 決定是否等 rolling window 重置。降低並行數只能減少撞限流,不會增加免費的 180 分鐘。
function routeRekaResponse(status, headers = {}) {
if (status === 401 || status === 403) return 'AUTH_SCOPE_STOP';
if (status === 402) return 'BILLING_HANDOFF';
if (status === 429) return {
action: 'BACKOFF_ONCE',
retryAfter: Number(headers['retry-after'] || 0)
};
if (status >= 500) return 'TRANSIENT_REVIEW';
if (status >= 400) return 'INPUT_REVIEW';
return 'READBACK_REQUIRED';
}
30 天自動刪除不等於零資料風險
Reka Vision pricing 頁目前寫明 Developer Tier 的 storage 會在 30 天後自動刪除,且不收 storage fee;圖片也有相同的自動刪除說明。這代表平台的預設保存期限,不代表你自己的下載 copy、快取、agent log、搜尋結果、縮圖、presigned URL 或備份會同步刪除。流程仍要有本地 deletion date。
最小保存策略是只留去識別化的 video id、輸入 hash、長度、索引時間、query、回答與驗證 verdict;原始影片若無課程必要,完成驗證後就刪除。若必須保存,明確列出 owner、存取名單、加密位置、到期日與刪除證據。不要把 presigned URL 直接貼到公開報告。
也要把刪除當成 pipeline 的一部分,而不是最後才想起來的清理工作。刪除前記錄 video id 與 deletion reason,刪除後再做一次 list 或 get read-back;若仍可見,標記為 RETENTION_DELETE_MISMATCH,不要直接把影片重新上傳或把舊 URL 當作已失效。
對學生課程,刪除證據與使用量帳本同樣重要,因為它能證明免費燃料沒有變成無限期資料庫。
function retentionDecision(asset) {
if (asset.containsPersonalData) return 'DELETE_OR_ESCALATE';
if (!asset.owner || !asset.deleteAt) return 'RETENTION_METADATA_MISSING';
if (Date.now() >= asset.deleteAt) return 'DELETE_NOW';
return 'RETAIN_MINIMAL_METADATA_ONLY';
}
影片權利與模型輸出要另行審查
免費方案只回答平台是否提供一段 evaluation capacity,不替你解決影片的著作權、肖像、音訊、商標、合約保密與資料保護。公開 YouTube URL 也不等於你有權下載、索引、保存 transcript 或將回答用在商業產品。學生 agent 預設只接受 synthetic、明確授權或符合課程用途的 fixture。
影片回答包含推論,不是原始證據。要發佈摘要、時間軸、人物辨識、字幕、廣告文案或研究結論以前,回看命中片段,保留來源與人工校驗。醫療、法律、金融、安全與未成年人的內容不適合用免費 evaluation route 自動作出決定。
MCP 是便利層,不是免費額度擴充
官方 Vision overview 說 Reka MCP Server 可連接 Claude Desktop、Cursor、Claude Code 與其他 MCP client,讓 agent 上傳、管理、搜尋與分析影片而不必直接呼叫 API。MCP 只是工具介面,仍會使用同一個帳戶、key、影片 quota、rate limit、retention 與 billing。不能因為改走 MCP 就繞過免費分鐘或付款停止線。
若日後接 MCP,先限制 tools:只開放 list、search、read-only QA;關閉自動 upload、delete、clip、外部發佈與任何需要付款的工具。每次工具呼叫都記錄 client、tool name、video id、estimated minutes、result status 與 owner approval,並以單一 project token 隔離學生工作。
function allowVisionTool(tool, context) {
const readOnly = ['list_videos', 'search_videos', 'qa_video'];
if (!context.ownerApproved) return 'OWNER_APPROVAL_REQUIRED';
if (!readOnly.includes(tool)) return 'TOOL_DISABLED_BY_DEFAULT';
if (context.freeMinutesRemaining <= 0) return 'FREE_MINUTE_STOP';
return 'READ_ONLY_TOOL_ALLOW';
}
不要用多帳戶延長燃料
免費 180 分鐘是帳戶與產品條件,不是鼓勵建立多個帳戶、輪換 key、共享他人 key、偽造身分或平行註冊的邀請。這些做法會破壞責任追蹤、可能違反服務條款,也讓學生無法知道真正消耗了誰的資料與費用。燃料策略應是預算、排程、快取、fixture 重用與人工審查,而不是規避限制。
共用課程帳戶時,至少分開 development 與 production、每個學生的工作目錄與 adapter、影片 allowlist、最長影片長度、每日 requests 與刪除責任。帳戶交接時撤銷不再使用的 key,更新 project manifest,並確認所有本地副本已刪除。raw secret 永遠不進學生群組。
建立 agent adapter 的最小合約
一個可審查的 Reka adapter 至少要接受 provider、product、video id、fixture hash、duration、free minutes、request headers 與 owner approval,回傳 status、timestamps、citations、retention deadline 與 stop reason。它不應讓模型自行拼接 URL、任意選取影片、任意設定 report 或自動增加搜尋結果數量。
function makeVisionRecord(input, response) {
return {
provider: 'REKA',
product: 'VISION',
videoId: response.videoId,
inputHash: input.sha256,
durationMinutes: input.durationMinutes,
responseStatus: response.status,
indexedAt: response.indexedAt || null,
deleteAt: input.deleteAt,
humanReview: 'PENDING'
};
}
這份 record 不保存 API key、不保存完整原始影片,也不把模型回答直接標為 verified。只有在影片來源、索引狀態、時間戳、回答與人工 review 都完成後,才可以交給下一個文字 agent 做摘要;下一個 agent 仍要看到來源 metadata,而不是只拿一段孤立文字。
錯誤處理要保護免費分鐘
401 或 403 先檢查 key 是否存在、scope 是否正確與 project 是否被停用;不要馬上重試。402 或 insufficient balance 代表進入 billing handoff,不能由 agent 自動加卡。429 要讀 retry-after 與 reset;5xx 只允許在 idempotency 與 side-effect 狀態清楚時做一次有限重試。輸入錯誤、影片過長或 status 不一致,應保存證據後人工修正。
upload 可能已建立 video id,即使後續 indexing 失敗。因此重試前先查詢既有 video id、確認是否需要 delete,再決定是否重新上傳。搜尋與 QA 也要以 request id、video id 與 query digest 去重;不能把每個 timeout 都當成沒有消耗。
學生課程的 canary 順序
建議第一個 canary 只做一段 1 至 5 分鐘的 synthetic video:確認 key 不外洩、upload response 有 video id、index status 最終為 indexed、search 找到預期片段、QA 回答包含可回看的 timestamp、rate headers 已入帳、帳戶未出現 billing gate,最後刪除影片或設定 30 天前的本地 deletion job。
第二輪才評估多段影片與 group;第三輪才評估 MCP 或 streaming QA。每一輪都要有固定 fixture、固定 query、最大並行數、最大 retry、預估分鐘、輸出保存期限與停止條件。只要一項證據缺失,就停在當輪,不以「看起來成功」推進到下一輪。
一個安全的影片問答流程
完整流程可以寫成:本地權利檢查 → fixture hash → 預留分鐘 → server-side upload → read-back video id → 等待 indexed → 固定 query search → 選定時間戳 → QA → 人工回看 → 保存最小 record → 排程刪除。每一步都要有成功、失敗、逾時與人工接手狀態,不能把整條 pipeline 交給單一 prompt。
function nextVisionStep(state) {
if (!state.rightsChecked) return 'CHECK_RIGHTS';
if (!state.minutesReserved) return 'RESERVE_MINUTES';
if (!state.videoId) return 'UPLOAD_AND_READBACK';
if (state.indexStatus !== 'indexed') return 'WAIT_OR_ESCALATE';
if (!state.searchRecord) return 'SEARCH_FIXED_QUERY';
if (!state.qaRecord) return 'RUN_QA_WITH_CITATIONS';
if (!state.humanReview) return 'HUMAN_REVIEW';
return 'SAVE_MINIMAL_RECORD_AND_DELETE';
}
何時不應採用 Reka Vision
如果目標是持續產生大量文字、補充聊天 token、每日重置的 completion quota,Reka Vision 不是合適候選。若資料不能離開本地、影片權利不清、需要保留超過服務預設期限、需要高量 production、需要 enterprise internal source,或不能接受 pre-pay/credit 邊界,也應選擇其他方案。
它最適合的定位是小量、可刪除、需要時間軸與影片檢索的 agent 教學。對主要 agent 來說,它可以補上文字模型看不到的影片證據,但不能取代文字模型、不能自動證明事實、不能自動取得內容權利,也不能在免費額度用完後自行做付費決策。
官方來源與查核範圍
本篇主要依據 Reka Vision API Pricing 的 Free Tier、Tier Comparison、Developer rates 與 30 天 storage 說明;以 Vision API overview 確認功能、endpoint、MCP 與認證;以 Video Management 確認 file/URL upload 與 index 流程;以 Video Search 確認自然語言搜尋與參數;以 Video Q&A 確認 indexed prerequisite 與 30 秒分界。
配額與風險另對照 Vision Rate Limits、Reka API FAQs、Upload Video API reference、Search Videos API reference 與 Chat with Video QA API reference。官方文件可能更新,使用前要在帳戶與當日文件重新確認免費狀態、限流、價格與 retention。
本篇完成閘門與下一篇
本篇完成的判定是:官方免費條件可追溯、影片分鐘與 token 單位已分開、key 與 billing 邊界已寫明、upload/index/search/QA 具備最小可讀範例、rate limit 與 retention 已列出、沒有真實 secret、沒有 live API smoke、沒有外部發布。這代表草稿完成,不代表帳戶已建立,也不代表服務目前一定對每個學生帳戶開放。
下一輪才重新尋找第 91 篇尚未重複的官方免費方案;選擇標準仍是有可驗證的免費入口、清楚的用量單位、學生 agent 的實際用途、合法 secret 邊界與可停止的付費線。若官方只剩社群轉述、優惠碼、抽獎、邀請輪換或需要規避限制,就不列入 token fuel 系列。
KEEP READING
接著讀什麼?
從同一主題繼續閱讀,或回到 YOLO LAB 的完整文章索引,找到下一個值得投入時間的問題。


發表迴響