GeminiGemini
Demo environmentGet API key
  • Overview
  • Crypto Trading
  • Prediction Markets
  • Perpetuals
  • Stocks
  • API Reference
  • SDKs & Tools
Changelog
Gemini logoGemini logo

© 2026 Gemini Space Station, Inc.

TypeScript SDK — Account Services: Addresses & Deposits

Manage deposit addresses and the approved withdrawal address allowlist. All methods are on client.account and use a unified flat parameter object.

See the API specifications for full request/response schemas and the authentication guide for setup.

Methods

createNewDepositAddress

POST /v1/deposit/{network}/newAddress · Authenticated · Fund Manager role · OAuth scope addresses:create

Generates a new deposit address for the specified network. Requires the Fund Manager role. The request is validated client-side — the SDK checks optional field types (label, legacy, account) before sending. The account field is optional for account-level API keys but required for Master API keys to target a specific sub-account.

Code
const address = await client.account.createNewDepositAddress({ network: "bitcoin", label: "cold-storage-inbound", }); console.log(address.address); // the new deposit address string

This is a POST mutation — never automatically retried. Creating duplicate addresses is safe — each call generates a distinct address.

listDepositAddresses

POST /v1/addresses/{network} · Authenticated · Trader, Fund Manager, or Auditor role · OAuth scope addresses:read or addresses:create

Lists all previously generated deposit addresses for the specified network. The response is a bare array of Address objects.

Code
const addresses = await client.account.listDepositAddresses({ network: "ethereum", }); for (const addr of addresses) { console.log(`${addr.address} — ${addr.label ?? "(no label)"}`); }

createNewApprovedAddress

POST /v1/approvedAddresses/{network}/request · Authenticated · Fund Manager role · Trusted IP required · API key only

Requests approval of a new withdrawal address for the specified network. Requires the Fund Manager role and Trusted IP controls enabled on your account. This endpoint is API-key only — it is not accessible via OAuth. The request is validated client-side — address and label are required strings.

Code
const result = await client.account.createNewApprovedAddress({ network: "ethereum", address: "0x1234567890abcdef1234567890abcdef12345678", label: "treasury-wallet", });

Caveat: Every newly approved address is subject to a mandatory seven-day approval hold before it can be used for withdrawals. This hold always applies and cannot be skipped. Plan withdrawal workflows accordingly.

listApprovedAddresses

POST /v1/approvedAddresses/account/{network} · Authenticated · OAuth scope addresses:read

Lists all approved withdrawal addresses for the specified network on your account. Available to any API-key role (Trader, Fund Manager, or Auditor). OAuth callers require the addresses:read scope. The response is a wrapper object with an approvedAddresses array — not a bare array.

Code
const response = await client.account.listApprovedAddresses({ network: "bitcoin", }); for (const entry of response.approvedAddresses ?? []) { console.log(`${entry.address} — ${entry.label} (${entry.status})`); }

removeApprovedAddress

POST /v1/approvedAddresses/{network}/remove · Authenticated · Fund Manager role · OAuth scope addresses:create

Removes an address from the approved withdrawal allowlist. Requires the Fund Manager role. OAuth callers require the addresses:create scope. The request is validated client-side — address is a required string.

Code
const result = await client.account.removeApprovedAddress({ network: "ethereum", address: "0x1234567890abcdef1234567890abcdef12345678", }); console.log(result.message); // confirmation message

Caveat: Removing an approved address is irreversible via this call. You'll need to re-approve the address (with its waiting period) to use it again.

Flat Unified Parameter Objects

Every method on this page takes a single flat object with path parameters (network) and any body properties directly at top level:

Code
await client.account.createNewDepositAddress({ network: "ethereum", label: "my-deposit-label", });

See the patterns guide for more on input shapes.

What's next

  • Balances & Account — account details and balance queries
  • Withdrawals & Transfers — moving funds
  • Request Validation — how client-side validation works
On this page
  • Methods
    • createNewDepositAddress
    • listDepositAddresses
    • createNewApprovedAddress
    • listApprovedAddresses
    • removeApprovedAddress
  • Flat Unified Parameter Objects
  • What's next
TypeScript
TypeScript
TypeScript
TypeScript
TypeScript
TypeScript