本篇是免費 token fuel 系列第 104 篇,重新查核 Topaz Labs API 是否有學生主要 AI Agent 可以合法使用的免費 API credits。結論先講:Topaz 官方 API 定價 PDF 確實列出 Starter $0/月、一次性 100 free credits,但同一份官方文件把它標成 Coming Soon;Topaz 目前的 API EULA 又寫明 API 存取需要有效帳戶、正數 Service Credit balance 或有效 subscription plan。因此本篇分類為 CONDITIONAL_TOPAZ_API_STARTER_100_FREE_CREDITS_COMING_SOON_CONFLICT:它是值得持續重查的條件候選,不是今天可以直接宣稱「已取得免費 API token」的現成燃料。

這個分類很重要。官方價目表的 100 credits 不是 100 個 token、100 次影片生成、100 美元,也不是每月自動補充的額度;API credits 要依模型、解析度、影格插值與工作量解讀。更重要的是,Coming Soon 代表官方宣傳頁已經描述方案,但沒有證明本回合能在帳戶中取得、兌換或使用。學生 Agent 的 manifest 必須保留這個不確定性,不能把未開放方案接進自動路由。
查核日期為 2026-08-25。Topaz 的價目、API 文件、EULA、雲端 App credits、試用條件、資料處理與模型成本都可能更新。本文只做官方資料的本機整理與判讀,不註冊 Topaz 帳戶、不加入付款方式、不購買 credits、不建立或索取 API key、不送影片、不呼叫遠端 endpoint,也不把任何人的憑證交給主要 Agent。實際啟用前,必須由帳戶 owner 在官方控制面板重新讀回 Starter 是否已從 Coming Soon 變成可用。
本系列所說的「捕獲」是合法發現、保存官方證據、設置重查條件與安全地交給學生使用,不是抓取公開網頁裡的 secret、分享他人帳戶、輪換多帳號、模擬瀏覽器 cookie 或規避 rate limit。若 Topaz 最後證明只有付費 API 或桌面 App 試用,正確結果就是保留為排除或條件候選,並把任務導向本地處理或其他已確認的免費 provider。共通的 agent 使用與人工接手原則,可延伸閱讀 YOLO LAB AI agent 使用 FAQ。
本文程式碼都是離線的 evidence classifier、額度帳本、API request guard、資料政策 gate、fallback router 與重查排程示意。所有 key、account id、job id、影片內容與輸出都使用 placeholder、hash 或布林值;即使讀者複製範例,也不會自動連到 Topaz。這樣可以先讓主要 Agent 學會辨識「可以研究」與「可以執行」的差別,再由 owner 進行明確授權的人工設定。
截至 2026-08-25 的敲門模型:Video prob-4/Image Standard V2,仍不解除 Starter gate
Topaz 官方 API introduction 目前把 Proteus、Starlight、Astra 列為 Video model families;Video available models 將 Proteus 的 prob-4 標為一般影片增強的 recommended model。Image available models 則列 Standard V2 作為 general-purpose、平衡細節、銳利度與降噪的影像入口。本篇用這兩個 model id 作為當日敲門模型,方便學生先測試 modality、resolution、price 與 stop gate;它們不會把 Starter 的 Coming Soon 改成已發放 100 credits。
模型頁與 pricing PDF 必須分開保存:model 可用只表示 API 文件描述了 processing route,Starter grant 是否真的出現在帳戶仍要另做 owner read-back。若模型名稱、credit calculator、estimated cost 或 API response 與本篇快照不同,維持 MODEL_RECHECK_REQUIRED,不可猜測 alias、成本或把免費 request creation 擴大成免費 processing。
官方 Starter 訊息的正確讀法
Topaz 官方 API pricing PDF 的 Starter 區塊列出 $0/月、適合 personal projects and testing、一次性 100 free credits、每 credit $0.12 並寫著 No commitments;然而同一個 Starter 區塊的狀態是 Coming Soon。這組證據可以支持「官方曾規劃一個免費起始方案」,不能支持「現在註冊就會拿到 100 credits」。文章與 Agent 的 availability 欄位要以狀態文字為第一級閘門,而不是只讀取價格欄位。
API pricing PDF 也列出 Developer、Professional、Enterprise 等付費層級。這些付費層級可以協助我們理解產品方向,卻不能被當成學生免費額度。對燃料清單而言,Starter 的三個詞要拆開保存:price=0、freeCredits=100、availability=coming_soon。只有當三者在 live account read-back 中同時成立,而且 API processing route、期限與耗用單位也有官方證據,才可升級為可執行候選。
function classifyTopazStarter(evidence) {
if (evidence.provider !== 'topaz') return 'PROVIDER_MISMATCH';
if (evidence.freeCredits !== 100) return 'AMOUNT_REVERIFY_REQUIRED';
if (evidence.availability === 'coming_soon') return 'CONDITIONAL_COMING_SOON';
if (evidence.apiAccountReadback !== true) return 'ACCOUNT_READBACK_REQUIRED';
if (evidence.processingRoute !== 'api') return 'SURFACE_MISMATCH';
return 'MANUAL_OWNER_REVIEW';
}
100 credits 不是 100 tokens
Topaz API 是影像與影片處理服務,credits 的消耗單位不能直接套用文字模型的 input token 或 output token。官方 developer pricing 說 credits 取決於使用的 model、resolution、frame interpolation 等因素。即使 Starter 未來開放,100 credits 能處理多少秒、多少影格、多少輸出尺寸,仍要等實際 model price table 或 request response 說明;目前不應把它轉換成固定影片數,更不能估算成文字 agent 的上下文容量。
對主要 Agent 來說,Topaz 的合理定位是 media sidecar:當 agent 需要放大、去噪、影片修復或其他已授權的視覺工作時,才交給一個明確的 media job。它不是通用文字聊天 API,也不是可以替代 Gemini、Mistral 或其他文字 provider 的 token pool。fuel manifest 要把 unit=topaz_credit 與 modality=media 分開,以免 scheduler 把影片 credits 誤派給 chat worker。
function estimateMediaFuel(job, price) {
if (job.modality !== 'media') return { allowed: false, reason: 'MODALITY_MISMATCH' };
if (!Number.isFinite(price.credits)) return { allowed: false, reason: 'PRICE_UNKNOWN' };
if (job.resolution !== price.resolution) return { allowed: false, reason: 'RESOLUTION_RECHECK' };
return { allowed: true, unit: 'topaz_credit', estimatedCredits: price.credits };
}
Coming Soon 是不能跳過的停止線
當官方頁面把方案標成 Coming Soon,Agent 不應自行推測開放日期、建立多個帳戶測試、尋找未公開 endpoint,或把 checkout 畫面當成成功領取。這不是保守的文案選擇,而是可重現的 availability gate。沒有正式開放證據時,唯一安全的執行結果是 REVERIFY_LATER,而不是送出 API request。
重查也要有具體條件:官方 PDF 不再寫 Coming Soon;developer dashboard 出現 Starter 或 free credit grant;官方 API 文件說明如何建立 key、使用 credits、查 balance 與處理歸零;EULA 或 pricing 沒有互相衝突;最後用 owner 自己的測試帳戶做一個低風險 read-back。只看到社群文章、搜尋摘要或第三方教學,不足以解除停止線。
function availabilityGate(snapshot) {
if (snapshot.officialLabel === 'Coming Soon') return 'STOP_NOT_LIVE';
if (snapshot.dashboardGrant !== true) return 'NO_GRANT_READBACK';
if (snapshot.balanceEndpointDocumented !== true) return 'BALANCE_DOC_REQUIRED';
if (snapshot.termsConflict === true) return 'LEGAL_REVIEW_REQUIRED';
return 'READY_FOR_OWNER_CANARY';
}
API credits 與 Topaz App credits 要分離
Topaz 官方帳戶文件說,帳戶頁的 credits 可用於 Topaz Video 與 Astra 的 cloud rendering,credits 可能依 subscription 分配,並且可以購買額外 credits。這個帳戶頁的 App 或 cloud rendering credits,不能直接證明 Topaz developer API 的 Starter grant 已開放。兩個 surface 可能共用品牌與登入帳戶,但使用場景、單位、付款規則與 endpoint 仍必須獨立驗證。
Topaz Video 的 Cloud Rendering 說明也要求購買 cloud credits,並指出成本會依解析度、frame rate、影片長度與 model 變化;App subscription 的每月 cloud credits 會 reset 且不 roll over。這些規則是雲端 App 的成本說明,不是 API Starter 的免費 token 證據。若文章把兩種 credits 合併,學生會誤以為桌面 App 的試用額度可以呼叫 developer API,這是本篇要特別阻止的錯誤路由。
function separateTopazSurfaces(account) {
const api = account.apiCredits || { known: false };
const app = account.cloudRenderingCredits || { known: false };
if (api.ledgerId && app.ledgerId && api.ledgerId === app.ledgerId) {
return 'SHARED_LEDGER_MUST_BE_DOCUMENTED';
}
if (api.known !== true) return 'API_LEDGER_UNKNOWN';
return app.known === true ? 'SEPARATE_SURFACES_RECORD' : 'API_ONLY_RECORD';
}
API walkthrough 的免費 endpoint 不能擴大解釋
Topaz 官方 Video API walkthrough 的搜尋摘要提到某個建立 request 的 endpoint free to use 且不消耗 credits。即使這個描述在官方頁面維持不變,也只能說「建立請求這個控制面操作不計 credit」,不能推導出影片上傳、模型推理、雲端轉換或輸出下載都免費。request creation、processing、storage 與 output delivery 必須在 manifest 裡分成四個欄位。
最容易發生的誤判是把 HTTP 201 或 request id 當成已完成的免費工作。對影像 API 而言,建立 job 只是開始;真正的耗用可能在 queue worker 進行。若官方沒有同時說明 processing cost、failure refund、retention、quota 與 post-zero 行為,Agent 只能記錄 request created,不能宣稱免費成功。
function classifyTopazRequest(result) {
if (result.endpointFree !== true) return 'REQUEST_FEE_UNKNOWN';
if (result.requestCreated !== true) return 'REQUEST_NOT_CREATED';
if (result.processingCostKnown !== true) return 'PROCESSING_COST_UNKNOWN';
if (result.outputRetentionKnown !== true) return 'RETENTION_UNKNOWN';
return 'REQUEST_ONLY_FREE_PROCESSING_REQUIRES_RECHECK';
}
現行 EULA 形成正餘額衝突
Topaz 2026 年 2 月版 API EULA 將 API 描述為 usage-based service,使用者要依 usage-based fees 透過 Service Credits 支付;API access 也以 active account 加上 positive Service Credit balance 或 active subscription plan 為條件。這個條款與「Starter $0、100 free credits」的宣傳描述存在需要重查的落差。它不必然表示 Starter 永遠不會開放,也不能在條款未更新前被忽略。
因此本篇不把 Starter 判成單純的排除,也不把它判成已確認免費。最準確的說法是:官方有一個標成 Coming Soon 的免費起始方案,但目前可讀到的 API 合約要求正餘額或有效 subscription。直到這兩組官方證據被新文件、帳戶 read-back 與實際 grant 一致地解開,主要 Agent 不應取得執行權。
function resolveTermsConflict(evidence) {
const futurePlan = evidence.pricingPlan === 'starter' && evidence.availability === 'coming_soon';
const currentGate = evidence.eulaRequiresPositiveBalance === true || evidence.eulaAllowsActivePlan === true;
if (futurePlan && currentGate) return 'CONDITIONAL_CONFLICT_HOLD';
if (currentGate && evidence.grantReadback !== true) return 'PAID_OR_OWNER_REVIEW';
return 'TERMS_REVERIFY_REQUIRED';
}
Developer pricing 的付費邏輯不能當免費配額
Topaz developer pricing 目前描述以 usage 方式計價,credits 會依模型與輸出工作量變化;付費計畫的未使用 credits 有 rollover 規則,但那是 active paid plan 的條件,不是 Starter 的每月免費 reset。頁面還說如果 credits 用完,系統可能按現行單價自動 reload 一部分計畫額度。對學生 Agent 而言,任何 auto-reload 都必須預設為禁止,不能由程式代 owner 啟用。
「No commitments」也不等於「沒有付款風險」。它只可能描述某個方案的承諾方式;只要帳戶有 payment method、付費計畫、auto reload 或正餘額耗用,仍應視為 paid surface。Article 104 的 candidate ledger 要把 oneTimeFreeCredits、monthlyIncludedCredits、rollover、autoReload 與 paymentMethod 分欄,避免一句「免費」遮住付款後果。
function billingSafety(billing) {
if (billing.paymentMethodPresent === true) return 'OWNER_PAYMENT_SURFACE';
if (billing.autoReload === true) return 'AUTO_RELOAD_DISABLE_REVIEW';
if (billing.paidPlan === true) return 'PAID_PLAN_NOT_FREE_FUEL';
if (billing.oneTimeFreeCredits === true) return 'ONE_TIME_GRANT_SCOPE_ONLY';
return 'BILLING_STATE_UNKNOWN';
}
Topaz API key 的 secret 邊界
官方 walkthrough 使用 X-API-Key header 作為 API 認證示例。header 名稱是公開的整合資訊,不是可以填入的免費 key。真正的 key 應只存於 owner 控制的 server-side secret store,透過環境變數注入最小範圍 worker;不應寫入 HTML、前端 JavaScript、Git repository、文章、截圖、學生群組或模型 prompt。
主要 Agent 只需要知道「是否有 owner 授權的 key」與「這個 key 是否綁定可用的 API plan」,不需要讀取 key 原文。若查核發現 key 已出現在 log、shell history、錯誤訊息或 notebook,應先停用並由 owner 重新建立;不應把遮罩後的字串當成可以繼續使用的證據。沒有授權 key 時,文章只能提供 placeholder。
function keyBoundary(state) {
if (state.valueInArticle || state.valueInClient) return 'SECRET_EXPOSURE_STOP';
if (state.sharedWithStudents) return 'SHARED_KEY_STOP';
if (state.serverSide !== true) return 'SERVER_SIDE_REQUIRED';
if (state.ownerApproved !== true) return 'OWNER_APPROVAL_REQUIRED';
return 'KEY_METADATA_ONLY';
}
Placeholder request 的安全寫法
教學需要讓學生理解 header、endpoint 與 request body,但不能讓他們複製一段看似真實的憑證。下面的範例只顯示 request metadata,API base URL 與 key 都是明確的 placeholder;本篇驗證時也會把它視為不可執行的 fixture。真正的 endpoint、model、input type 與 output schema 仍要以 Topaz 當時的 developer docs 為準。
對影片類工作,輸入通常可能是本地檔案、預先簽名 URL 或 cloud object。未經資料 owner 同意,不應直接把私人影片上傳到第三方。學習流程先用 synthetic fixture 與本地 hash,確認 routing、budget 與 stop gate,再由 owner 決定是否進行真實 media canary。
function buildTopazRequest(meta) {
if (meta.apiKeyConfigured !== true) return { allowed: false, reason: 'NO_KEY' };
if (meta.inputRights !== true) return { allowed: false, reason: 'INPUT_RIGHTS' };
return {
allowed: true,
headers: { 'X-API-Key': '<OWNER_SECRET_FROM_SERVER>' },
body: { model: meta.model, inputHash: meta.inputHash, dryRun: true }
};
}
本地 dry-run 要先於遠端 canary
在 Starter 真正開放以前,學生 Agent 仍然可以先完成大量不耗額度的工作:解析本地 manifest、估算解析度與秒數、檢查輸入權利、建立 job id、遮罩 key、保存官方 snapshot、驗證 fallback 與產生人類可讀的 handoff。這些工作可以用 fixture 完成,無須註冊帳戶,也不會改變 Topaz 外部狀態。
dry-run 的成功只代表本地 adapter contract 成立,不代表 API key、Starter grant、processing price 或 model availability 成立。文章中的 status 必須分成 adapterReady 與 providerReady。若任何一欄是 unknown,scheduler 都應選擇 local fallback 或人工審查,而不是把 unknown 當成 true。
function dryRunTopaz(job, manifest) {
const checks = [
job.inputHash,
job.ownerApproved === true,
manifest.availability === 'live',
manifest.processingCostKnown === true
];
if (!checks[0] || checks.slice(1).includes(false)) {
return { adapterReady: true, providerReady: false, action: 'LOCAL_FIXTURE_ONLY' };
}
return { adapterReady: true, providerReady: true, action: 'OWNER_CANARY_REVIEW' };
}
影片 credits 的成本會隨工作量變化
Topaz Cloud Rendering 的官方說明列出 resolution、frame rate、video length、model 都會影響 cloud credit cost,沒有一個對所有影片固定的單價。API pricing 也把 model、resolution 與 frame interpolation 列為 credit 差異來源。這表示「一次性 100 credits」真正可支援的工作量要等 job-level quote 或官方 calculator,不能用一個影片的測試結果外推給所有學生。
安全的 media queue 應先限制短片、固定解析度、固定 frame rate、固定模型與固定輸出;任何超出基線的工作都轉人工。估算與實際扣款之間要保存差異,如果 provider 沒有提供可讀的預估或 balance endpoint,則不允許自動送出。不要用 retry、平行 job 或拆檔方式放大免費額度,因為那可能同時放大成本與服務負載。
function mediaBudgetGate(job, budget) {
if (job.durationSeconds > budget.maxSeconds) return 'DURATION_STOP';
if (job.resolution !== budget.resolution) return 'RESOLUTION_STOP';
if (job.frameRate !== budget.frameRate) return 'FRAME_RATE_STOP';
if (budget.estimatedCredits > budget.remainingCredits) return 'INSUFFICIENT_BALANCE';
return 'ONE_OWNER_CANARY';
}
失敗與退款不能預先假設
Topaz Cloud Rendering 文件說明取消、失敗與完成工作的 billing 行為,並提醒雲端輸出只保留有限時間;但 Cloud Rendering 的規則不能直接套用到 developer API。API 是否對 validation failure、queue failure、partial render、timeout 或 callback loss 退款,要由 API 文件或帳單 read-back 證明。沒有明確證據時,Agent 把每一個已建立的 processing job 視為可能耗用。
這個保守模型避免學生在失敗後無限重送。一次 canary 應先保存 request hash、model、resolution、預估 credits、實際 ledger 變化與最終狀態。若輸出未取得但 balance 已變動,停止自動 retry,交給 owner 查官方 dashboard 或 support;不要因為畫面沒有 output 就宣稱「沒有扣額度」。
function reconcileTopazJob(job, ledger) {
if (job.status === 'succeeded' && ledger.debitKnown === true) return 'RECORD_OUTPUT_AND_DEBIT';
if (job.status === 'failed' && ledger.refundKnown === true) return 'RECORD_REFUND_EVIDENCE';
if (ledger.debitKnown || ledger.refundKnown) return 'RECONCILE_MANUALLY';
return 'BILLING_READBACK_REQUIRED';
}
Cloud Rendering 的輸出保留也是資料風險
Topaz Video Cloud Rendering 文件指出 cloud output 的保留時間有限,文件目前提到最多保留 7 天,並建議及時下載。這種保留規則只表示服務如何暫存 cloud output,不等於可以把學生、客戶或未公開素材任意上傳。資料 owner 仍要確認 input、output、metadata、support log 與第三方處理者的權利與刪除方式。
學生 Agent 應預設 synthetic video、公開授權素材或已取得書面同意的 fixture。檔名不要包含姓名、學號、客戶名稱或秘密;輸出 URL 不要貼進公開 issue;job metadata 只保存不可逆 hash 與必要狀態。若資料政策未知,退回本地處理不是浪費,而是免費燃料清單應有的 privacy fallback。
function dataPolicyGate(asset) {
if (asset.ownerApproved !== true) return 'OWNER_APPROVAL_REQUIRED';
if (asset.sensitive === true) return 'SENSITIVE_ASSET_LOCAL_ONLY';
if (asset.retentionDays === undefined) return 'RETENTION_UNKNOWN';
if (asset.retentionDays > 7) return 'RETENTION_REVERIFY';
return 'SYNTHETIC_CANARY_ONLY';
}
App 免費試用不是 API 免費 credits
Topaz App 的官方入口另外描述 web trial,例如提供 50 credits 來渲染有限秒數的影片,並要求 payment method,試用結束後若沒有取消可能開始 subscription。這個條件屬於 App 或 web experience,不能當作 developer API Starter 的 100 free credits,也不能在學生課程裡淡化付款與自動續訂風險。
同一個品牌下有多個免費數字時,Agent 應要求 surface、account type、endpoint、ledger、expiry 與 payment trigger 都相同才可合併。50 App credits、100 API Starter credits、cloud subscription credits 與 paid developer credits 必須分成不同 record。這是避免搜尋摘要把不同產品拼成一個不存在的免費方案。
function surfaceMatch(record, request) {
if (record.surface !== request.surface) return 'SURFACE_MISMATCH';
if (record.endpoint !== request.endpoint) return 'ENDPOINT_MISMATCH';
if (record.ledger !== request.ledger) return 'LEDGER_MISMATCH';
if (record.paymentTrigger !== request.paymentTrigger) return 'PAYMENT_RULE_MISMATCH';
return 'SAME_PRODUCT_SURFACE';
}
學生資格不是自動取得 API grant
本次查核沒有找到 Topaz 官方文件把 Starter 100 credits 定義成學校、學生或教育方案,也沒有證據顯示只要使用學生 email 就能取得 API credits。即使未來有教育合作或邀請碼,也必須由官方指定申請入口、資格、到期日、使用範圍與資料責任;不應從網路上收集他人邀請碼或大量建立帳戶。
對課程或主要 Agent,學生身份可以影響誰負責資料、誰能持有 secret、誰能批准花費,但不等於 provider 對 API 免責。未滿法定年齡、代表學校或處理客戶資料時,要由合資格 owner 確認 terms 與監護/機構授權。沒有 owner approval 就只提供離線教學與本地 fixture。
function studentAccessGate(user, provider) {
if (provider.studentGrantDocumented !== true) return 'NO_STUDENT_GRANT_EVIDENCE';
if (user.ownerApproved !== true) return 'OWNER_APPROVAL_REQUIRED';
if (user.ageAndTermsReviewed !== true) return 'TERMS_REVIEW_REQUIRED';
return 'MANUAL_PROVIDER_FLOW_ONLY';
}
主要 Agent 的 fallback 應先設計
因為 Starter 目前是 Coming Soon,主要 Agent 不應把 Topaz 放在唯一 provider。文字任務走已確認且仍在有效期的文字 provider;影片處理先走本地工具或 owner 批准的 paid route;Topaz API 則維持 disabled candidate。這種 routing 讓新方案可以被捕獲與重查,但不會因官方頁面更新延遲而讓整個 Agent 卡住。
fallback 不應自動用另一個帳戶、另一個 key 或另一家不明服務補洞。每次退回都要記錄原因,例如 COMING_SOON、API_BALANCE_UNKNOWN、PROCESSING_COST_UNKNOWN 或 INPUT_RIGHTS_MISSING。錯誤碼是為了後續重查與人工判斷,不是讓 worker 盲目換路由。
function routeTopaz(job, manifest) {
if (manifest.availability !== 'live') return { route: 'LOCAL_MEDIA', reason: 'COMING_SOON' };
if (manifest.apiBalanceKnown !== true) return { route: 'OWNER_REVIEW', reason: 'BALANCE_UNKNOWN' };
if (job.modality !== 'media') return { route: 'TEXT_PROVIDER', reason: 'MODALITY_MISMATCH' };
return { route: 'TOPAZ_CANARY', reason: 'OWNER_APPROVED_SCOPE' };
}
免費燃料 manifest 的必要欄位
Topaz 這個候選至少要保存 provider、surface、official pricing URL、terms URL、checkedAt、availability、freeCredits、freeCreditUnit、grantType、apiAccess、processingCost、balanceEndpoint、positiveBalanceRequired、subscriptionRequired、autoReload、expiry、retention、modelScope、studentEligibility、sourceHash 與 nextReviewAt。任何未知值都用 unknown,不使用預設的 true。
manifest 也要把證據分成「官方說了什麼」與「我們尚未證明什麼」。官方 PDF 能證明 Starter 的宣傳文字;EULA 能證明目前條款的正餘額要求;帳戶 read-back 才能證明某個 owner 能否取得 grant;真實 canary 才能證明 processing route 的耗用與 output。不同證據不能互相替代。
function makeTopazManifest(input) {
return {
provider: 'topaz',
surface: 'developer-api',
availability: input.officialLabel === 'Coming Soon' ? 'coming_soon' : 'unknown',
freeCredits: input.freeCredits ?? 'unknown',
freeCreditUnit: 'topaz_credit',
apiAccess: input.apiAccountReadback === true,
positiveBalanceRequired: input.eulaRequiresPositiveBalance ?? 'unknown',
processingCost: input.processingCost ?? 'unknown',
nextReviewAt: input.nextReviewAt
};
}
來源快照與文件漂移
Topaz pricing PDF、developer pricing、API walkthrough、EULA 與 Cloud Rendering 文件分屬不同 surface,更新時間也可能不同。每次重查要保存來源 URL、讀取日期、頁面標題、關鍵句的摘要與本地 hash;不能只保存一張搜尋結果截圖。若 PDF 被替換,先把新舊 evidence 並列,再重新判斷 availability 與 terms conflict。
文件漂移尤其容易發生在 free credits 的數量、expiry、model scope、auto reload 與付款後的狀態。文章中的 100 只代表本次查核的官方 PDF 宣傳值,不是永久承諾。主要 Agent 每次啟動或至少每天讀取 manifest 的 freshness;超過有效期限就只允許 local fallback,不允許把舊 snapshot 當現行 billing truth。
function freshnessGate(record, now) {
if (!record.checkedAt || !record.nextReviewAt) return 'SNAPSHOT_INCOMPLETE';
if (Date.parse(record.nextReviewAt) <= Date.parse(now)) return 'RECHECK_BEFORE_USE';
if (!record.sourceHash) return 'SOURCE_HASH_MISSING';
return 'SNAPSHOT_FRESH_ENOUGH_FOR_REVIEW';
}
重查流程要由證據觸發
第 104 篇完成後,下一輪不是立刻把 Topaz 接上,而是等待可驗證的觸發事件:Starter card 移除 Coming Soon、developer docs 新增 grant 流程、帳戶顯示 100 credits、API balance endpoint 可讀、EULA 釐清 free grant 與正餘額的關係,或官方公告改變 pricing。沒有觸發事件時,定期 recheck 只更新 evidence,不改變 route status。
每次 recheck 要先做 read-only:打開官方來源、比對 availability、查 pricing 與 terms、確認 API surface,再決定是否需要 owner 介入。若重新查到 401、付款頁、地區限制、空白 balance、條款衝突或文件不一致,就保留 conditional,停止進一步的遠端操作。三次連續無法傳播或讀回一致時,也不應用重試掩蓋問題。
function nextReviewAction(evidence) {
if (evidence.comingSoonRemoved !== true) return 'READ_ONLY_RECHECK';
if (evidence.grantVisible !== true) return 'ACCOUNT_OWNER_READBACK';
if (evidence.termsResolved !== true) return 'LEGAL_HOLD';
if (evidence.apiBalanceReadback !== true) return 'BALANCE_READBACK';
return 'CANARY_PLAN_REVIEW';
}
可以升級為可用候選的驗收條件
Topaz Starter 要從 conditional 變成 student-agent candidate,至少需要六項新證據:第一,官方 Starter 不再是 Coming Soon;第二,owner 的 API dashboard 實際顯示 grant;第三,官方文件說清楚 100 credits 的單位、期限、模型或工作量範圍;第四,EULA、pricing 與 account read-back 沒有正餘額矛盾;第五,processing、失敗、退款、輸出保留與 post-zero 行為可讀;第六,資料 owner 完成輸入與商用權利審查。
即使六項成立,也先做一次小型、可回復、owner 批准的 media canary。canary 只用合成短片,限制解析度與秒數,保存 debit、output、retention 與 request status。成功只能證明那個 owner、那個 model、那個時間點可以使用,不代表所有學生、所有地區、所有模型都得到同樣額度。完成後再決定是否納入主要 Agent 的 sidecar。
function promoteCandidate(e) {
const required = [
e.livePlan,
e.grantReadback,
e.unitDocumented,
e.termsResolved,
e.billingReadback,
e.dataReview
];
if (required.includes(false)) return 'KEEP_CONDITIONAL';
if (required.includes(undefined)) return 'EVIDENCE_INCOMPLETE';
return e.canaryPassed === true ? 'SIDE_CAR_CANDIDATE' : 'CANARY_REQUIRED';
}
本篇對學生 Agent 的實際結論
現在可以交給學生的不是 Topaz API key,而是一份清楚的判斷:官方有一個 Starter $0、一次性 100 credits 的規劃訊息,但狀態仍是 Coming Soon;現行 API EULA 又要求正餘額或有效方案;App cloud credits 與 developer API credits 不可混用。因此 Topaz 暫時不能列入「已確認、現在可拿、無需付款的 API token」清單。
學生現在可做的工作包括閱讀官方證據、建立 manifest、跑本地 dry-run、檢查資料權利、測試 budget gate、驗證 fallback 與練習 secret hygiene。學生不可做的工作包括尋找隱藏 endpoint、嘗試繞過 Coming Soon、建立多帳戶、索取別人的 key、用 payment method 試探免費額度,或把 App 試用轉成 API 服務。
function studentTopazStatus(manifest) {
if (manifest.availability === 'coming_soon') return 'RESEARCH_ONLY';
if (manifest.apiAccess !== true) return 'NO_API_ACCESS';
if (manifest.freeCredits !== 100) return 'AMOUNT_REVERIFY';
if (manifest.ownerApproved !== true) return 'OWNER_HANDOFF';
return 'CONTROLLED_MEDIA_SIDECAR';
}
文章來源與可重查證據
本篇核心證據是 Topaz 官方 API pricing PDF:Starter 區塊列出 $0/月、一次性 100 free credits、$0.12/credit,但標為 Coming Soon。API 使用面再對照 API introduction、Image available models、Video available models、Topaz developer pricing、Video API walkthrough 與 2026 年 2 月 EULA。
surface 分離則對照 官方帳戶與 products page 說明、Topaz Video Cloud Rendering 與 官方 App trial 入口。這些頁面用來證明 App、cloud rendering 與 developer API 不能只因品牌相同就合併;正式使用前仍需再次讀取最新文件。
本篇最終狀態為條件候選,不是免費 API 已開通的宣告。下一篇會重新搜尋另一個官方 provider 或明確免費方案;完成一篇的來源、範圍、secret 與 billing read-back 後,才把下一篇由候選提升為研究中。
KEEP READING
接著讀什麼?
從同一主題繼續閱讀,或回到 YOLO LAB 的完整文章索引,找到下一個值得投入時間的問題。


發表迴響