Bitget API Keys: Permissions, IP Whitelists and Classic vs UTA

A Bitget API key gives software access to specified account functions. Choose permissions for the exact tasks the application needs, restrict the IP addresses it can connect from, and match its requests to the account’s Classic or Unified Trading Account (UTA) interface. A failed request is not, by itself, a reason to enable more permissions.

An IP whitelist controls where an API request can originate. It is different from a withdrawal-address whitelist, which controls where assets may be sent.

Documentation checked: 5 November 2026. This guide covers standard Bitget Exchange REST API credentials, not Bitget Wallet recovery phrases, OAuth integrations or broker-specific key management. The comparisons below are based on official documents; no account credentials, signed requests or trades were used to prepare this article.

Check Classic or UTA before changing a key

Bitget’s migration guide distinguishes Classic v2 trading routes from UTA v3 routes. For example, Classic spot and futures use separate order-placement paths, while UTA uses /api/v3/trade/place-order. These are route identifiers, not instructions to submit an order. Do not assume every wallet or administrative endpoint follows that same mapping.

The guide also says an existing v2 API key gains UTA access during the upgrade without requiring a newly created key. That does not make Classic and UTA requests interchangeable: the account mode, endpoint, permissions and parameters still need to match. The authentication mechanism is shared, but error-code meanings are not guaranteed to remain identical. Source: Bitget’s Classic-to-UTA API migration guide.

One API key branches to Classic v2 and UTA v3, with separate account-mode, endpoint and permission checks.
BitQED AI-assisted explanatory diagram, not a Bitget screen. Key reuse does not make Classic and UTA endpoints or permissions interchangeable. Open full-size diagram.

For account structure, collateral and migration risks, see the separate Bitget UTA guide. This article focuses on API access rather than whether upgrading is suitable for a particular account.

Choose permissions by task, not by application name

The Classic REST introduction lists read-only, trade, transfer and withdrawal capabilities. Public market-data endpoints may not require account authentication at all; private account requests do. A price display should not receive trading access simply because it connects to an exchange. Classic documentation also states that API withdrawals require a whitelisted IP. Source: Bitget Classic REST API.

UTA separates trading access from account-management access. Checking one does not automatically supply the other.

UTA permission comparison by intended task

Application taskDocumented permission categoryWhat to avoid adding automatically
Read order informationUTA trade, read-onlyOrder placement or cancellation access
Place or cancel ordersUTA trade, read and writeAccount-setting changes or withdrawal access
Read account settingsUTA management, read-onlyPermission to change those settings
Change settings such as leverage or holding modeUTA management, read and writeUnrelated trading or withdrawal capabilities
UTA trading and account-management permissions are separated into read-only and read-and-write tasks.
BitQED AI-assisted explanatory diagram, not a Bitget screen. Write cards mean read-and-write. Highlighted read categories illustrate reporting, not a universal preset. Open full-size diagram.

Comparison: BitQED, using Bitget’s UTA Quick Start. The order-management reference explicitly distinguishes read-only order queries from read-and-write order placement and cancellation. Check the permission on each endpoint your application actually calls; this table is not a universal checkbox recipe for every integration.

A reporting application that reads both order history and account settings may need both relevant read categories. It does not follow that it needs their write equivalents. Ask an integration provider to identify the requested endpoints rather than accepting “enable everything” as an explanation.

Which IP belongs in the whitelist?

Use the public outbound IP address from which the application actually reaches Bitget. Your laptop, a separate machine running the application and a network gateway may present different outbound addresses. The address visible to a website in your browser is not necessarily the address used by a program running elsewhere.

As a practical diagnostic check, compare the application’s current outbound address with the key’s allowed addresses. Moving an application or changing its network can break that match even when its credentials have not changed. Confirm the address with the system or integration operator; do not add unrelated addresses or remove the restriction merely to suppress an error.

Bitget recommends binding an IP to API keys, and its API terms call for necessary permissions, separate purposes and IP whitelisting. These controls reduce exposure; they do not establish that the application or its operator is trustworthy. Sources: Classic REST security guidance, API Key Terms of Use, section 4.

