Gemini Pro

API Documentation

REST API reference for Gemini Pro

Base URL
http://localhost:3000

Authentication

Most endpoints require authentication via a valid session cookie obtained by logging in via /api/auth/[...nextauth]. Unauthenticated requests return a 401 redirect.

GET/api/user/balancesAuth Required

Get Balances

Fetch all asset balances for the authenticated user.

Response

{
  "balances": [
    { "asset": "USDT", "free": 10000.00, "locked": 0 },
    { "asset": "BTC", "free": 0.5, "locked": 0 }
  ],
  "totalUsd": 43600.00
}
POST/api/depositAuth Required

Record Deposit

Record a new deposit. Requires admin confirmation to credit balance.

Parameters

NameTypeReq.Description
assetstringYesAsset symbol (BTC, ETH, USDT, etc.)
amountnumberYesDeposit amount
txidstringNoTransaction ID from wallet
descriptionstringNoOptional note

Request Body

{
  "asset": "USDT",
  "amount": 1000,
  "txid": "0xabc...",
  "description": "Test deposit"
}

Response

{
  "message": "Deposit recorded successfully. Awaiting confirmation.",
  "deposit": {
    "id": "uuid",
    "asset": "USDT",
    "amount": 1000,
    "status": "pending"
  }
}
POST/api/withdrawalAuth Required

Create Withdrawal

Request a withdrawal. Funds are locked and await admin confirmation.

Parameters

NameTypeReq.Description
assetstringYesAsset to withdraw
amountnumberYesAmount to withdraw
addressstringYesDestination wallet address

Request Body

{
  "asset": "BTC",
  "amount": 0.1,
  "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
}

Response

{
  "message": "Withdrawal request submitted successfully.",
  "withdrawal": {
    "id": "uuid",
    "asset": "BTC",
    "amount": 0.1,
    "fee": 0.0005,
    "status": "pending"
  }
}
GET/api/transactionsAuth Required

Transaction History

Fetch paginated transaction history with optional filters.

Parameters

NameTypeReq.Description
typestringNoFilter by type: deposit, withdrawal, trade
assetstringNoFilter by asset symbol
limitnumberNoResults per page (max 100)
offsetnumberNoPagination offset

Response

{
  "transactions": [
    {
      "id": "uuid",
      "type": "deposit",
      "asset": "USDT",
      "amount": 10000,
      "status": "completed",
      "createdAt": "2026-07-21T..."
    }
  ],
  "pagination": {
    "total": 42,
    "limit": 50,
    "hasMore": false
  }
}
POST/api/auth/registerPublic

Register

Create a new user account.

Parameters

NameTypeReq.Description
namestringYesFull name
emailstringYesEmail address
passwordstringYesPassword (min 8 characters)

Request Body

{
  "name": "John Doe",
  "email": "john@example.com",
  "password": "securePassword123"
}

Response

{
  "message": "Account created successfully",
  "user": { "id": "uuid", "name": "John Doe", "email": "john@example.com" }
}
POST/api/auth/kycAuth Required

Submit KYC

Submit KYC verification information and optional document.

Parameters

NameTypeReq.Description
fullNamestringYesFull legal name
documentfileNoSelfie or ID image

Request Body

FormData:
  fullName: "John Doe"
  document: [file]

Response

{
  "message": "KYC submitted successfully",
  "status": "pending",
  "kycName": "John Doe"
}
GET/api/user/profileAuth Required

Get Profile

Get the authenticated user's profile, balances, and recent transactions.

Response

{
  "user": {
    "id": "uuid",
    "name": "John Doe",
    "email": "john@example.com",
    "kycStatus": "verified",
    "role": "user"
  },
  "balances": [...],
  "transactions": [...]
}