Futures API

Set position mode and leverage

post
Path parameters
symbolstringRequired
Body
crossbooleanOptional

Position type true = cross, false = isolated

leverageinteger · int32Optional

Position leverage 1~upper limit

Responses
200

OK

application/json
Responsestring
post
/v1/contracts/positions/{symbol}/settings
POST /v1/contracts/positions/{symbol}/settings HTTP/1.1
Host: dex-api.benpay.com/
Content-Type: application/json
Accept: */*
Content-Length: 27

{
  "cross": true,
  "leverage": 1
}
200

OK

text

Transfer margin in or out for a position

post
Path parameters
symbolstringRequired
Body
addMarginnumberOptional

Margin to add or remove, negative means remove

Responses
200

OK

application/json
Responsestring
post
/v1/contracts/positions/{symbol}/margin
POST /v1/contracts/positions/{symbol}/margin HTTP/1.1
Host: dex-api.benpay.com/
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "addMargin": 1
}
200

OK

text

Create an order

post
Body
clientOrderIdstringOptional

Custom client OrderID, optional

typestring · enumOptional

Order type: LIMIT = limit order, MARKET = market order

Possible values:
directionstring · enumOptional

Order direction LONG, SHORT

Possible values:
symbolstringOptional

Trading pair, e.g. XBTC

pricenumberOptional

Order price

quantitynumberOptional

Order quantity

fillOrKillbooleanOptional

FOK (Fill or Kill) flag fully filled or canceled

immediateOrCancelbooleanOptional

IOC (Immediate or Cancel) flag execute immediately or cancel

postOnlybooleanOptional

PostOnly flag maker only

hiddenbooleanOptional

Hidden flag

reduceOnlybooleanOptional

ReduceOnly flag reduce position only, will not open reverse position

Responses
200

OK

application/json
Responsestring
post
/v1/contracts/orders
POST /v1/contracts/orders HTTP/1.1
Host: dex-api.benpay.com/
Content-Type: application/json
Accept: */*
Content-Length: 188

{
  "clientOrderId": "text",
  "type": "LIMIT",
  "direction": "LONG",
  "symbol": "text",
  "price": 1,
  "quantity": 1,
  "fillOrKill": true,
  "immediateOrCancel": true,
  "postOnly": true,
  "hidden": true,
  "reduceOnly": true
}
200

OK

text

Cancel order by specified ID or symbol

post
Path parameters
idOrSymbolstringRequired
Responses
200

OK

application/json
Responsestring
post
/v1/contracts/orders/{idOrSymbol}/cancel
POST /v1/contracts/orders/{idOrSymbol}/cancel HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

text

Cancel all orders

post
Query parameters
symbolstringOptionalDefault: ""
Responses
200

OK

*/*
post
/v1/contracts/orders/cancel
POST /v1/contracts/orders/cancel HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "ANY_ADDITIONAL_PROPERTY": 1
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Total amount of all users' open positions

get
Responses
200

OK

*/*
get
/v1/market/positions
GET /v1/market/positions HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "ANY_ADDITIONAL_PROPERTY": 1
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query all positions

get
Responses
200

OK

*/*
get
/v1/contracts/positions
GET /v1/contracts/positions HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": [
    {
      "id": "text",
      "symbolId": 1,
      "userId": 1,
      "cross": true,
      "leverage": 1,
      "riskLevel": 1,
      "maxQuantity": 1,
      "margin": 1,
      "realizedPNL": 1,
      "symbol": "text",
      "liquidationPrice": 1,
      "createdAt": 1,
      "updatedAt": 1,
      "direction": "LONG",
      "quantity": 1,
      "entryPrice": 1,
      "minimumMaintenanceMarginRate": 1,
      "empty": true
    }
  ],
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query position by symbol, return null if not initialized

get
Path parameters
symbolstringRequired
Responses
200

OK

*/*
get
/v1/contracts/positions/{symbol}
GET /v1/contracts/positions/{symbol} HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "id": "text",
    "symbolId": 1,
    "userId": 1,
    "cross": true,
    "leverage": 1,
    "riskLevel": 1,
    "maxQuantity": 1,
    "margin": 1,
    "realizedPNL": 1,
    "symbol": "text",
    "liquidationPrice": 1,
    "createdAt": 1,
    "updatedAt": 1,
    "direction": "LONG",
    "quantity": 1,
    "entryPrice": 1,
    "minimumMaintenanceMarginRate": 1,
    "empty": true
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query order by order ID

