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.

Full List of Integrations

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.

DataWhere to read itSource on Gemini
Account & walletaccount.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 / positionsaccount.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.
TransactionsGET /accounts/:id/transactionsTrades 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 / securitiesbalance.tickerIdentified by ticker (e.g. BTC, ETH). No ticker_address — custodial exchange balances are not on-chain tokens.
KYC dataGET /accounts/:id/kyc-dataGemini 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 itAttributesWhat it is
tx.parts[]direction, ticker, provider_ticker, amount, fiat_valueValue movement. A trade has 2 legs (base + quote); a deposit / withdrawal has 1. No address — Gemini data is custodial.
tx.transaction_typetrade / deposit / withdrawal / otherNormalized 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_valueTrade / 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.
See the full Vezgo object reference

Try to connect to Gemini in our Demo Sandbox

Open Demo

Let's get you started

To get your API Keys, sign up on the portal or reach out to the team at sales@vezgo.com

You have questions? Contact us