Coinbasepro Csharp
The unofficial .NET/C# client library for the Coinbase Pro/GDAX API
Install / Use
npx skills add dougdellolio/coinbasepro-csharpInstalls into whichever agent you are using.
README
https://docs.pro.coinbase.com/
</div> <h1>How to Install</h1>PM> Install-Package GDAX.Api.ClientLibrary
<i>Generate your key at https://pro.coinbase.com/profile/api</i>
//create an authenticator with your apiKey, apiSecret and passphrase
var authenticator = new Authenticator("<apiKey>", "<apiSecret>", "<passphrase>");
//create the CoinbasePro client
var coinbaseProClient = new CoinbasePro.CoinbaseProClient(authenticator);
//use one of the services
var allAccounts = await coinbaseProClient.AccountsService.GetAllAccountsAsync();
<h1>What services are provided?</h1>
Accounts
- GetAllAccountsAsync() - get all accounts
- GetAccountByIdAsync(id) - get account by id
- GetAccountHistoryAsync(id, limit, numberOfPages) - get account history (paged response)
- GetAccountHoldsAsync(id, limit, numberOfPages) - get all holds placed on an account (paged response)
CoinbaseAccounts
- GetAllAccountsAsync() - get all coinbase accounts
Orders
- PlaceMarketOrderAsync(orderSide, productPair, amount, MarketOrderAmountType, clientOId) - place market order by size or funds
- PlaceLimitOrderAsync(orderSide, productPair, size, price, timeInForce, postOnly, clientOId) - place limit order with time in force
- PlaceLimitOrderAsync(orderSide, productPair, size, price, cancelAfter, postOnly, clientOId) - place limit order with cancel after date
- PlaceStopOrderAsync(orderSide, productPair, size, limitPrice, stopPrice, clientOId) - place stop order with stop and limit price
- CancelAllOrdersAsync() - cancel all orders
- CancelOrderByIdAsync(id) - cancel order by id
- GetAllOrdersAsync(orderStatus, limit, numberOfPages) - get all, active or pending orders (paged response)
- GetAllOrdersAsync(orderStatus[], limit, numberOfPages) - get orders by multiple statuses (paged response)
- GetOrderByIdAsync(id) - get order by id
Payments
- GetAllPaymentMethodsAsync() - get all payment methods
Withdrawals
- WithdrawFundsAsync(paymentMethodId, amount, currency) - withdraw funds to a payment method
- WithdrawToCoinbaseAsync(coinbaseAccountId, amount, currency) - withdraw funds to a coinbase account
- WithdrawToCryptoAsync(cryptoAddress, amount, currency, destinationTag) - withdraw funds to a crypto address
- GetAllWithdrawals(profileId, before, after, limit) - list of withdrawals from the profile of the API key, in descending order by created time
- GetWithdrawalById(transferId) - get information on a single withdrawal
- GetFeeEstimateAsync(currency, cryptoAddress) - gets the network fee estimate when sending to the given address
Deposits
- GetAllDeposits(profileId, before, after, limit) - list of deposits from the profile of the API key, in descending order by created time
- GetDepositById(transferId) - get information on a single deposit.
- DepositFundsAsync(paymentMethodId, amount, currency) - deposits funds from a payment method
- DepositCoinbaseFundsAsync(coinbaseAccountId, amount, currency) - deposits funds from a coinbase account
- GenerateCryptoDepositAddressAsync(string coinbaseAccountId) - generate an address for crypto deposits
Products
- GetAllProductsAsync() - get a list of available currency pairs for trading
- GetSingleProductAsync(productType) - get market data for a specific currency pair
- GetProductOrderBookAsync(productType, productLevel) - get a list of open orders for a product (specify level 1, 2, or 3)
- GetProductTickerAsync(productType) - get information about the last trade (tick), best bid/ask and 24h volume
- GetTradesAsync(productType, limit, numberOfPages) - get latest trades for a product (paged response)
- GetProductStatsAsync(productType) - get 24 hour stats for a product
- GetHistoricRatesAsync(productPair, start, end, granularity) - get historic rates for a product, auto batches requests to pull complete date range
Currencies
- GetAllCurrenciesAsync() - gets a list of known currencies
- GetCurrencyByIdAsync(currency) - list the currency for the specified id
Fills
- GetFillsByOrderIdAsync(orderId, limit, numberOfPages) - gets a list of all recent fills by order id (paged response)
- GetFillsByProductIdAsync(productType, limit, numberOfPages) - gets a list of all recent fills by product type (paged response)
Limits
- GetCurrentExchangeLimitsAsync() - returns information on your payment method transfer limits, as well as buy/sell limits per currency
Fundings
- GetAllFundingsAsync(limit, fundingStatus, numberOfPages) - gets a list of all orders placed with a margin profile that draws funding (paged response)
Reports
- CreateNewAccountReportAsync(startDate, endDate, accountId, productType, email, fileFormat) - generate new account report
- CreateNewFillsReportAsync(startDate, endDate, productType, accountId, email, fileFormat) - generate new fills report
- GetReportStatus(id) - gets report status
User Account
- GetTrailingVolumeAsync() - get 30-day trailing volume for all products
Fees
- GetCurrentFeesAsync() - get your current maker & taker fee rates, as well as your 30-day trailing volume
Stablecoin Conversions
- CreateConversion(currencyFrom, currencyTo, amount) - convert bank-based dollars to blockchain-based digital dollars
Profiles
- GetAllProfilesAsync() - list your profiles
- GetProfileByIdAsync(id) - get a single profile by profile id
- CreateProfileTransferAsync(from, to, currency, amount) - transfer funds from API key’s profile to another user owned profile
//create an authenticator with your apiKey, apiSecret and passphrase
var authenticator = new Authenticator("<apiKey>", "<apiSecret>", "<passphrase>");
//create the CoinbasePro client
var coinbaseProClient = new CoinbasePro.CoinbaseProClient(authenticator);
//use the websocket feed
var productTypes = new List<string>() { "BTC-EUR", "BTC-USD" };
var channels = new List<ChannelType>() { ChannelType.Full, ChannelType.User } // When not providing any channels, the socket will subscribe to all channels
var webSocket = coinbaseProClient.WebSocket;
webSocket.Start(productTypes, channels);
// EventHandler for the heartbeat response type
webSocket.OnHeartbeatReceived += WebSocket_OnHeartbeatReceived;
private static void WebSocket_OnHeartbeatReceived(object sender, WebfeedEventArgs<Heartbeat> e)
{
throw new NotImplementedException();
}
<h2>How to use without authentication</h2>
//create the CoinbasePro client without an authenticator
var coinbaseProClient = new CoinbasePro.CoinbaseProClient();
//use the websocket feed
var productTypes = new List<string>() { "BTC-EUR", "BTC-USD" };
var channels = new List<ChannelType>() { ChannelType.Full, ChannelType.User }; // When not providing any channels, the socket will subscribe to all channels
var webSocket = coinbaseProClient.WebSocket;
webSocket.Start(productTypes, channels);
// EventHandler for the heartbeat response type
webSocket.OnHeartbeatReceived += WebSocket_OnHeartbeatReceived;
private static void WebSocket_OnHeartbeatReceived(object sender, WebfeedEventArgs<Heartbeat> e)
{
throw new NotImplementedException();
}
<h2>Available functions</h2>
These are the starting and stopping methods:
- Start(productTypes, channelTypes, autoSendPingInterval) - Starts the websocket feed based on product(s) and channel(s). Optionally set an auto send ping interval to prevent websocket from closing if idle more than 1 minute
- Stop() - Stops the websocket feed
- ChangeChannels(productTypes) - Change channel subscriptions to the current websocket
The following methods are EventHandlers:
- OnTickerReceived - EventHandler for data with response type
ticker - OnSnapShotReceived - EventHandler for data with response type
snapshot - OnLevel2UpdateReceived - EventHandler for data with response type
level2 - OnHeartbeatReceived - EventHandler for data with response type
heartbeat - OnReceivedReceived - EventHandler for data with response type
received - OnOpenReceived - EventHandler for data with response type
open - OnStatusReceived - EventHandler for data with response type
status - OnDoneReceived - EventHandler for data with response type
done - OnMatchReceived - EventHandler for data with response type
match - OnChangeReceived - EventHandler for data with response type
change - OnLastMatchReceived - EventHandler for data with response type
last match - OnErrorReceived - EventHandler for data with response type
error - OnActivateReceived - Eventhandler for data with response type
activate - OnWebSocketError - EventHandler for web socket error
- OnWebSocketClose- EventHandler for web socket closing
- OnWebSocketOpenAndSubscribed - EventHandler for web socket being opened and subscribed
<i>Generate your key at https://public.sandbox.pro.coinbase.com/profile/api</i>
//create an authenticator with your apiKey, signature and passphrase
var authenticator = new Authenticator("<apiKey>", "<signature>", "<passphrase>");
//create the CoinbasePro client and set the sandbox flag to true
var coinbaseProClient = new CoinbasePro.CoinbaseProClient(authenticator, true);
//use one of the services
var response = await coinbaseProClient.OrdersService.PlaceMarketOrderAsync(OrderSide.Buy, "BTC-USD", 1);
<h1>ExamRelated Skills
coding-agent
385.5kDelegate coding work to Codex, Claude Code, or OpenCode as background workers; not simple edits or read-only code lookup.
gh-issues
385.5kFetch GitHub issues, select candidates, spawn background fix agents, open PRs, and optionally process PR review comments.
node-connect
385.5kDiagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.
notion
385.5kNotion CLI/API for pages, Markdown content, data sources, files, comments, search, Workers, and raw API calls.