get
Path parameters
orderIdinteger · int64Required
Responses
200

OK

*/*
get
/v1/contracts/orders/{orderId}
GET /v1/contracts/orders/{orderId} HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "id": 1,
    "clientOrderId": "text",
    "sequenceId": 1,
    "baseCurrencyId": 1,
    "quoteCurrencyId": 1,
    "userId": 1,
    "symbolId": 1,
    "quantity": 1,
    "unfilledQuantity": 1,
    "type": "LIMIT",
    "status": "PENDING",
    "direction": "LONG",
    "features": 1,
    "fillPrice": 1,
    "price": 1,
    "makerFeeRate": 1,
    "takerFeeRate": 1,
    "fee": 1,
    "createdAt": 1,
    "updatedAt": 1,
    "frozenMargin": 1,
    "frozenQuantity": 1,
    "finalStatus": true
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query order match records

get
Path parameters
orderIdinteger · int64Required
Responses
200

OK

*/*
get
/v1/contracts/orders/{orderId}/matches
GET /v1/contracts/orders/{orderId}/matches HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": [
    {
      "taker": true,
      "price": 1,
      "quantity": 1,
      "fee": 1,
      "createdAt": 1
    }
  ],
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query open orders

get
Responses
200

OK

*/*
get
/v1/contracts/orders/open
GET /v1/contracts/orders/open HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": [
    {
      "id": 1,
      "clientOrderId": "text",
      "sequenceId": 1,
      "baseCurrencyId": 1,
      "quoteCurrencyId": 1,
      "userId": 1,
      "symbolId": 1,
      "quantity": 1,
      "unfilledQuantity": 1,
      "type": "LIMIT",
      "status": "PENDING",
      "direction": "LONG",
      "features": 1,
      "fillPrice": 1,
      "price": 1,
      "makerFeeRate": 1,
      "takerFeeRate": 1,
      "fee": 1,
      "createdAt": 1,
      "updatedAt": 1,
      "frozenMargin": 1,
      "frozenQuantity": 1,
      "finalStatus": true
    }
  ],
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query open order by order ID

get
Path parameters
orderIdinteger · int64Required
Responses
200

OK

*/*
get
/v1/contracts/orders/open/{orderId}
GET /v1/contracts/orders/open/{orderId} HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "id": 1,
    "clientOrderId": "text",
    "sequenceId": 1,
    "baseCurrencyId": 1,
    "quoteCurrencyId": 1,
    "userId": 1,
    "symbolId": 1,
    "quantity": 1,
    "unfilledQuantity": 1,
    "type": "LIMIT",
    "status": "PENDING",
    "direction": "LONG",
    "features": 1,
    "fillPrice": 1,
    "price": 1,
    "makerFeeRate": 1,
    "takerFeeRate": 1,
    "fee": 1,
    "createdAt": 1,
    "updatedAt": 1,
    "frozenMargin": 1,
    "frozenQuantity": 1,
    "finalStatus": true
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query historical orders

get
Query parameters
rangestringOptionalDefault: ""
symbolstringOptionalDefault: ""
offsetIdinteger · int64OptionalDefault: 0
limitinteger · int32OptionalDefault: 100
Responses
200

OK

