Skip to main content
This is a mixed-auth domain. getApplicationConfig is session-authenticated (call it after a user logs in). The five reporting methods are backend-authenticated: set your application secret key once with sdk.setServerKey("sk_..."), and the raw key is sent in the x-server-key header on each reporting request. There is no token exchange. See Backend Authentication.
() => Promise<ApplicationConfigResponse>
Retrieve application configuration for the current client ID. Session-authenticated.Returns: ApplicationConfigResponse:
  • id: string — application UUID
  • name: string — application name
  • allowedOrigins: string[] — CORS-allowed origins
  • webhookUrl?: string — webhook URL for event delivery
  • vaultContractAddress: string — vault contract address for this application
  • clientId: string — application client ID, embedded in on-chain deposit calls
(params?: ListAppOrdersParams) => Promise<ListAppOrdersResponse>
List orders placed by the application’s users. Requires backend authentication (set the sk_... server key first).Parameters:
  • params?: ListAppOrdersParams
    • page?: number — page number, starts from 1; at most 10,000, the last page this listing counts towards
    • pageSize?: number — items per page (max 100)
    • status?: string — filter by order status (e.g. SUBMITTED, PARTIALLY_FILLED, FILLED, SETTLED, CANCELLED, EXPIRED, REJECTED)
    • userId?: string — filter by user UUID
    • tradingPairId?: string — filter by trading pair UUID
    • side?: string — filter by side: BUY or SELL
    • orderType?: string — filter by order type (e.g. LIMIT, MARKET, STOP_LOSS, TAKE_PROFIT, STOP_LIMIT, TRAILING_STOP)
Returns: ListAppOrdersResponse:
  • orders: AppOrder[] — matching orders
  • total: number — matching orders, exact up to pageSize × 10,000 rows and saturates there (the cap, not the application’s lifetime total); when it equals pageSize × 10,000, read it as a lower bound (>=), not an exact count
  • page: number — current page number
  • pageSize: number — items per page
  • totalPages: number — pages at the requested page size, exact up to 10,000 and saturates there (the last page this listing reaches)
(params?: ListAppUsersParams) => Promise<ListAppUsersResponse>
List the application’s users. Requires backend authentication.Parameters:
  • params?: ListAppUsersParams
    • page?: number — page number, starts from 1
    • pageSize?: number — items per page (max 100)
    • isActive?: boolean — filter by active status
    • accountType?: string — filter by account type: master or sub
    • address?: string — filter by wallet address (partial match, case-insensitive)
Returns: ListAppUsersResponse:
  • users: AppUser[] — matching users
  • total: number — total number of users
  • page: number — current page number
  • pageSize: number — items per page
  • totalPages: number — total number of pages
(params?: ListAppMovementsParams) => Promise<ListAppMovementsResponse>
List ledger movements (deposits, withdrawals, trades, fees, etc.) for the application’s users. Requires backend authentication.Parameters:
  • params?: ListAppMovementsParams
    • page?: number — page number, starts from 1; at most 10,000, the last page this listing counts towards
    • pageSize?: number — items per page (max 100)
    • userId?: string — filter by user UUID
    • transactionType?: string — filter by transaction type (e.g. DEPOSIT, WITHDRAWAL, TRADE, FEE, FUNDING, LIQUIDATION, INTEREST, REWARD)
    • entryType?: string — filter by entry type (e.g. CREDIT, DEBIT, LOCK, UNLOCK, FEE)
    • assetId?: string — filter by asset UUID
Returns: ListAppMovementsResponse:
  • movements: AppMovement[] — matching movements
  • total: number — matching movements, exact up to pageSize × 10,000 rows and saturates there (the cap, not the application’s lifetime total); when it equals pageSize × 10,000, read it as a lower bound (>=), not an exact count
  • page: number — current page number
  • pageSize: number — items per page
  • totalPages: number — pages at the requested page size, exact up to 10,000 and saturates there (the last page this listing reaches)
(params?: ListAppBalancesParams) => Promise<ListAppBalancesResponse>
List user balances held within the application. Requires backend authentication.Parameters:
  • params?: ListAppBalancesParams
    • page?: number — page number, starts from 1
    • pageSize?: number — items per page (max 100)
    • userId?: string — filter by user UUID
    • assetId?: string — filter by asset UUID
Returns: ListAppBalancesResponse:
  • balances: AppBalance[] — matching balances
  • total: number — total matching balances
  • page: number — current page number
  • pageSize: number — items per page
  • totalPages: number — total number of pages
(params?: GetAppStatsParams) => Promise<GetAppStatsResponse>
Fetch aggregate volume and fee metrics for the authenticated application. Requires backend authentication.Stats are scoped to trades where this application’s users were the taker.Parameters:
  • params?: GetAppStatsParams
    • since?: string — ISO 8601 datetime, e.g. "2026-01-01T00:00:00Z". Omit for all-time
Returns: GetAppStatsResponse:
  • volume: string — total quote volume (normalized, human-readable)
  • makerFee: string — total maker fees collected
  • takerFee: string — total taker fees collected
  • applicationTakerFee: string — application revenue share from taker fees
  • tradeCount: number — total number of trades
Example: