Loading…
Integrate crypto buying, live Naira prices, wallet management, and OTC trading into your platform with a clean REST API.
Geerok uses session-based auth with httpOnly cookies. Here's the flow:
/api/auth/sign-in with email + passwordcredentials: "include" in all requests// 1. Sign in
await fetch("https://geerok.name.ng/api/auth/sign-in", {
method: "POST",
credentials: "include",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ email, password })
})
// 2. Make authenticated call
const res = await fetch("https://geerok.name.ng/api/user/wallet", {
credentials: "include"
})
const { balance } = await res.json()
console.log("Balance:", balance)All errors return JSON with an error field.
// Response format
{ "error": "Human-readable message" }
// Status codes
// 400 — Bad request / insufficient balance
// 401 — Unauthorized (not signed in)
// 403 — Forbidden (missing permission)
// 404 — Resource not found
// 503 — Exchange temporarily unavailable
// 500 — Internal error/api/auth/sign-upCreate a new account
{ "email": "user@example.com", "password": "min8chars", "fullName": "John Doe" }{ "success": true, "needsVerification": true }/api/auth/sign-inSign in and create session
{ "email": "user@example.com", "password": "password" }{ "success": true, "user": { "id": 1, "email": "..." } }/api/auth/sign-out AuthDestroy current session
{ "success": true }/api/auth/forgot-passwordSend reset email
{ "email": "user@example.com" }{ "success": true }/api/auth/reset-passwordReset password with token
{ "token": "...", "password": "new" }{ "success": true }/api/user/wallet AuthGet wallet balance
{ "balance": 25000.00 }/api/user/price?symbol=BTC AuthLive Naira price for any token
{ "symbol": "BTC", "naira_price": 98500000, "usdt_price": 61562, "provider": "P3" }/api/user/settingsPublic platform settings
{ "usd_ngn_rate": "1600", "min_deposit_naira": "5000" }/api/user/buy-crypto AuthPlace crypto buy order
{ "tokenSymbol": "BTC", "nairaAmount": 50000, "walletAddress": "bc1q..." }{ "success": true, "orderId": 42, "orderNumber": "GRK-1234567" }/api/user/otc-tokens AuthList Peer Exchange tokens
{ "tokens": [{ "id": 1, "ticker": "PI", "price_naira": 9000 }] }/api/user/otc-order AuthPlace OTC buy/sell order
{ "tokenId": 1, "nairaAmount": 5000, "walletAddress": "pi_addr", "type": "buy" }{ "success": true, "orderId": 43 }/api/user/deposit-infoBank accounts + min deposit
{ "bank_accounts": "[{...}]", "min_deposit": "5000" }/api/user/deposit AuthSubmit deposit after transfer
{ "amount_naira": 10000, "bank_name": "GTB", "reference": "TXN123456" }{ "success": true }/api/user/notifications AuthList notifications + unread count
{ "notifications": [...], "unreadCount": 3 }/api/user/notifications AuthMark all as read
{ "success": true }/api/user/kyc-tickets AuthList KYC support tickets
{ "tickets": [...] }/api/user/kyc-tickets AuthSubmit KYC ticket (deducts wallet)
{ "problemType": "...", "platform": "Bybit", "description": "..." }{ "success": true, "ticket": {...} }/api/user/sidra-appointments AuthList Sidra appointments
{ "appointments": [...] }/api/user/sidra-appointments AuthBook Sidra verification
{ "username": "...", "phone": "+234...", "preferred_date": "...", "preferred_time": "..." }{ "success": true, "appointment": {...} }/api/user/profile AuthGet authenticated user profile
{ "user": { "full_name": "John", "email": "..." } }/api/user/profile AuthUpdate profile
{ "full_name": "John", "phone": "+234..." }{ "success": true }/api/user/change-password AuthChange password
{ "currentPassword": "...", "newPassword": "..." }{ "success": true }Need higher limits? Email developers@geerok.name.ng