首頁 > 科技與 AI > DeepL API Free 500,000 characters 怎麼用?quality optimized 學生 Agent 導流

延伸主題

DeepL API Free 500,000 characters 怎麼用?quality optimized 學生 Agent 導流

整理 DeepL API Free 500,000/Develope...

DeepL API Free 每月五十萬 characters、quality optimized、billed characters、quota recheck 與學生翻譯 Agent 的 YOLO LAB 原創封面

DeepL API Free 是一個適合多語內容 agent 的翻譯 API 候選。DeepL 官方 usage limits 文件目前列 API Free 每月 500,000 characters;官方 Help Center 也寫明 API Free 可每月免費翻譯最多 500,000 字元。另一方面,DeepL 當日 signup 頁的 Developer 方案又顯示「1 million characters for free」。這是兩個官方入口的額度差異,本篇把它列為 hard read-back gate,不把 500,000 或 1,000,000 寫成未驗證的永久承諾。

DeepL API Free 每月五十萬 characters、quality optimized、billed characters、quota recheck 與學生翻譯 Agent 的 YOLO LAB 原創封面
YOLO LAB 原創編輯封面:以 DeepL API Free 500K characters、quality_optimized、billed characters 與 quota recheck 呈現學生翻譯 Agent 入口;非 DeepL 官方宣傳圖。

本篇的放行結論是:學生可以用本人 DeepL API Free 或符合當日資格的 Developer 帳戶,先做短文字翻譯 canary,再由帳戶 read-back 確認實際 character_limit、plan、endpoint 和資料條款。這是翻譯字元額度,不是免費 LLM token,也不會替主要 agent 提供通用聊天推理、STT 或 DeepL Write。預設只送公開、合成或已授權的短文字,不送秘密、個資、未公開作業或公司內容。

本系列只整理合法公開的免費 API 方案,不代註冊、不索取或分享他人的 API key、不使用網頁翻譯器內部 API、不用多帳戶規避額度,也不在免費額度用完後自動升級。若要先看主要 agent 的安全、來源和 token 邊界,可延伸閱讀 AI agent 使用 FAQ

當日敲門模型:quality_optimized(短文字 Translate)

DeepL 不是通用聊天模型;今天的敲門設定是 Free API 的短文字 Translate,明確把 model_type 設為 quality_optimized。官方 Translate 文件目前列出 quality_optimizedprefer_quality_optimizedlatency_optimized 三種選項,因此先以品質優先做一個固定 source/target language 的 synthetic canary,再把 billed_charactersmodel_type_used 和 usage read-back 寫入不含秘密的 ledger。

這個敲門設定只代表翻譯 endpoint 的模型選項,不代表已取得 500,000 或 1,000,000 characters,也不代表翻譯品質可以取代人工校對。額度差異、Free/Developer plan、付款資料與 API 條款仍以本人帳戶當日讀回為準;在差異消失前不批准批量文件翻譯。

先釐清 500,000 與 1,000,000 的官方差異

DeepL developers 文件的 Usage and limits 目前列 DeepL API Free character count 為每月 500,000 characters,Help Center 的 API plans 與 usage billing 頁也沿用 500,000。這個數字是來源文字的 Unicode code points,不是 UTF-8 bytes;例如英文字母、希臘字母、日文或中文字各按一個 code point 計算。空白、tab、換行也可能計入,不能用可見字數粗略代替。

DeepL signup 頁目前對 Developer 方案顯示免費翻譯 1 million characters,Help Center 另說 Developer 方案是一次性 1,000,000 characters、達到後不 reset;同一組官方文件又把 API Free 寫成每月 500,000。它可能代表不同新舊 plan、入口或合約狀態,不能自行合併。學生建立帳戶時要讀回 plan label、character_limit、reset period、upgrade path 和是否需要付款資料,若讀回不一致就標記 DEEPL_QUOTA_REVERIFY_REQUIRED

