交易所整合 · API 遷移

Bitget UTA v3 API 遷移 —
你的 webhook 為什麼會突然 401

2026-07-31·10 分鐘閱讀

alert 在 K 棒上準時觸發,webhook 也送出去了。你去看交易所回的 log,看到的是 HTTP 401 或一句「API-key format invalid」。你檢查 key,還沒到期;檢查 IP 白名單,沒有動過。這件事最近在 Bitget 上特別容易發生——它把 API 換成了 UTA v3 這套新架構,你的 webhook 現在打在錯的門上。

這篇文章不談「UTA 有多好」或者「值不值得升級」,這種事你自己看官方文件比較準。這篇只回答一件事:**你的 webhook 為什麼會安靜地開始 401,以及在你被動遷移之前,你手上有哪些選項。**

先講結論
帳戶切到 UTA 之後,還指向 Classic (v2) endpoint 的 webhook 會被拒。Bitget 官方 Broker UTA Upgrade Notice 明講「API Keys for UTA Unified Trading Accounts cannot access Classic Account API endpoints」(來源:bitget.com/support/articles/12560603886018,查證日期 2026 年 7 月)。所以帳戶模式一被切到 UTA,只要你的下單伺服器還打在舊的 endpoint 上,就會開始集體斷線。

這件事實際上發生了什麼

