January 5, 2024
Does Gemini have an API?
Yes, Gemini does have an API, offering both public and private REST APIs. Public APIs provide market data such as current order books and trading activity, while private APIs allow you to manage orders and funds, including placing and canceling orders and checking balances. However, an alternative to using Gemini’s public API is to use Mesh, which has built integration with Gemini OAuth along with 300+ other digital assets.
About Gemini
Founded in 2014 by Cameron and Tyler Winklevoss, Gemini is a licensed digital asset exchange and custodian based in New York City. The platform offers services for both individuals and institutions, focusing on strong security controls and compliance. With a total funding amount of $423.9M, Gemini has expanded its reach to over 70 countries and has made a name for itself in the cryptocurrency, finance, and fintech industries.
General usage
Gemini provides a suite of APIs, including REST, WebSocket, and OAuth, each with distinct functionalities:
- REST API: Gemini's REST API offers public and private endpoints. Public APIs provide market data like order books and trade history, while private APIs manage orders and funds. Rate limits are set at 120 requests per minute for public APIs and 600 requests per minute for private APIs.
- WebSocket API: This includes a private Order Events API and a public Market Data API for real-time data streaming. WebSocket API requests begin with a GET request for protocol upgrade, with additional headers for private API access. The recommendation for public WebSocket APIs is to limit requests to 1 per symbol per minute.
- Authentication: Access to private APIs requires API keys, obtained by creating a key in the API settings. Requests must include a nonce to prevent replay attacks, and the payload is a JSON object encoded in the X-GEMINI-PAYLOAD header for security.
Rate Limits
Gemini API’s rate limits are:
- Public API Entry Points: Limited to 120 requests per minute. It's recommended not to exceed 1 request per second.
- Private API Entry Points: Limited to 600 requests per minute, with a recommendation of not exceeding 5 requests per second.
- Burst Rate: When requests exceed the set limit, a "burst" rate allows five additional requests, but their processing is delayed until the rate falls below the defined limit.
- Exceeding Rate Limit: Exceeding these limits results in a 429 HTTP status response until the request rate drops under the limit.
Authentication
This is how you authenticate your Gemini OAuth API:
- Create a new OAuth application through the API Settings on the Gemini website, and obtain the client ID and client secret.
- Make an authorization request by directing the user to the authorization URL, including the required parameters such as client ID, redirect URI, and scope.
- Upon successful authorization, the user will be redirected to the specified redirect URI, and an authorization code will be included in the URL.
- Exchange the authorization code for access and refresh tokens by making a token request to the token endpoint, including the client ID, client secret, and authorization code.
- Use the access token in the API calls to authenticate your requests. When the access token expires, use the refresh token to obtain a new access token.
Errors
Here are the errors for Gemini API:
- 400 Market not open or malformed request: Ensure the market is open and accepting new orders, and check that the request is well-formed with all required parameters.
- 403 Missing role for API key: Verify that the API key has the necessary roles assigned to access the endpoint.
- 429 Rate Limiting applied: If encountering rate limits, reduce the frequency of requests to comply with the API's rate-limiting policies.
Recent changes
Here are the five most recent changes in Gemini API
- On 2022-11-01: The "/v1/oauth/revokeByToken" endpoint was added, allowing users to revoke an OAuth token. If you encounter issues with this endpoint, ensure that you're using the correct token and following the proper request format.
- On 2022-10-01: The "/v1/oauth/token" endpoint was updated to include the "client_assertion" parameter for private_key_jwt client authentication. If you're having trouble with this parameter, double-check your JWT and ensure it's correctly formatted and signed.
- On 2022-09-01: The "/v1/oauth/authorize" endpoint was updated to support the "prompt" parameter, allowing users to control the display of the consent screen. If the consent screen isn't displaying as expected, verify that the "prompt" parameter is set correctly in your authorization request.
- On 2022-08-01: The "/v1/oauth/token" endpoint was updated to support the "client_assertion_type" parameter for private_key_jwt client authentication. If you're experiencing issues with this parameter, ensure that you're using the correct assertion type and that your JWT is properly formatted and signed.
- On 2022-07-01: The "/v1/oauth/token" endpoint was updated to include the "code_verifier" parameter for PKCE (Proof Key for Code Exchange) support. If you're having trouble with this parameter, make sure you're generating a valid code verifier and including it in your token request.
An alternative to the Gemini API
Mesh offers a remarkable advantage over Gemini OAuth's API, particularly for developers and enterprises looking for a straightforward and integrated approach to managing cryptocurrency transactions. Here are the main attributes of Mesh's API:
- Integrated User Experience: Mesh focuses on providing a seamless user experience by embedding cryptocurrency functionalities directly into your app. This allows users to manage their digital assets without having to switch between different platforms or generate API keys.
- Broad Connectivity: Mesh offers a single integration that connects to over 300 brokerages, centralized exchanges, and self-custody wallets. This extensive connectivity provides flexibility and choice for users, making it easier to manage digital assets across multiple platforms.
- Simplified Asset Management: Mesh simplifies the process of depositing assets by allowing transfers from various sources directly within the app. This enhances user convenience and reduces friction when funding wallets with external assets.
To get started with Mesh, visit the Mesh Signup page.