文章因此採保守策略:在沒有帳戶 read-back 前,預算按較小的 500,000 characters 甚至更小的課堂 reserve;不以 signup banner 的 1 million 擴大 agent 任務。實際額度、是否月度重設、是否一次性、是否可轉換到 Pro/Growth,應以當日帳戶、適用訂閱和官方條款為準。若服務後續更新,系列索引要重做來源查核。

DeepL API Free 的額度是整個 Free API subscription 的 character pool,不是每個 target language、每個 API key 或每位學生各有一份。一次請求可以帶多個 text,但總 request size 和 header 仍有限制;多個 notebook、網站和 agent 共用同一帳戶時,任何一個都可能消耗共同額度。主要 agent 要使用單一明確 task budget,而不是把所有工作丟進共享池。

Free API endpoint 與 API key

DeepL 官方 authentication 文件目前明確區分 Free API 和 Pro API endpoint:Free 使用 https://api-free.deepl.com,Pro 使用 https://api.deepl.com。Free API key 通常可由尾端 :fx 辨識,但這個 suffix 只是一個辨識線索,不是把字串分享出去的理由。認證 header 是 Authorization: DeepL-Auth-Key [yourAuthKey]

DeepL API key 必須放在 server-side secret store 或環境變數,不放前端、公開 repo、網址 query、翻譯文字或模型 prompt。官方文件說 key 外洩時要在 API Keys 頁 deactivate,再建立新的 key。key rotation 是安全恢復,不是取得第二份免費額度的技巧;不能用輪換 key、不同 IP 或多帳戶增加 character_limit。

DeepL Free API 與 DeepL 網頁 Translator Free 是不同產品。官方 Free Services 條款禁止未經書面許可使用網頁內部 API;學生只能使用官方 API 入口與文件,不要模擬瀏覽器、抓取登入頁或把網頁 cookie 當成 API token。API quickstart 也提醒 Free plan 的 HTTP 請求要把 base URL 換成 api-free.deepl.com

function assertDeepLFreeState(state, now = Date.now()) {
  if (!['api-free', 'developer-readback'].includes(state.planKind)) {
    throw new Error('DeepL free API plan is not verified');
  }
  if (state.proUpgradePending === true || state.paygEnabled === true) {
    throw new Error('DeepL paid upgrade is not approved');
  }
  if (!Number.isFinite(state.charactersRemaining) ||
      state.charactersRemaining <= state.reserveCharacters) {
    throw new Error('DeepL character reserve is too low');
  }
  if (state.endpoint !== 'https://api-free.deepl.com') {
    throw new Error('DeepL endpoint is outside the free allowlist');
  }
  if (state.checkedAt + state.maxReadbackAgeMs < now) {
    throw new Error('DeepL usage read-back is stale');
  }
}

這些欄位是本地 agent policy,不是 DeepL 固定 response schema。planKindcharactersRemainingproUpgradePendingpaygEnabled 都要由帳戶持有人從官方帳戶、usage endpoint 和訂閱頁讀回。Free 與 Developer 的官方文件目前有額度差異,因此只要 plan、limit 或 reset period 不能對齊,就先停止翻譯。

Usage endpoint 的當日 read-back

DeepL 官方 Check Usage and Limits API 目前提供 GET /v2/usage,回應包含 character_countcharacter_limit。文件範例的 host 偏向 Pro endpoint,因此 Free 請求要使用 https://api-free.deepl.com/v2/usage,並用 DeepL-Auth-Key 認證。範例裡的 1,250,000 或其他數字不是本帳戶資料,不能複製當成免費額度。

async function readDeepLUsage() {
  const key = process.env.DEEPL_API_KEY;
  if (!key) throw new Error('DeepL API key is missing');

  const response = await fetch('https://api-free.deepl.com/v2/usage', {
    headers: { Authorization: `DeepL-Auth-Key ${key}` }
  });
  const data = await response.json().catch(() => ({}));
  if (!response.ok) {
    throw Object.assign(new Error(`DeepL HTTP ${response.status}`), {
      status: response.status,
      data
    });
  }
  return {
    charactersUsed: Number(data.character_count),
    charactersLimit: Number(data.character_limit),
    charactersRemaining: Number(data.character_limit) -
      Number(data.character_count),
    checkedAt: new Date().toISOString()
  };
}

