Skip to main content

API Overview

The Cropr backend exposes a RESTful API built with NestJS and documented with Swagger/OpenAPI.

Base URL

https://api.cropr.finance

Authentication

Most API endpoints require authentication via JWT Bearer tokens:

Authorization: Bearer <your-jwt-token>

Tokens are obtained through the Authentication endpoint using Google OAuth.

Request Format

  • Content-Type: application/json
  • Accept: application/json

Response Format

All responses follow a consistent JSON structure:

{
"statusCode": 200,
"data": { ... },
"message": "Success"
}

Error Response

{
"statusCode": 400,
"message": "Error description",
"error": "Bad Request"
}

Rate Limiting

  • 100 requests per 60 seconds per client
  • Rate limit headers are included in responses
  • Exceeding the limit returns a 429 Too Many Requests status

Common Query Parameters

ParameterTypeDescription
chainIdnumberBlockchain network ID (1, 137, 42161, etc.; 999 for Solana)
walletAddressstringUser's wallet address
protocolstringDeFi protocol name (aave, compound, uniswap, etc.)

API Modules

ModuleBase PathDescription
Authentication/authGoogle OAuth and JWT management
Portfolio/Portfolio metrics and analytics
Tokens/Token balances and prices
DEX/dexDEX swap, cross-chain swap, liquidity, and pool data
Lending/lendingLending and borrowing operations
Staking/stakeStaking operations
Bridge/bridgeCross-chain bridge operations
Send & Receive/send-receiveToken transfers and receive QR codes
Hyperliquid/hyperliquidPerpetuals market data and deposit bridging
Vaults/vaultsVault deposit/withdraw
Exchange/exchangeCEX integration
Referral/referralReferral system
Rewards/rewardsCROPS rewards, eligibility, leaderboard
AI Insights/ai-insightsAI-powered token analysis and portfolio reports

WebSocket Events

Real-time updates are delivered via Socket.io:

const socket = io('https://api.cropr.finance');

// Listen for balance updates
socket.on('balanceUpdate', (data) => {
console.log('Balance updated:', data);
});

// Listen for transaction confirmations
socket.on('transactionConfirmed', (data) => {
console.log('Transaction confirmed:', data);
});

Swagger Documentation

Interactive API documentation is available at:

https://api.cropr.finance/api-docs

Powered by @nestjs/swagger, it provides:

  • Full endpoint documentation
  • Request/response schemas
  • Try-it-out functionality