This bitmexgo package enables golang clients to call REST APIs for the Bitmex crypto trading platform. It fixes critical bugs in the swagger-generated code and enhances its usability.
Notable changes:
- Fixed the authentication logic and API endpoint
- Fixed form data encoding
- Renamed the package from
swaggertobitmexgo - Removed all external dependencies (
golang.org/x/oauth2andgithub.com/antihax/optional) - Added a local
optionalpackage with mutable states to simplify parameter assignment - Fixed many type issues and removed the obsolete XAny type
This package also differs from an alternative library at https://github.com/qct/bitmex-go in the following ways:
bitmexgoemploys strongly-typed structs for API parameters instead ofmap[string]interface{}.bitmexgois forked from a more recent version of the swagger-generated code.bitmexgodepends on no external packages and is compatible with Google App Engine.
go get github.com/zmxv/bitmexgoimport "github.com/zmxv/bitmexgo"
// Get your API key/secret pair at https://www.bitmex.com/app/apiKeys
apiKey := "..."
apiSecret := "..."
// Create an authentication context
auth := bitmexgo.NewAPIKeyContext(apiKey, apiSecret)
// Create a shareable API client instance
apiClient := bitmexgo.NewAPIClient(bitmexgo.NewConfiguration())
// Create a testnet API client instance
testnetClient := bitmexgo.NewAPIClient(bitmexgo.NewTestnetConfiguration())
// Call APIs without parameters by passing the auth context.
// e.g. getting exchange-wide turnover and volume statistics:
stats, res, err := apiClient.StatsApi.StatsGet(auth)
// Call APIs with default parameters by passing the auth context and a nil.
// e.g. getting all open positions:
pos, res, err := apiClient.PositionApi.PositionGet(auth, nil)
// Call APIs with additional parameters by constructing a corresponding XXXOpts struct.
// e.g. submitting a limit order to buy 20000 contracts of XBTUSD at $6000.5:
var params bitmexgo.OrderNewOpts
params.OrdType.Set("Limit")
params.Side.Set("Buy")
params.OrderQty.Set(20000)
params.Price.Set(6000.5)
order, res, err := apiClient.OrderApi.OrderNew(auth, "XBTUSD", ¶ms)All URIs are relative to https://www.bitmex.com/api/v1
| Class | Method | HTTP request | Description |
|---|---|---|---|
| APIKeyApi | APIKeyDisable | Post /apiKey/disable | Disable an API Key. |
| APIKeyApi | APIKeyEnable | Post /apiKey/enable | Enable an API Key. |
| APIKeyApi | APIKeyGet | Get /apiKey | Get your API Keys. |
| APIKeyApi | APIKeyNew | Post /apiKey | Create a new API Key. |
| APIKeyApi | APIKeyRemove | Delete /apiKey | Remove an API Key. |
| AnnouncementApi | AnnouncementGet | Get /announcement | Get site announcements. |
| AnnouncementApi | AnnouncementGetUrgent | Get /announcement/urgent | Get urgent (banner) announcements. |
| ChatApi | ChatGet | Get /chat | Get chat messages. |
| ChatApi | ChatGetChannels | Get /chat/channels | Get available channels. |
| ChatApi | ChatGetConnected | Get /chat/connected | Get connected users. |
| ChatApi | ChatNew | Post /chat | Send a chat message. |
| ExecutionApi | ExecutionGet | Get /execution | Get all raw executions for your account. |
| ExecutionApi | ExecutionGetTradeHistory | Get /execution/tradeHistory | Get all balance-affecting executions. This includes each trade, insurance charge, and settlement. |
| FundingApi | FundingGet | Get /funding | Get funding history. |
| InstrumentApi | InstrumentGet | Get /instrument | Get instruments. |
| InstrumentApi | InstrumentGetActive | Get /instrument/active | Get all active instruments and instruments that have expired in <24hrs. |
| InstrumentApi | InstrumentGetActiveAndIndices | Get /instrument/activeAndIndices | Helper method. Gets all active instruments and all indices. This is a join of the result of /indices and /active. |
| InstrumentApi | InstrumentGetActiveIntervals | Get /instrument/activeIntervals | Return all active contract series and interval pairs. |
| InstrumentApi | InstrumentGetCompositeIndex | Get /instrument/compositeIndex | Show constituent parts of an index. |
| InstrumentApi | InstrumentGetIndices | Get /instrument/indices | Get all price indices. |
| InsuranceApi | InsuranceGet | Get /insurance | Get insurance fund history. |
| LeaderboardApi | LeaderboardGet | Get /leaderboard | Get current leaderboard. |
| LeaderboardApi | LeaderboardGetName | Get /leaderboard/name | Get your alias on the leaderboard. |
| LiquidationApi | LiquidationGet | Get /liquidation | Get liquidation orders. |
| NotificationApi | NotificationGet | Get /notification | Get your current notifications. |
| OrderApi | OrderAmend | Put /order | Amend the quantity or price of an open order. |
| OrderApi | OrderAmendBulk | Put /order/bulk | Amend multiple orders for the same symbol. |
| OrderApi | OrderCancel | Delete /order | Cancel order(s). Send multiple order IDs to cancel in bulk. |
| OrderApi | OrderCancelAll | Delete /order/all | Cancels all of your orders. |
| OrderApi | OrderCancelAllAfter | Post /order/cancelAllAfter | Automatically cancel all your orders after a specified timeout. |
| OrderApi | OrderClosePosition | Post /order/closePosition | Close a position. [Deprecated, use POST /order with execInst: 'Close'] |
| OrderApi | OrderGetOrders | Get /order | Get your orders. |
| OrderApi | OrderNew | Post /order | Create a new order. |
| OrderApi | OrderNewBulk | Post /order/bulk | Create multiple new orders for the same symbol. |
| OrderBookApi | OrderBookGetL2 | Get /orderBook/L2 | Get current orderbook in vertical format. |
| PositionApi | PositionGet | Get /position | Get your positions. |
| PositionApi | PositionIsolateMargin | Post /position/isolate | Enable isolated margin or cross margin per-position. |
| PositionApi | PositionTransferIsolatedMargin | Post /position/transferMargin | Transfer equity in or out of a position. |
| PositionApi | PositionUpdateLeverage | Post /position/leverage | Choose leverage for a position. |
| PositionApi | PositionUpdateRiskLimit | Post /position/riskLimit | Update your risk limit. |
| QuoteApi | QuoteGet | Get /quote | Get Quotes. |
| QuoteApi | QuoteGetBucketed | Get /quote/bucketed | Get previous quotes in time buckets. |
| SchemaApi | SchemaGet | Get /schema | Get model schemata for data objects returned by this API. |
| SchemaApi | SchemaWebsocketHelp | Get /schema/websocketHelp | Returns help text & subject list for websocket usage. |
| SettlementApi | SettlementGet | Get /settlement | Get settlement history. |
| StatsApi | StatsGet | Get /stats | Get exchange-wide and per-series turnover and volume statistics. |
| StatsApi | StatsHistory | Get /stats/history | Get historical exchange-wide and per-series turnover and volume statistics. |
| StatsApi | StatsHistoryUSD | Get /stats/historyUSD | Get a summary of exchange statistics in USD. |
| TradeApi | TradeGet | Get /trade | Get Trades. |
| TradeApi | TradeGetBucketed | Get /trade/bucketed | Get previous trades in time buckets. |
| UserApi | UserCancelWithdrawal | Post /user/cancelWithdrawal | Cancel a withdrawal. |
| UserApi | UserCheckReferralCode | Get /user/checkReferralCode | Check if a referral code is valid. |
| UserApi | UserConfirm | Post /user/confirmEmail | Confirm your email address with a token. |
| UserApi | UserConfirmEnableTFA | Post /user/confirmEnableTFA | Confirm two-factor auth for this account. If using a Yubikey, simply send a token to this endpoint. |
| UserApi | UserConfirmWithdrawal | Post /user/confirmWithdrawal | Confirm a withdrawal. |
| UserApi | UserDisableTFA | Post /user/disableTFA | Disable two-factor auth for this account. |
| UserApi | UserGet | Get /user | Get your user model. |
| UserApi | UserGetAffiliateStatus | Get /user/affiliateStatus | Get your current affiliate/referral status. |
| UserApi | UserGetCommission | Get /user/commission | Get your account's commission status. |
| UserApi | UserGetDepositAddress | Get /user/depositAddress | Get a deposit address. |
| UserApi | UserGetMargin | Get /user/margin | Get your account's margin status. Send a currency of "all" to receive an array of all supported currencies. |
| UserApi | UserGetWallet | Get /user/wallet | Get your current wallet information. |
| UserApi | UserGetWalletHistory | Get /user/walletHistory | Get a history of all of your wallet transactions (deposits, withdrawals, PNL). |
| UserApi | UserGetWalletSummary | Get /user/walletSummary | Get a summary of all of your wallet transactions (deposits, withdrawals, PNL). |
| UserApi | UserLogout | Post /user/logout | Log out of BitMEX. |
| UserApi | UserLogoutAll | Post /user/logoutAll | Log all systems out of BitMEX. This will revoke all of your account's access tokens, logging you out on all devices. |
| UserApi | UserMinWithdrawalFee | Get /user/minWithdrawalFee | Get the minimum withdrawal fee for a currency. |
| UserApi | UserRequestEnableTFA | Post /user/requestEnableTFA | Get secret key for setting up two-factor auth. |
| UserApi | UserRequestWithdrawal | Post /user/requestWithdrawal | Request a withdrawal to an external wallet. |
| UserApi | UserSavePreferences | Post /user/preferences | Save user preferences. |
| UserApi | UserUpdate | Put /user | Update your password, name, and other attributes. |
- AccessToken
- Affiliate
- Announcement
- ApiKey
- Chat
- ChatChannel
- ConnectedUsers
- ErrorError
- Execution
- Funding
- IndexComposite
- InlineResponse200
- InlineResponse2001
- Instrument
- InstrumentInterval
- Insurance
- Leaderboard
- Liquidation
- Margin
- ModelError
- Notification
- Order
- OrderBookL2
- Position
- Quote
- Settlement
- Stats
- StatsHistory
- StatsUsd
- Trade
- TradeBin
- Transaction
- User
- UserCommission
- UserPreferences
- UserWithdrawalFees
- Wallet