
Connect to Gemini via Vezgo API
Accounts
Positions
Transactions
Support for Accounts, Positions and Transactions enabled.
Support for Positions & Balances:
- Spot
Supported Transaction Types:
- Spot: deposits/withdrawals, trades & rewards.
Data mapping
A field-level guide to the Vezgo API data for Gemini — what each attribute means and where to read it — so you can map it into your own system.
| Data | Where to read it | Source on Gemini |
|---|---|---|
| Account & wallet | account.wallets[] | Gemini connects with an API key + secret (a Gemini "Account Key", prefixed `account-`; no OAuth, no wallet address); a read-only key is recommended. A connection is a single custodial account, surfaced as one entry in account.wallets[] (key on wallet.id). wallet.is_reconciled may be present (Gemini supports reconciliation), indicating balances were reconciled from transaction history. |
| Balances / positions | account.balances[] | Per-asset balances on the Gemini account. Each balance has ticker, amount, decimals and fiat_value (USD). asset_type is "crypto", "staked" for Gemini Staking assets (provider_ticker carries a .staked suffix, e.g. ticker ETH, provider_ticker ETH.staked), or "cash_equivalent" for fiat — including USD (there is no separate "cash" type). No ticker_address — exchange holdings are identified by ticker. |
| Transactions | GET /accounts/:id/transactions | Trades and deposits / withdrawals from the Gemini account. Each trade is a single transaction carrying its two legs (base + quote) as parts. See "How to read a transaction" below. |
| Assets / securities | balance.ticker | Identified by ticker (e.g. BTC, ETH). No ticker_address — custodial exchange balances are not on-chain tokens. |
| KYC data | GET /accounts/:id/kyc-data | Gemini exposes KYC (name, country code, account status, verification status, last sign-in) via the feature-gated KYC endpoint. Opt-in per team. |
How to read a transaction
Each Gemini activity maps to a Vezgo transaction. Read the value movement from parts[], and classify with transaction_type:
- Value movement — parts[] (direction sent/received, ticker, provider_ticker, amount, fiat_value in USD). A trade has two parts (the base leg + the quote leg); deposits and withdrawals have one part.
- Type — transaction_type (trade / deposit / withdrawal; an unrecognized transfer type falls back to "other"). Gemini carries no transaction_subtype; read a trade's buy vs sell from parts[].direction. Staking rewards arrive as deposit transactions (identified by misc.origin_type "Reward").
- Fees — fees[] (the trade or network fee; fiat_value in USD, plus the native fee asset and amount).
- misc.origin_id is the Gemini trade id (tid) for trades, or the on-chain transaction hash (txHash) for on-chain deposits / withdrawals — falling back to the Gemini event id (eid) for off-chain transfers. misc.origin_type is Gemini's raw activity type (Buy-trade / Sell-trade / Deposit / Withdrawal / Reward / AdminCredit / AdminDebit). Trades also carry misc.order_id (groups fills of the same order); transfers carry misc.method and misc.status. There is no on-chain from / to address.
// One Vezgo transaction = a Gemini activity (a trade carries its two legs as parts)
const id = tx.misc.origin_id; // trade id (tid), or on-chain hash (txHash) / event id (eid) for transfers
const kind = tx.misc.origin_type; // raw Gemini type (Buy-trade, Sell-trade, Deposit, Withdrawal, Reward, …)
const type = tx.transaction_type; // trade | deposit | withdrawal (| other — unrecognized transfer)
const parts = tx.parts ?? []; // trade = 2 legs (base + quote); deposit / withdrawal = 1
const fees = tx.fees ?? []; // trade / network fee (fiat_value in USD)
// Gemini has no transaction_subtype — read buy/sell from parts[].direction.
// No tokenTransfers / nftTransfers / internalTransfers arrays, no on-chain from/to
// address, and no top-level transaction_hash (the hash is in misc.origin_id).| Where to read it | Attributes | What it is |
|---|---|---|
tx.parts[] | direction, ticker, provider_ticker, amount, fiat_value | Value movement. A trade has 2 legs (base + quote); a deposit / withdrawal has 1. No address — Gemini data is custodial. |
tx.transaction_type | trade / deposit / withdrawal / other | Normalized classification — prefer it over the raw misc.origin_type. Gemini has no transaction_subtype; read buy vs sell from parts[].direction. |
tx.fees[] | ticker, amount, fiat_value | Trade / network fee — the native fee asset and amount, with fiat_value in USD. |
misc.origin_type is Gemini's raw activity type — trades are Buy-trade / Sell-trade; transfers use the Gemini transfer type. Always classify off transaction_type. Common values:
- Buy-trade
- Sell-trade
- Deposit
- Withdrawal
- Reward
- AdminCredit
- AdminDebit
Supported
- Crypto and fiat (cash_equivalent) balances
- Gemini Staking positions (asset_type staked)
- Trades (each trade carries its two legs as parts)
- Deposits and withdrawals (crypto and fiat)
- Staking rewards (surfaced as deposit transactions)
- KYC data (feature-gated)
- Balance reconciliation (wallet.is_reconciled)
- USD fiat valuation for balances and transactions
Notes & limitations
- Balances are the exchange's reported (custodial) holdings — there is no on-chain wallet address.
- Transactions carry no on-chain from / to address; the on-chain hash (when present) is in misc.origin_id (txHash), and there is no top-level transaction_hash.
- Gemini carries no transaction_subtype — distinguish buy vs sell from parts[].direction, and staking rewards via misc.origin_type "Reward".
- USD is typed asset_type "cash_equivalent" (there is no separate "cash" type).
- fiat_value can be null or 0 when a USD exchange rate is unavailable.
Try to connect to Gemini in our Demo Sandbox
Open DemoLet's get you started
To get your API Keys, sign up on the portal or reach out to the team at sales@vezgo.com