Bitget 現在的 API 文件分成兩套,網址前綴也不同:Classic 走 /api-doc/classic/*,UTA 走 /api-doc/uta/*。Classic 那頁自己第一句就寫「We recommend using the Unified Trading Account (UTA)——it consolidates spot, margin, and derivatives into a single account」,並註明 Classic 處於 maintenance mode、只收「essential updates」(查證日期 2026 年 7 月)。

換句話說,官方對這件事的敘述不是「兩套並存」,是「你應該搬過去」。UTA 的 changelog 這幾個月都在補功能——2026-06-16 補齊了 Trading Data APIs、2026-07-30 上線了 institutional rate limit——同一時間 Classic 的變動紀錄幾乎停了。這是「新的主線」跟「舊的維持」該有的樣子。

官方文件講到哪裡為止
上面那個「切帳戶 = 換 endpoint」的因果是官方文件裡明講的:Classic 與 UTA 是兩套不同的 API,key 綁到哪一套是由帳戶模式決定的。至於「你自己什麼時候會被強制切」,Bitget 目前沒有公開一份對散戶的統一時程——現在的公告集中在 broker 與機構層級。這件事下面會單獨拉出來講。

為什麼 webhook 會「安靜地」壞掉

自動化交易架構最麻煩的錯,是那種沒有提示、只是不再成功的錯。API 遷移是這一類的教科書案例。

平常你檢查交易所的 API 健康度是看兩個東西:連線通不通、成交回報正不正常。遷移那一刻,這兩個檢查都會過——你的 webhook 伺服器連得上 Bitget,只是每次下單都被回 401;TradingView 端顯示 alert 送出成功,因為對 TradingView 來說「HTTP 200 才算成功」,401 也算「送到了」。真正沒發生的事——訂單根本沒進交易所——在你自己的 log 之外看不到。

監控項目遷移前遷移當下
TradingView alert 觸發正常正常
webhook HTTP 回應200401
交易所訂單簿有沒有你的單沒有
帳戶餘額變動沒有
交易所送不送 email/App 推播看設定看設定,通常不會

遷移當下你能看到的與看不到的訊號對照。查證日期 2026 年 7 月。

換句話說,你會在下一次自己盯盤或看報表的時候才發現,這中間可能已經過了幾個小時或幾天。所以這篇不是要嚇你,是要你今天就把「怎麼知道自己被遷了」這件事的訊號建起來。

你怎麼知道自己現在是哪一邊?

三個地方看,任何一個對得上就是那一邊。

  • 用你手上的 ACCESS-KEY 打一次 UTA 的 /api/v3/account/assets(或任何 UTA endpoint)。回 200 就代表你的帳戶已經是 UTA 模式;收到 401 或「API-key format invalid」就代表這把 key 還不能打 UTA endpoint。
  • 登入網頁版,看帳戶頁面上方是「統一交易帳戶/Unified Trading Account」還是「經典交易帳戶/Classic」。Bitget 現在會用醒目的 badge 標出來。
  • 去 API management 頁面看你這把 key 當時勾的權限選項——UTA 的權限名稱是 Unified account trade / Unified account management(各有 read-only 與 read and write 兩檔),Classic 帳戶模式下沒有這兩個選項。
順便做一件小事
在你的下單伺服器把 401 的錯誤訊息**單獨接一條告警**出來,不要跟其他 4xx 混在一起。這件事一次做完就永遠受益:不只 Bitget 的遷移會噴 401,其他交易所改權限規則、你自己不小心撤掉 key、CDN 阻擋、時區偏移把 timestamp 過期——全都是 401,全都值得馬上知道。

你可以自己決定什麼時候換嗎

到 2026 年 7 月為止,Bitget 對散戶的說法是「推薦」升級,而不是「強制」——網頁版的入口是自己按「升級」按鈕。這是目前觀察到的現狀,不代表官方承諾永遠都會這樣。歷史上大交易所改帳戶結構時,通常會先給人自願期,之後才排強制批次,然後把 Classic 完全下線。Bitget 的 changelog 節奏跟這個劇本吻合。

Broker 與機構的時程比較明確:Broker UTA Upgrade Notice 有寫遷移排程與 UTA API key 不能打 Classic endpoint 的行為變更。散戶如果掛在某個 broker 帳戶或機構帳戶下面,是有可能被上游決定的。

1
你的 Bitget 帳戶是散戶自己開的,還是掛在 broker/機構底下?
散戶自己開目前可以自己選時間點升級。建議先在測試 subaccount 上跑一輪 UTA,再切主帳戶。
掛在 broker/機構底下問你的 broker 排程是什麼、他們會不會幫你保留 Classic key。這件事不是你單方面能決定的。
2
你現在有幾條策略正在 live trading?
0—1 條直接切。斷線影響小,UTA 端修好比較快。
3 條以上,或有高頻策略先做並行測試:新開一把 UTA key、開一個 subaccount 用 UTA 模式跑影子單,跟 Classic 主帳戶跑一週對得起來再切。

換過去之前這些事要先做

順序有意義,這是實際踩到的先後:

  1. 1
    在 subaccount 上先試一次
    Bitget 的主帳戶可以幫 subaccount 開 API Key Management 權限(預設是關的)。用一個小額 subaccount 切到 UTA、開一把 UTA key、把你其中一條 webhook 指過去跑一天,比在主帳戶上直接切安全得多。
  2. 2
    把 endpoint、簽名邏輯、參數名稱都對過一遍
    UTA 跟 Classic 的請求路徑不同,query/body 的欄位名也有一些不一樣(例如下單 body 裡 size 改名成 qty)。你的下單函式如果是「直接複製官方範例」寫成的,換 endpoint 那一刻多半要改超過一行。
  3. 3
    先開 UTA key、確認能打通,再把 Classic key 從 webhook 拔掉
    不要反過來。拔掉 Classic 之前先讓 UTA 走通一輪,最壞情況你手上還有 Classic 可以繼續跑;反過來的話中間有一段是兩邊都不能下單。
  4. 4
    更新監控告警
    如果你的告警邏輯是 hardcode「401 = key 過期」,換成 UTA 之後那條訊息就不再是 key 過期而是 endpoint 打錯。把訊息文字更新,未來自己 debug 才不會被誤導。

官方沒講清楚、我這邊也還沒摸到的地方

不要把這篇當成永久不變
下面這幾條到 2026-07-31 為止仍然沒有官方統一版本,只有片段公告。實際動手前請自己再去 bitget.com/api-doc/uta/changelog 對一次日期。

Bitget 到目前沒有公開一份「散戶強制遷移的最終時程」。所以「你有多久可以拖」這件事目前只能觀察:看 changelog、看 Broker UTA Upgrade Notice 的更新、看官方 Telegram(t.me/bitgetOpenapi)有沒有新的公告。我們也沒有內部管道,只能跟你一樣讀這幾個來源。

另一件我們自己還沒完全摸到的事:切換到 UTA 之後,Classic 的訂單、成交、資金流水查詢會不會保留一段時間、保留多久?官方文件沒有寫,Broker 那邊的公告也沒明講對散戶的處理。所以你切之前,如果需要抓歷史資料做稅務申報或績效歸因,先自己把資料拉下來備份——這件事不能等切完了再說。

常見問題

TVSBot 用戶如果現在還在 Classic key,你們會自動幫我換嗎?
不會。你的 key 是你自己在 Bitget 網頁生的、保存在你自己那邊,我們只是拿它去打交易所。所以什麼時候換、要不要換,主控權在你——但你可以在 dashboard 的 API keys 頁面同時保留新舊兩把 key、指定某條策略走哪一把,切換時不用停整個帳戶。
如果我人在台灣,UTA 對我有什麼實際差別?
撇開資金效率不談,對 webhook 使用者來說最直接的差別是「一把 key 打得到所有商品」——UTA 帳戶下 spot、USDT-M、USDC-M、Coin-M(進階模式)都用同一個 endpoint、同一組簽名。Classic 過去是每種商品各自的權限勾選,寫程式的時候常常忘了勾某一個。UTA 這邊少一個踩雷點。
萬一我沒察覺就被切走了,Classic 那邊的 open orders 會被撤嗎?
這件事官方沒有給過明確答覆。從技術架構推斷(這是推論不是官方保證),既然是同一個底層帳戶換了帳戶模式,掛單應該會保留而不是被清掉;但這一點我們沒有自己重現過。所以在你確定被切走的當下,第一件事是手動去 spot 與 futures 頁面確認 open orders 還在,而不是相信任何一方——包括我們——的推論。

Get started

想把今天學到的東西自動化跑起來?

把你的 TradingView 策略接到 TVSBot——用你自己的 API key(Classic 或 UTA 都支援),dry-run 先跑,切換交易所時可以同時保留新舊兩把 key、逐條策略指定。

免費開始使用