API Reference
Complete API documentation
Complete API documentation for all Torque endpoints. Reference for checkout, Enso integration, analytics, business APIs, & webhooks.
Base URL & Authentication
Base URL
https://app.torque.fi/apihttp://localhost:3000/apiAuthentication
Most endpoints require Bearer token authentication. Include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEYRate Limits
100 requests per minute per API key. Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Table of Contents
Checkout APIs
POST /api/torque-checkout
Generate a checkout session for products.
Authentication: Required (Bearer token)
{
"businessId": "string (required)",
"cart": {
"items": [
{
"productId": "string (required) - Torque product ID",
"quantity": "number (required) - Must be > 0",
"variant": "string (optional)",
"metadata": "object (optional)"
}
]
},
"customerData": {
"email": "string (optional)",
"name": "string (optional)",
"metadata": "object (optional)"
},
"options": {
"expiresIn": "number (optional) - Milliseconds, default 24 hours",
"metadata": "object (optional)"
}
}Response
{
"success": true,
"checkoutUrl": "string - Full checkout URL",
"expiresAt": "string - ISO 8601 timestamp",
"cartSummary": {
"itemCount": "number",
"productCount": "number",
"estimatedTotal": "number"
},
"business": {
"id": "string",
"name": "string",
"logo": "string (optional)"
}
}Error Responses
400- Missing required fields401- Invalid or missing API key403- Business inactive or API key mismatchPOST /api/checkout/generate-link
Generate a checkout link for a cart (legacy endpoint).
Authentication: Required (Bearer token)
{
"businessId": "string (required)",
"cart": {
"items": [
{
"productId": "string (required)",
"quantity": "number (required)"
}
]
},
"customerData": "object (optional)",
"options": {
"expiresIn": "number (optional)",
"metadata": "object (optional)"
}
}GET /api/checkout/order-status/[orderId]
Get order status by order ID.
Authentication: Required (Bearer token)
{
"orderId": "string",
"status": "pending|paid|shipped|delivered|cancelled|refunded",
"total": "number",
"currency": "string",
"items": [
{
"productId": "string",
"quantity": "number",
"price": "number"
}
],
"createdAt": "string",
"updatedAt": "string"
}Enso Integration APIs
POST /api/enso/routes
Get trade routes from Enso Finance.
Authentication: Not required
{
"fromAddress": "string (required) - Wallet address",
"chainId": "number (optional) - Default 1",
"tokenIn": "string|array (required) - Token address(es)",
"tokenOut": "string|array (required) - Token address(es)",
"amountIn": "string|array (required) - Amount(s) in wei",
"slippage": "number|string (optional) - Basis points, default 50 (0.5%)",
"routingStrategy": "string (optional) - 'delegate' or 'router', default 'delegate'"
}Response
{
"routes": [
{
"id": "string",
"tx": {
"to": "string",
"data": "string",
"value": "string",
"gas": "string",
"chainId": "string"
},
"estimatedGas": "string",
"outputAmount": "string",
"priceImpact": "number"
}
],
"bestRoute": {
"id": "string",
"tx": {
"to": "string",
"data": "string",
"value": "string"
},
"outputAmount": "string",
"priceImpact": "number"
}
}POST /api/enso/approval
Get approval transaction data for token spending.
Authentication: Not required
{
"fromAddress": "string (required)",
"tokenAddress": "string (required)",
"chainId": "number (optional) - Default 1",
"amount": "string (required) - Amount in wei",
"routingStrategy": "string (optional) - Default 'router'"
}Response
{
"approvalNeeded": true,
"approvalData": {
"to": "string",
"data": "string",
"value": "string",
"chainId": "number"
}
}GET /api/enso/tokens
Get supported tokens for Enso integration.
Query Parameters: chainId (optional)
GET /api/enso/networks
Get supported networks for Enso integration.
GET /api/enso/balances
Get token balances via Enso.
Query Parameters: address (required), chainId (optional)
GET /api/enso/aave-markets
Get Aave market information.
Query Parameters: chainId (optional)
GET /api/enso/positions/tokenized
Get tokenized positions.
Query Parameters: address (required), chainId (optional)
GET /api/enso/positions/nontokenized
Get non-tokenized positions.
Query Parameters: address (required), chainId (optional)
POST /api/enso/bundle
Bundle multiple actions into a single transaction.
Authentication: Not required
Moralis/Analytics APIs
GET /api/moralis/balances
Get wallet token balances.
Query Parameters: address (required), chain (optional), limit (optional), exclude_spam (optional), exclude_unverified_contracts (optional)
GET /api/moralis/wallet-history
Get wallet transaction history.
Query Parameters: address (required), chain (optional), limit (optional)
GET /api/moralis/wallet-pnl
Get wallet profit & loss.
Query Parameters: address (required), chain (optional)
GET /api/moralis/token-price-history
Get token price history.
Query Parameters: tokenAddress (required), chain (optional), timeframe (optional: '1d', '7d', '30d', '1y')
GET /api/moralis/token-top-gainers
Get top gaining tokens.
Query Parameters: chain (optional), limit (optional)
GET /api/moralis/trending-tokens
Get trending tokens.
Query Parameters: chain (optional), limit (optional)
Business APIs
POST /api/business/notify
Send notification to business.
Authentication: Not required (internal use)
{
"businessId": "string (required)",
"alertType": "string (required) - e.g., 'order-confirmation'",
"subject": "string (required)",
"message": "string (required)",
"metadata": "object (optional)"
}GET /api/products
Get all products for a business.
Authentication: Required (Bearer token)
Query Parameters: businessId (required), status (optional: 'active', 'inactive', 'draft', 'archived')
GET /api/products/[productId]
Get product by ID.
Authentication: Required (Bearer token)
GET /api/products/subscriptions
Get subscription products.
Authentication: Required (Bearer token)
Query Parameters: businessId (required)
Assistant/AI APIs
POST /api/assistant/chat
Chat with Torque AI assistant.
Authentication: Not required
{
"messages": [
{
"role": "user|assistant",
"content": "string"
}
],
"context": {
"walletAddress": "string (optional)",
"chainId": "number (optional)",
"localCurrency": "string (optional)",
"currencyRate": "number (optional)",
"portfolioData": "object (optional)",
"personality": "string (optional)"
},
"conversationId": "string (optional)"
}Response
{
"message": {
"role": "assistant",
"content": "string"
},
"functionCalls": [
{
"name": "string",
"arguments": "object"
}
],
"conversationId": "string"
}POST /api/assistant/functions
Get available AI assistant functions.
Authentication: Not required
POST /api/assistant/memories
Manage AI assistant memories.
Authentication: Not required
{
"action": "add|search|update|delete",
"userId": "string (required)",
"memory": "string (optional)",
"query": "string (optional)",
"memoryId": "string (optional)"
}Webhooks
POST /api/webhooks/order-update
Update order status via webhook.
Authentication: Not required (should use webhook secret in production)
{
"orderId": "string (required)",
"status": "string (required) - 'created'|'paid'|'shipped'|'delivered'|'cancelled'|'refunded'",
"customerData": "object (optional)",
"metadata": "object (optional)"
}Webhook Events
payment.completed- Payment completedpayment.failed- Payment failedsession.expired- Checkout session expiredorder.created- Order createdorder.paid- Order paidorder.shipped- Order shippedorder.delivered- Order deliveredorder.cancelled- Order cancelledorder.refunded- Order refundedWebhook Payload Format
{
"event": "string",
"timestamp": "number",
"data": {
// Event-specific data
}
}Other APIs
POST /api/transfer/send-token
Send token transfer.
Authentication: Not required
{
"senderAddress": "string (required)",
"recipientAddress": "string (required)",
"amount": "string (required)",
"currency": "string (required)",
"signature": "string (required)",
"nonce": "string (required)",
"network": "string (optional) - Default 'ethereum'"
}GET /api/token-prices
Get token prices.
Query Parameters: symbols (required) - Comma-separated token symbols
GET /api/token-price-history
Get token price history.
Query Parameters: symbol (required), timeframe (optional: '1d', '7d', '30d', '1y')
GET /api/convex/user-preferences
Get user preferences.
Query Parameters: walletAddress (required)
POST /api/convex/user-preferences
Update user preferences.
Authentication: Not required
GET /api/convex/user-profiles
Get user profile.
Query Parameters: walletAddress (required)
POST /api/convex/user-profiles
Update user profile.
Authentication: Not required
Error Codes
Common Error Codes
MISSING_FIELDS (400)- Required fields are missingUNAUTHORIZED (401)- Invalid or missing API keyINVALID_API_KEY (401)- API key is invalidBUSINESS_NOT_FOUND (404)- Business not foundBUSINESS_INACTIVE (403)- Business is not activePRODUCTS_NOT_FOUND (400)- Products not foundINTERNAL_ERROR (500)- Internal server errorError Response Format
{
"error": "ERROR_CODE",
"message": "Human-readable error message",
"details": {
"field": "Additional error details"
}
}Example Request
curl -X POST https://app.torque.fi/api/torque-checkout \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"businessId": "j1234567890abcdef",
"cart": {
"items": [
{
"productId": "j0987654321fedcba",
"quantity": 1
}
]
},
"customerData": {
"email": "customer@example.com"
}
}'