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

Production:https://app.torque.fi/api
Development:http://localhost:3000/api

Authentication

Most endpoints require Bearer token authentication. Include your API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Rate Limits

100 requests per minute per API key. Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

Checkout APIs

POST /api/torque-checkout

Generate a checkout session for products.

Authentication: Required (Bearer token)

request.json
{
  "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

response.json
{
  "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 fields
401- Invalid or missing API key
403- Business inactive or API key mismatch

POST /api/checkout/generate-link

Generate a checkout link for a cart (legacy endpoint).

Authentication: Required (Bearer token)

request.json
{
  "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)

response.json
{
  "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

request.json
{
  "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

response.json
{
  "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

request.json
{
  "fromAddress": "string (required)",
  "tokenAddress": "string (required)",
  "chainId": "number (optional) - Default 1",
  "amount": "string (required) - Amount in wei",
  "routingStrategy": "string (optional) - Default 'router'"
}

Response

response.json
{
  "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)

request.json
{
  "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

request.json
{
  "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

response.json
{
  "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

request.json
{
  "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)

request.json
{
  "orderId": "string (required)",
  "status": "string (required) - 'created'|'paid'|'shipped'|'delivered'|'cancelled'|'refunded'",
  "customerData": "object (optional)",
  "metadata": "object (optional)"
}

Webhook Events

payment.completed- Payment completed
payment.failed- Payment failed
session.expired- Checkout session expired
order.created- Order created
order.paid- Order paid
order.shipped- Order shipped
order.delivered- Order delivered
order.cancelled- Order cancelled
order.refunded- Order refunded

Webhook Payload Format

webhook-payload.json
{
  "event": "string",
  "timestamp": "number",
  "data": {
    // Event-specific data
  }
}

Other APIs

POST /api/transfer/send-token

Send token transfer.

Authentication: Not required

request.json
{
  "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 missing
UNAUTHORIZED (401)- Invalid or missing API key
INVALID_API_KEY (401)- API key is invalid
BUSINESS_NOT_FOUND (404)- Business not found
BUSINESS_INACTIVE (403)- Business is not active
PRODUCTS_NOT_FOUND (400)- Products not found
INTERNAL_ERROR (500)- Internal server error

Error Response Format

error-response.json
{
  "error": "ERROR_CODE",
  "message": "Human-readable error message",
  "details": {
    "field": "Additional error details"
  }
}

Example Request

example-request.sh
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"
    }
  }'
Was this helpful?