*/*
get
/v1/contracts/orders/closed
GET /v1/contracts/orders/closed HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "hasMore": true,
    "nextOffsetId": 1,
    "results": [
      {
        "id": 1,
        "clientOrderId": "text",
        "sequenceId": 1,
        "baseCurrencyId": 1,
        "quoteCurrencyId": 1,
        "userId": 1,
        "symbolId": 1,
        "quantity": 1,
        "unfilledQuantity": 1,
        "type": "LIMIT",
        "status": "PENDING",
        "direction": "LONG",
        "features": 1,
        "fillPrice": 1,
        "price": 1,
        "makerFeeRate": 1,
        "takerFeeRate": 1,
        "fee": 1,
        "createdAt": 1,
        "updatedAt": 1,
        "frozenMargin": 1,
        "frozenQuantity": 1,
        "finalStatus": true
      }
    ],
    "range": "text"
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Paginated query of user order clearing records

get
Query parameters
rangestringOptional

Query range (data shard)

Example: 202502
symbolstringOptional

Trading pair name

Example: XBTC
directionstringOptional

Direction. LONG/SHORT/empty string

Example: LONG
fromMillisnumberOptional

Start time in milliseconds

Default: 0LExample: 1738339200000
toMillisnumberOptional

End time in milliseconds

Default: 0LExample: 1739894400000
offsetIdnumberOptional

Order ID offset (nextOffsetId from last query)

Default: 0Example: 0
limitnumberOptional

Page size

Default: 0Example: 100
Responses
200

OK

*/*
get
/v1/contracts/match/clearings
GET /v1/contracts/match/clearings HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "hasMore": true,
    "nextOffsetId": 1,
    "results": [
      {
        "orderId": 1,
        "counterOrderId": 1,
        "type": "TAKER",
        "sequenceId": 1,
        "userId": 1,
        "counterUserId": 1,
        "symbolId": 1,
        "price": 1,
        "quantity": 1,
        "direction": "LONG",
        "feeCurrencyId": 1,
        "fee": 1,
        "orderCreatedAt": 1,
        "createdAt": 1
      }
    ],
    "range": "text"
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Paginated query of user fund flow records

get
Query parameters
rangestringOptional

Query range (data shard)

Example: 202502
fromMillisnumberOptional

Start time in milliseconds

Default: 0LExample: 1738339200000
toMillisnumberOptional

End time in milliseconds

Default: 0LExample: 1739894400000
offsetIdstringOptional

Order ID offset (nextOffsetId from last query)

Default: 0Example: 0
limitnumberOptional

Page size

Default: 0Example: 100
Responses
200

OK

*/*
get
/v1/contracts/fund/flows
GET /v1/contracts/fund/flows HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "hasMore": true,
    "nextOffsetId": "text",
    "results": [
      {
        "createdAt": 1,
        "type": "text",
        "changed": 1,
        "currencyId": 1,
        "symbolId": 1
      }
    ],
    "range": "text"
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query futures trading fee rate

get
Query parameters
symbolstringOptionalDefault: ""
timestampinteger · int64OptionalDefault: 0
Responses
200

OK

*/*
get
/v1/contracts/fee/rate
GET /v1/contracts/fee/rate HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "taker": 1,
    "maker": 1,
    "timestamp": 1
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query futures balance

get
Responses
200

OK

*/*
get
/v1/contracts/balances
GET /v1/contracts/balances HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": [
    1
  ],
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Query position clearing history

get
Query parameters
rangestringOptionalDefault: ""
symbolstringOptionalDefault: ""
typestringOptionalDefault: ""
directionstringOptional
offsetIdinteger · int64OptionalDefault: 0
limitinteger · int32OptionalDefault: 100
Responses
200

OK

*/*
get
/v1/contracts/clearings/positions
GET /v1/contracts/clearings/positions HTTP/1.1
Host: dex-api.benpay.com/
Accept: */*
200

OK

{
  "success": true,
  "data": {
    "hasMore": true,
    "nextOffsetId": 1,
    "results": [
      {
        "id": 1,
        "orderId": 1,
        "counterOrderId": 1,
        "userId": 1,
        "counterUserId": 1,
        "symbolId": 1,
        "sequenceId": 1,
        "direction": "LONG",
        "type": "OPEN",
        "clearingPrice": 1,
        "fee": 1,
        "rate": 1,
        "quantityChanged": 1,
        "quantityAfterClearing": 1,
        "realizedPNLChanged": 1,
        "createdAt": 1
      }
    ],
    "range": "text"
  },
  "error": "text",
  "errorField": "text",
  "errorMessage": "text"
}

Last updated