API

Challenge4Trading exposes public backend endpoints used for market data, derivatives metrics, protocol state, and frontend execution support.

API Profile

  • Public JSON endpoints
  • Production-facing read API
  • Backed by the live C4T infrastructure on Arbitrum
  • Designed for frontend usage, analytics, and third-party integrations

Integration Scope

For exchange and derivatives integrations, the most useful public surfaces are:

  • market metadata
  • realtime prices
  • fee configuration
  • open positions and open orders
  • trader history
  • health/status checks

Base URL

Use the deployed C4T backend base URL, then append the relative paths below.

Examples in this page are shown as:

GET /market/snapshot
GET /market/realtime-prices
GET /market/volume-24h

Market Data Endpoints

GET /health

Lightweight health check for service availability and chain identification.

Typical response:

{
  "ok": true,
  "service": "chain4t-backend",
  "chainId": 42161
}

GET /assets

Returns the currently synced asset list from the market snapshot database.

Useful for:

  • listed markets
  • metadata
  • pricing identifiers
  • trading status

Typical response shape:

{
  "ok": true,
  "assets": [
    {
      "asset": "0x0000000000000000000000000000000000000001",
      "name": "BTC-USD",
      "pricingId": "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
      "oracleHasPrice": true,
      "lastOraclePriceX30": "68342123000000000000000000000000",
      "lastOraclePublishTime": "1779781200",
      "displayPrices": {
        "source": "pricingEngine",
        "midPriceX30": "68342123000000000000000000000000",
        "longPriceX30": "68345540100000000000000000000000",
        "shortPriceX30": "68338705900000000000000000000000",
        "spreadTotalPpm": "500"
      },
      "priceStatus": "OPEN",
      "tradingEnabled": true,
      "priceFreshness": {
        "color": "green",
        "stale": false,
        "maxPriceAgeSec": "600",
        "lastPublishTimeSec": "1779781200",
        "ageSec": "11"
      }
    }
  ]
}

GET /assets/:asset

Returns one asset snapshot by market address.

Useful for:

  • single-market lookups
  • admin/debug integrations
  • oracle freshness verification

GET /market/snapshot

Returns the current aggregated market snapshot, including:

  • chain metadata
  • protocol fee configuration
  • risk/limit values
  • asset list with market status annotations

This is the best single endpoint for a broad market overview.

Typical response shape:

{
  "ok": true,
  "chainId": 42161,
  "contracts": {
    "perp": "0x54A62D550e1754f3bB34ad80501A63815297Fccc",
    "usdc": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
    "lens": "0x38E795490E9fcd0C938b0A820dAAf2d6FcA3810d",
    "oracleRouter": "0x...",
    "pricingEngine": "0x..."
  },
  "fees": {
    "openFeeBps": "10",
    "closeFeeBps": "10",
    "liquidationFeeUsdc": "5000000",
    "oracleFeeUsdc": "0",
    "oneClickOpenFeeUsdc": "0"
  },
  "limits": {
    "maxPnlMultiple": "10",
    "maxPriceAge": "600",
    "maxSlippageBpsGlobal": "100",
    "maxRelayFeeUsdc": "0"
  },
  "assets": [
    {
      "asset": "0x0000000000000000000000000000000000000001",
      "name": "BTC-USD",
      "priceStatus": "OPEN",
      "tradingEnabled": true,
      "pricingId": "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"
    }
  ]
}

GET /market/realtime-prices

Returns the current realtime price surface per market.

Useful for:

  • offchain price monitoring
  • displayed long/short execution reference prices
  • spread analytics

Typical response shape:

{
  "ok": true,
  "asOf": "2026-05-26T12:00:00.000Z",
  "prices": [
    {
      "asset": "0x0000000000000000000000000000000000000001",
      "pricingId": "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",
      "offchainSource": "hermes_parsed",
      "offchainFeedLive": true,
      "oracleHasPrice": true,
      "oraclePriceX30": "68342123000000000000000000000000",
      "offchainPriceX30": "68342123000000000000000000000000",
      "longPriceX30": "68345540100000000000000000000000",
      "shortPriceX30": "68338705900000000000000000000000",
      "spreadTotalPpm": "500",
      "spreadSource": "pricingEngine"
    }
  ]
}

GET /market/volume-24h

Returns the last 24 hours of executed notional volume aggregated by market.

Methodology:

  • position openings in the last 24 hours are counted by size_usdc6
  • position closures in the last 24 hours are counted by size_usdc6
  • the endpoint aggregates both sides by market to expose public executed notional volume

Typical response shape:

{
  "ok": true,
  "windowHours": 24,
  "methodology": "24h notional volume is calculated from indexed position openings and indexed position closures over the last 24 hours, aggregated by asset using size_usdc6.",
  "asOf": "2026-05-26T12:00:00.000Z",
  "totals": {
    "openedVolumeUsdc6": "250000000",
    "closedVolumeUsdc6": "180000000",
    "totalVolumeUsdc6": "430000000",
    "openedTrades": 6,
    "closedTrades": 4,
    "totalTrades": 10
  },
  "markets": [
    {
      "asset": "0x0000000000000000000000000000000000000001",
      "assetName": "BTC-USD",
      "openedVolumeUsdc6": "150000000",
      "closedVolumeUsdc6": "80000000",
      "totalVolumeUsdc6": "230000000",
      "openedTrades": 3,
      "closedTrades": 2,
      "totalTrades": 5
    }
  ]
}