A blockchain destination is not an API source IP. If your question concerns saved withdrawal destinations, use the withdrawal-address whitelist guide instead.

An API IP whitelist restricts request sources, while a withdrawal address whitelist restricts asset destinations.
BitQED AI-assisted explanatory diagram, not a Bitget screen. Source-IP authorization and saved withdrawal destinations are different controls; neither guarantees safety. Open full-size diagram.

Keep credentials and account settings separate

Bitget distinguishes three credential components: the API key identifies the connection, the SecretKey is used to generate signatures, and the passphrase is set when the key is created. The API passphrase is not your website login password or an authenticator code. Bitget’s guidance says a forgotten API passphrase cannot be retrieved; the key must be recreated. Sources: REST credential definitions, API FAQ.

The API key identifies the connection, SecretKey signs requests and the API passphrase is set at key creation.
BitQED AI-assisted explanatory diagram, not a Bitget screen. These are API credential roles, not website login credentials; no real secrets are shown. Open full-size diagram.

For UTA, the documented /api/v3/account/info response includes ips, permType and permissions. The separate /api/v3/account/settings endpoint describes account configuration and requires UTA management read access. Checking key restrictions and checking trading configuration are therefore different tasks. Do not post either response publicly: account identifiers and other sensitive details may be included. Source: Bitget account endpoint reference.

Diagnose the failure before widening access

First record the requested method and path, API family, account mode, environment, error code and message. Keep credentials, authorization headers and private account data out of shared logs.

Check account mode and endpoint, credentials and signature, outbound IP, required permissions, then account rules and limits.
BitQED AI-assisted explanatory diagram, not a live API test. Diagnose the cause before changing access; a failed request does not justify enabling every permission. Open full-size diagram.

Selected errors and the first check they support

Documented responseScope checkedFirst diagnostic check
40038: source IP is outside the key’s whitelistClassic error tableCompare the application’s outbound IP with the configured whitelist
40036: passphrase errorClassic error tableCheck the credential set; do not substitute a login password
40008 / 40009: expired timestamp / signature errorClassic and UTA error tablesCheck clock, timestamp format and signing inputs
40014: insufficient permissionsClassic error tableCompare the requested endpoint with the enabled capability
25245: account is not in unified modeUTA error tableCheck account mode and endpoint compatibility

These are selected documented meanings, not results of live tests. Use the reference for the API family that returned the response; absence from one table does not prove a code can never be returned elsewhere. Sources: Classic REST errors, UTA REST errors.

For a signed REST request, Bitget documents ACCESS-KEY, ACCESS-SIGN, ACCESS-TIMESTAMP and ACCESS-PASSPHRASE. Its signing instructions use the uppercase method, path, query string when present, and request body. A signature based on different request content will not be repaired by adding trading permission. Source: Bitget REST authentication and signing.

After those checks, distinguish an access problem from account restrictions, product eligibility, invalid order parameters or rate limiting. Follow the applicable endpoint’s limits rather than repeatedly resending a failed request. Do not use IP changes to evade regional restrictions.

No withdrawal permission does not mean no risk

A read-only integration can expose private account information. A trading-enabled integration can place unwanted orders and cause losses without making an external withdrawal. An IP whitelist also cannot prevent misuse by an authorized application operating from an allowed address.

Use a separate key for a clearly defined application, remove unused keys and revoke a suspected compromised key. Do not put secrets in public code, screenshots, chat messages or support tickets. Bitget’s API terms address credential handling and third-party control; check them before connecting a service. For broader sign-in protection, see the Bitget account-security guide. Source: API Key Terms of Use.

Disclosure and limits: BitQED is an independent information site and may earn commissions from qualifying partner links elsewhere on the site. This article contains no account-connection service and does not guarantee API access, security, execution or investment results. Documentation, account eligibility and interface labels may change; confirm the current endpoint and account requirements before authorizing software.

Scroll to Top