這段示意沒有真實 key,本工作區沒有呼叫 DeepL usage endpoint,也沒有註冊或建立 API account。成功讀回後,應只保存 plan kind、使用量、limit、reset/billing period、查核日期和 policy 結果,不保存完整 response、帳戶 email、付款資料或 API key。若 character_limit 與官方文件不一致,保留差異並停止新任務。

Translate text 的最小請求

DeepL 官方 Translate Text endpoint 是 POST /v2/translate,body 至少提供 text 陣列和 target_lang。Free API 的 base URL 是 https://api-free.deepl.com/v2/translate;不能用舊式 GET query string,也不能把 API key 放進 URL。第一次 canary 應使用一小段 synthetic text、固定 source/target language 和 show_billed_characters=true,讓回應提供 billed characters。

async function translateDeepL(text, targetLang, state) {
  assertDeepLFreeState(state);
  const key = process.env.DEEPL_API_KEY;
  if (!key) throw new Error('DeepL API key is missing');

  const response = await fetch(
    'https://api-free.deepl.com/v2/translate',
    {
      method: 'POST',
      headers: {
        Authorization: `DeepL-Auth-Key ${key}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        text: [String(text)],
        target_lang: String(targetLang),
        model_type: 'quality_optimized',
        show_billed_characters: true
      })
    }
  );
  const data = await response.json().catch(() => ({}));
  if (!response.ok) {
    throw Object.assign(new Error(`DeepL HTTP ${response.status}`), {
      status: response.status,
      data
    });
  }
  return data;
}

回應中的 billed_characters 是成本帳本的重要 read-back,但不是翻譯品質證明。DeepL 會回傳 detected source language、translated text 和 model type;學生仍要人工核對專有名詞、數字、否定、標點、HTML tag、語氣和格式。翻譯結果不能直接觸發付款、法律通知、醫療決定、公開發布或高權限工具。

每一個 text item 都獨立翻譯,不會和同一請求的其他 item 共用上下文。若需要上下文,可以使用官方 context 欄位,但 context 的內容仍須經過資料政策和長度檢查。不要把整份秘密文件、帳戶設定、隱藏提示或內部 prompt 塞進 context,再假設它不會影響資料處理。

字元計量、request limit 與 document 邊界

官方 usage limits 文件目前列 header size limit 16 KiB、total request size 128 KiB;API Free 的文字和各種文件格式也有每檔大小與 500,000-character 相關限制。HTML/XML tag 是否計費會受 tag_handling 影響,不能用 JavaScript 的 string.length 直接當成 provider 計量。agent 送出前要做 Unicode code point 計數與 request size 檢查,回應後再以 billed characters 校正。

Free API 目前不包含 DeepL Write 或 speech-to-text translation;若要做文件翻譯,也要另查每種格式的上傳限制、非同步 status、下載時間和資料保留。學生第一版只允許 text endpoint,避免把免費文字字元額度誤套到音訊、文件或下一代模型。若官方帳戶顯示不同 feature,先把它當作新 plan 的 read-back,而不是文章的預設權限。

翻譯長文時要自行切段,但切段不代表成本免費。每一段的 Unicode 字元都會計入,共用 glossary、context、重試和人工修訂也可能增加資料處理範圍。切段策略要保存原文段落 ID、順序、hash 和 target language;若中途失敗,先停止整批,不從第一段盲目重送到最後。

456 quota、429 與付費升級停止流程

DeepL 官方 error handling 文件目前把 HTTP 429 定義為 too many requests,建議等待後以 exponential backoff 重試;HTTP 456 是 quota exceeded,Free API user 在月度 500,000-character limit 到達時會看到這個錯誤。456 不是普通 transient error,agent 必須停止,重新讀回 usage 和 plan,不得自動升級 Pro、改用另一個帳戶或輪換 key。

  • 401/403:檢查 Free endpoint、Authorization header、key scope、帳戶和 host;不把 key 寫入 log。
  • 429:有限 exponential backoff,限制 retry 次數和總時間;不提高平行請求。
  • 456:標記 DEEPL_FREE_CHARACTERS_EXHAUSTED,停止並等 reset 或人工決策。
  • 413/414 或大小錯誤:在本地縮短、切段或拒絕,不重送同一份大檔案猜測原因。
  • 未知錯誤:保存 status、request time、非敏感 body code 和 task ID,先由人工確認是否扣點。
function classifyDeepLFailure(error) {
  const status = Number(error?.status);
  if (status === 401 || status === 403) {
    return { action: 'STOP_REVIEW_DEEPL_KEY_OR_ENDPOINT', retry: false };
  }
  if (status === 429) {
    return { action: 'LIMITED_BACKOFF_OR_HUMAN_REVIEW', retry: true };
  }
  if (status === 456) {
    return { action: 'STOP_DEEPL_FREE_QUOTA_EXHAUSTED', retry: false };
  }
  if (status === 413 || status === 414) {
    return { action: 'STOP_REDUCE_REQUEST_SIZE_LOCALLY', retry: false };
  }
  return { action: 'STOP_UNKNOWN_DEEPL_FAILURE', retry: false };
}

翻譯工具的 retry 還要防止結果重複。若 timeout 發生在 provider 已接受請求之後,重新送出可能重複扣除字元;先保存 request time、client task ID 和本地 input hash,重新讀回 usage,再決定是否重試。不要把 HTTP 429 的 backoff 原則套到 456,也不要把任何 4xx 都當成可以換 key 解決。

資料隱私、Free API 儲存與翻譯授權

DeepL Privacy Policy 的 API Free 段落目前說,使用 API Free 需要建立 DeepL account;即使沒有 API 使用費,也可能收集 payment data 來防止濫用,並交給 Stripe 等支付服務商處理。這表示「免費」不等於「不需要帳戶資料」或「沒有外部資料處理」。學生註冊前要由本人閱讀當日隱私政策和學校規則。

DeepL Pro License Terms 的 API Developer 段落目前保留 DeepL 可能永久儲存 Content 或 Processed Content 的權利,且 Free API 不能當成 Pro 的即時刪除或最高資料安全方案。這是本篇最重要的資料 gate:不把密碼、API key、個資、客戶文件、未公開研究、公司程式碼或受保密協議保護的內容送進 Free API。

DeepL Free Services Terms 也說,網頁 Free Services 的內容可能在有限期間用於訓練和改善神經網路,並禁止把內部 API 當成公開介面。即使 API Free 與網頁 Free 是不同產品,學生仍應把翻譯文字當成可能被 provider 處理的外部資料,遵循適用的 API Terms、Privacy、DPA 和學校資料規則,不用模糊的「只是翻譯」降低風險。

翻譯輸出也要保留原文與目標語言的來源關係。不能把 DeepL output 當作人工翻譯、法律認證或事實查核,也不能隱藏機器翻譯痕跡後直接交付高風險用途。若輸出要進入文章、產品、字幕或課程教材,先做人審、專有名詞核對、引用和授權確認,並在內部 ledger 標示 provider 與查核日期。

學生 agent 的最小驗收

  1. 由本人閱讀當日 DeepL authentication、quickstart、usage limits、usage endpoint、translation、errors、API plans、Privacy 和適用 Terms。
  2. 確認帳戶是 API Free 或當日可核對的 Developer plan,讀回實際 character_limit、reset/一次性週期、endpoint、payment data、upgrade path 和 feature scope。
  3. 建立本人 API key,保存於 server-side secret store;只批准 `api-free.deepl.com`、短文字、固定 target language、低字元 reserve 和人工停止,不放前端、不分享、不使用網頁 cookie。
  4. 用合成短句做一次 POST `/v2/translate` canary,要求 billed characters,回讀 `/v2/usage`,人工檢查翻譯品質和專有名詞。
  5. 遇到 429 做有限 backoff;遇到 456、plan 差異、資料政策不明、key 失效或超過 request size 就停止,不自動付費、升級、換帳戶或輪換 key 擴大額度。
  6. 課程結束撤銷 key、刪除暫存原文與輸出,保留不含秘密和敏感內容的 task summary、billed character、查核日期與來源。

本篇截至 2026-08-25 完成官方文件重新查核與本機草稿驗收,沒有進行 DeepL API 註冊、付款資料提交、建立 key、usage read-back、live translation、文件上傳、Pro/Growth upgrade 或外部資料傳送。工作區沒有授權 DeepL API 帳戶,因此不代收、不建立、不分享任何 token、key 或登入資料。

本篇的學生 agent 決策

DeepL API Free 可以列入「翻譯字元 credits」候選:官方 developers/Help Center 目前明確寫 500,000 characters per month,Free API 有獨立 endpoint 和 456 quota error;但 signup/Developer 入口同時出現 1,000,000 free characters 的官方差異,因此尚未批准為固定長期燃料。真正批准前必須以帳戶的 plan、character_limit、reset period 和條款 read-back 為準。

對主要 agent 最有價值的用途,是把已核准的公開內容翻成目標語言,再交給人工或另一個批准模型做編輯;不是把機密文件、完整知識庫或高風險決策內容全部上傳。翻譯字元、主要 LLM tokens、來源、隱私、著作權與人工校對各自記帳、各自停止,才能讓學生分辨「免費 API」和「免費推理燃料」的差異。

如果日後官方額度、plan 名稱、資料保存或 endpoint 改變,這篇文章應先標成 REVERIFY_REQUIRED,再重新做來源與帳戶查核。不能沿用舊 key、舊 quota 或舊 terms,也不能從 signup banner、社群文章或網頁 Translator 的免費方案推論 API Free 的現況。

在主要 agent 中,翻譯工具的輸入最好不是任意字串,而是一個帶有來源、語言、用途、最大字元數和資料分類的 task。工具先檢查 target language 是否在 allowlist、文字是否超過單次上限、是否含有明顯 secret 或個資,再做 Unicode code point 計數。任何一個檢查失敗,都回傳需要人工審查,而不是直接把文字送到外部 API。

如果來源是 HTML,只有在確定 markup 需要保留時才開啟 tag_handling=html。學生要先檢查連結、script、style、data attributes 和隱藏提示,避免把不應翻譯的內容混在可見文字中。翻譯完成後用 HTML parser 檢查 tag 是否成對、連結是否被改寫、腳本是否被注入;不要用字串取代就直接發布。

術語一致性可用 glossary,但 glossary 也是外部資料和帳戶資產。不要把公司內部產品名、未公開代號、客戶姓名或保密詞彙放進免費帳戶 glossary。先用公開品牌、虛構名詞和人工建立的短詞表示範,並記錄 source language、target language、版本和刪除時間。免費翻譯不會自動授予詞庫的公開或商業權利。

翻譯長文章時,agent 可能為了保持上下文而重複送出前幾段。這會重複消耗 characters,也會把更多原文送到 provider。更安全的做法是本地保存段落 hash、只在必要時提供短 context,並在每段成功後更新 ledger。若模型要求把完整文件重送,工具要先估算新增成本並要求人工確認。

翻譯品質驗收要針對用途設計。一般閱讀可以看語意、流暢度和格式;搜尋摘要要看關鍵詞、實體和數字;產品介面要看字串長度、變數佔位符和按鈕狀態;法律或醫療內容則不應只靠免費機器翻譯。每個 output 都標示 machine translated、人工修訂與正式核准狀態,避免下游 agent 以為已完成專業校閱。

對中文、日文和韓文內容,Unicode code point 的計數與實際 tokenization 不同。DeepL 的免費額度按 characters,主要 LLM 仍按自己的 input/output tokens;同一份內容同時經過 DeepL 和 LLM 時,要保存兩套 cost center。不能用 LLM tokenizer 估算 DeepL character_limit,也不能用 DeepL billed characters 推估下游模型的 token cost。

若 agent 先做語言偵測再翻譯,語言偵測結果也可能錯,尤其是短字串、混合語言、專有名詞和程式碼。課堂可要求使用者明確提供 source language,或在短句時先回報 detected language 供人工確認。不要讓模型因為偵測不確定就自動嘗試多個 target language,這會快速消耗免費字元。

重試策略要有 idempotency 的概念。DeepL 翻譯請求本身不應由前端無限重送;後端先為原文與參數建立 task hash,對 timeout 保留 pending 狀態,讀回 usage 後才決定一次有限重試。若結果已存在就回讀結果,不要再次翻譯。這能降低重複扣點,也避免同一內容在不同時間得到難以比較的版本。

課程若要讓多位學生練習,最安全的是每人使用自己的 API account 和自己的 key,或由管理者建立明確隔離的工作區與低額度 key。不要把一支免費 key 貼在群組聊天或公共環境變數裡。共享 key 不只會造成額度爭議,也會讓外洩後無法判斷是哪個 task、哪個人或哪個 notebook 消耗了字符。

若帳戶需要 payment data 來防止 API Free 濫用,學生要先理解這是帳戶持有人的資料和外部決策,不是 agent 可以代替的註冊步驟。本文不輸入付款資料、不啟用升級、不接受 provider 條款、不代替使用者確認年齡或所在地。完成文章只表示官方研究和本機草稿完成,不能推定任何帳戶已經取得免費資格。

把 DeepL 接到主要 agent 前,先用 stub provider 測試本地 policy:超過 reserve 會拒絕、出現 456 會停止、429 只有限 backoff、外部文字會被標記為不可信、成功結果會進入人工審查。等本地狀態機通過,再由帳戶持有人做一次最小 live canary。這樣即使免費 API 當日無法使用,學生仍能驗證 agent 的安全邏輯。

交接文件只需保留 provider、Free/Developer plan 的查核日期、官方 endpoint、usage read-back 欄位、停止錯誤碼和資料政策摘要。不要把真正的 key、帳號 email、付款資訊、原文或翻譯輸出一起交接。下一位學生應從自己的帳戶重新確認 plan 與 quota,不能因為前一位的 500,000 或 1 million banner 就直接開始批量翻譯。

這些限制讓 DeepL 更適合當作一個清楚的翻譯 adapter,而不是模糊的「免費 AI」按鈕。adapter 的輸入是小型、已授權的文字;輸出帶有 billed characters、target language 和 provider version;錯誤通往停止或人工接手;下游模型另有自己的 token budget。學生能看清這條資料與成本鏈,才真正學會如何管理 token fuel。

若翻譯結果要回到文章或教材,最後還要做人工語言校對、引用與版權檢查。DeepL 的回應只證明 API 成功,不證明語意完全正確、額度仍然可用或輸出可以公開。把 provider、模型、查核日期、原文版本和人工決定一起保存,才能在日後重新翻譯或撤回內容時找到責任邊界。

只要額度版本、資料政策或輸出用途有疑問,就保持停止狀態,等本人重新確認,而不是先翻譯再補文件。

這是免費 API 文章的基本停損線,也是學生 agent 必須學會的憑證與資料責任。

DeepL 官方查核入口

下一篇會重新查找另一個官方免費 API 候選;DeepL 的免費翻譯 characters 不會被延伸成文字 LLM token,也不會因為文章完成就自動註冊、付款或上傳任何內容。

作者與編輯責任

本文署名作者:

|YOLO LAB 主編

YOLO LAB 的文章由署名作者或編輯團隊完成。主編 Dex 負責編輯制度、重要事實查核原則、AI 協作規範與重大更正;文章中的分析與判斷以公開來源、作品內容及可驗證資料為依據。

文章若有需要補充或修正的資料,可透過聯絡頁提供原始來源、日期與具體段落,編輯團隊會依出版政策檢查。

KEEP READING

接著讀什麼?

從同一主題繼續閱讀,或回到 YOLO LAB 的完整文章索引,找到下一個值得投入時間的問題。

發表迴響

探索更多來自 YOLO LAB 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

繼續閱讀