Bitget UTA v3 API Migration —
Why Your Webhook Suddenly Starts Returning 401
The alert fired on the candle, right on time. Your webhook was sent. You open the exchange's log and see HTTP 401, or the message "API-key format invalid". You check the key — not expired. You check the IP whitelist — nothing has changed. This has been happening on Bitget lately: they moved their API to a new architecture called UTA v3, and your webhook is now knocking on the wrong door.
This post doesn't argue how good UTA is or whether the upgrade is worth it — the official docs are a better source for that. It answers one thing: **why your webhook starts silently returning 401, and what options you actually have before you get migrated involuntarily.**
bitget.com/support/articles/12560603886018, verified July 2026). So the moment your account mode flips to UTA, if your execution server is still calling the old endpoints, everything falls off at once.What's Actually Going On
Bitget now publishes two separate API doc sets, with different URL prefixes: Classic sits under /api-doc/classic/*, UTA under /api-doc/uta/*. The Classic landing page opens with "We recommend using the Unified Trading Account (UTA) — it consolidates spot, margin, and derivatives into a single account", and marks Classic as being in maintenance mode, taking "essential updates" only (verified July 2026).
Put differently, the official narrative isn't "two APIs coexisting" — it's "you should move". The UTA changelog has been shipping steadily over the past months (Trading Data APIs added on 2026-06-16, institutional rate limits on 2026-07-30), while Classic's changelog has gone almost silent. That's what "the new mainline" and "the maintained legacy" are supposed to look like.
Why the Webhook Breaks "Silently"
The nastiest bugs in automated trading are the ones with no alarm — the ones where things simply stop succeeding. API migrations are a textbook case.
Your normal API-health checks look at two things: whether the connection works, and whether fill reports come back. At the moment of migration, both of those still pass — your webhook server can still reach Bitget, it just gets 401 on every order; TradingView shows the alert as sent successfully, because for TradingView "HTTP 200 = success" and 401 also counts as "delivered". The thing that actually didn't happen — the order never reached the exchange — is invisible outside your own logs.
| Signal | Before migration | At migration |
|---|---|---|
| TradingView alert fires | OK | OK |
| webhook HTTP response | 200 | 401 |
| Order visible in exchange orderbook | Yes | No |
| Account balance change | Yes | No |
| Exchange email / app push | Depends on settings | Depends on settings, usually not |
What's visible and what's invisible at the moment of migration. Verified July 2026.
Put differently, you find out the next time you actually glance at the chart or the reports — and by then hours or days may have passed. The point of this piece isn't to scare you, it's to convince you to build the "how do I know I got migrated" signal today.
How Do You Tell Which Side You're Currently On?
Three places to look. If any one of them lines up, that's your answer.
- Take the
ACCESS-KEYyou already have and hit UTA's/api/v3/account/assets(or any UTA endpoint). A 200 means your account is already in UTA mode; a 401 or "API-key format invalid" means this key still can't call UTA endpoints. - Log into the web UI and look at the top of the account page — does it say "Unified Trading Account" or "Classic"? Bitget now shows a prominent badge either way.
- Go to API management and look at the permission checkboxes on this key. UTA permissions are named
Unified account trade/Unified account management(each with read-only and read-and-write variants). Those options don't exist under Classic mode.
Do You Get to Choose When to Switch?
As of July 2026, Bitget's stance for retail is "recommended", not "mandatory" — the web UI shows an "Upgrade" button you can press yourself. That is the current observed state, not a promise about the future. Historically, when large exchanges restructure account architecture they open a voluntary window first, then schedule forced batches, then take the legacy stack down entirely. The tempo of Bitget's changelog fits that script.
For brokers and institutional accounts, the timeline is clearer: the Broker UTA Upgrade Notice spells out the migration schedule and the behavior change where UTA API keys can no longer call Classic endpoints. Retail traders sitting under a broker account or an institutional account may have that decision made for them upstream.
Things to Do Before You Switch
The order matters. This is the sequence people actually trip over:
- 1Try it on a subaccount firstYour Bitget main account can enable API Key Management for a subaccount (off by default). Take a small-funded subaccount, flip it to UTA, issue a UTA key, point one of your webhooks at it for a day. That's dramatically safer than flipping the main account directly.
- 2Diff endpoints, signing logic and parameter namesUTA and Classic use different request paths, and some query / body field names have changed too (e.g.,
sizein the order body is renamed toqty). If your order function was "copy the official example verbatim"-shaped, changing the endpoint is going to require more than a one-line edit. - 3Get a working UTA key first, then remove the Classic key from your webhookNot the other way around. Prove UTA works end-to-end before you tear out Classic. Worst case, you still have Classic to fall back on; do it in reverse and there's a window where neither one can place orders.
- 4Update your monitoringIf your alert logic hardcodes "401 = key expired", after UTA that message no longer means an expired key — it means you called the wrong endpoint. Update the alert text so future-you doesn't get misled at 3 a.m.
What the Docs Don't Spell Out (and We Haven't Fully Nailed Down Either)
bitget.com/api-doc/uta/changelog.Bitget has not published a "final forced migration schedule for retail". So "how long can I stall" is currently a matter of observation: watch the changelog, watch updates to the Broker UTA Upgrade Notice, watch the official Telegram (t.me/bitgetOpenapi) for new announcements. We don't have an inside channel either — we're reading the same sources you are.
Another thing we haven't fully verified ourselves: after switching to UTA, do Classic's order history, fill history and funding-flow queries stay accessible, and for how long? The docs don't say, and the broker notices don't clearly address retail either. So if you need historical data for tax filing or performance attribution, pull it down and back it up yourself before you switch — this is not something to figure out after the fact.
FAQ
If I'm a TVSBot user still on a Classic key, will you switch it for me automatically?
What does UTA actually change for me in practice?
If I get migrated without noticing, do my Classic open orders get cancelled?
Get started
Point your TradingView strategies at TVSBot — bring your own API key (Classic or UTA both work), dry-run first, and when you switch exchanges you can hold both keys at once and pin them strategy by strategy.
Start free