GET /market/volume-overview

Returns aggregate notional volume across all assets for listing, analytics, and market-overview use cases.

Useful for:

  • 7-day daily volume views
  • 30-day rolling totals
  • 3-month rolling totals
  • 12-month rolling totals
  • current total open interest snapshots

Typical response shape:

{
  "ok": true,
  "methodology": "Volume is calculated as gross notional size_usdc6 from indexed position openings and indexed position closures. Daily rows aggregate all assets together.",
  "asOf": "2026-05-26T12:00:00.000Z",
  "currentOpenInterestUsdc6": "15176923200",
  "daily": [
    {
      "day": "2026-05-26",
      "openedVolumeUsdc6": "69746154400",
      "closedVolumeUsdc6": "76669231200",
      "totalVolumeUsdc6": "146415385600",
      "openedTrades": 4,
      "closedTrades": 4,
      "totalTrades": 8
    }
  ],
  "rolling": {
    "30d": {
      "openedVolumeUsdc6": "485204201430",
      "closedVolumeUsdc6": "470032195772",
      "totalVolumeUsdc6": "955236397202",
      "openedTrades": 82,
      "closedTrades": 82,
      "totalTrades": 164
    }
  }
}

Derivatives Metrics Endpoints

These are the most relevant public surfaces for derivatives-oriented integrations.

GET /positions/open

Returns open positions with live-enough derived fields for frontend and monitoring usage.

Useful for:

  • open interest style monitoring
  • live position inventories
  • current market exposure views

Typical response shape:

{
  "ok": true,
  "positions": [
    {
      "positionId": "88",
      "trader": "0xabc...",
      "asset": "0x0000000000000000000000000000000000000001",
      "assetName": "BTC-USD",
      "isLong": true,
      "sizeUsdc6": "477670000",
      "collateralUsdc6": "4776700",
      "entryPriceX8": "7823821090417",
      "leverageX": "100",
      "priceStatus": "OPEN"
    }
  ]
}

GET /orders/open

Returns currently active orders.

Useful for:

  • pending order monitoring
  • delayed-entry market state
  • frontend order tables

GET /positions/list

Supports filtered historical position queries.

Query params:

  • trader
  • status=OPEN|CLOSED|ALL
  • asset
  • limit
  • offset

GET /orders/list

Supports filtered historical order queries.

Query params:

  • trader
  • status=ACTIVE|EXECUTED|CANCELLED|ALL
  • asset
  • limit
  • offset

GET /positions/:id

Returns a detailed single-position view including derived live/risk fields when applicable.

GET /traders/:address/trades

Returns trader-specific trade history and useful account-level trade views.

Fee and Pool Endpoints

GET /fees

Returns the current public fee configuration.

Typical response:

{
  "ok": true,
  "openFeeBps": "10",
  "closeFeeBps": "10",
  "liquidationFeeUsdc": "5000000",
  "oracleFeeUsdc": "0",
  "oneClickOpenFeeUsdc": "0"
}

GET /pool/balance

Returns:

  • protocol pool balance
  • raw USDC balance on the perp contract

Typical response:

{
  "ok": true,
  "poolBalanceUsdc6": "209010000",
  "usdcBalancePerpUsdc6": "209010000"
}

Realtime Endpoint

GET /stream/trading

Server-Sent Events stream for:

  • worker status
  • open positions
  • open orders
  • trader-specific snapshots

Query options:

  • channels=workers,positions,orders,trader
  • trader=0x...

This endpoint is primarily intended for frontend monitoring and dashboards rather than simple polling integrations.

Notes for Integrators

  • numeric values may be returned as strings
  • prices use fixed-point representations such as X30 and X8
  • markets can become temporarily unavailable when oracle freshness conditions are not met
  • use defensive parsing and do not hard-code assumptions about optional fields

Recommended CoinGecko-Relevant Endpoints

If the goal is to review C4T as a decentralized derivatives venue, the most relevant public surfaces are:

  1. GET /health
  2. GET /market/snapshot
  3. GET /market/realtime-prices
  4. GET /market/volume-overview
  5. GET /market/volume-24h
  6. GET /fees
  7. GET /positions/open
  8. GET /orders/open
  9. GET /pool/balance

These endpoints together provide:

  • exchange status
  • market list
  • displayed execution prices
  • rolling aggregate exchange volume
  • 24h notional volume by market
  • fee configuration
  • live derivatives state
  • pool information

Public Verification Post Draft

Suggested X post for CoinGecko verification:

Official verification for CoinGecko listing review:

Challenge4Trading Perp (C4T) is our official decentralized perpetual trading protocol on Arbitrum.

Official links:
- Website: https://www.challenge4trading.com
- App: https://app.challenge4trading.com
- Docs: https://docs.challenge4trading.com

This post confirms that these domains and public resources are officially operated by the Challenge4Trading team.

Official References