Perps Hub

Perps Hub API URLs

Format

https://www.domainPerEnv/v1/{symmDeploymentId}/{multiaccount}

⚠️Multiaccounts must be valid checksummed addresses

{
  "BSC (56a)": {
    "prod": "https://www.perps-streaming.com/v1/56a/{multiaccount}"
  },
  "ARBITRUM (42161a)": {
    "prod": "https://www.perps-streaming.com/v1/42161a/{multiaccount}"
  },
  "MANTLE (5000a)": {
    "prod": "https://www.perps-streaming.com/v1/5000a/{multiaccount}"
  },
  "MODE (34443a)": {
    "prod": "https://www.perps-streaming.com/v1/34443a/{multiaccount}"
  },
  "BASE (8453a)": {
    "prod": "https://www.perps-streaming.com/v1/8453a/{multiaccount}"
  },
  "BERACHAIN (80094a)": {
    "prod": "https://www.perps-streaming.com/v1/80094a/{multiaccount}"
  },
  "COTI (2632500a)": {
    "prod": "https://www.perps-streaming.com/v1/2632500a/{multiaccount}"
  },
  "SPOOKY (250a)": {
    "prod": "https://www.perps-streaming.com/v1/250a/{multiaccount}"
  }
}

Perps Hub Endpoints:

Streaming

Paths

  1. GET /contract-symbols

  2. GET /get_locked_params/<symbol>

  3. GET /price-range/<symbol>

  4. GET /open-interest

  5. GET /notional_cap/<symbol>

  6. GET /mark-price/<symbol>

  7. GET /get_funding_info

  8. POST /position_state/<offset>/<size>

    1. Request Body: {quote_id: number}

    2. Response Status: 200 or 404

    3. Response Body (200): { count: number; position_state: { id: string; quote_id: number; filled_amount_open: number; filled_amount_close: number; action_status: 'failed' | 'success'; last_seen_action: string; failure_type: string; order_type: number; create_time: number; modify_time: number; counterparty_address: string; error_code: string; state_type: string; }[]; };

Examples

Instant trading

Paths

  1. GET /instant_close/<partyA>

    1. Response Status: 200

    2. Response: {quote_id: number, quantity_to_close: number, close_price: number}[]

  2. POST /instant_open (tbc)

  3. POST /instant_close (⚠️This endpoint requires an authorization: Bearer {token} header. This can be obtained from the /login endpoint.)

    1. Request Body: {close_price: string, quantity_to_close: string, quote_id: number}

    2. Response Status: 200 or 400

    3. Response Body: In case of 400 there will be a message string in body

  4. GET /nonce/<partyA>

    1. Response Status: 200

    2. Response Body: {nonce: string}

  5. POST /login

    1. Response Status: 200 or 400

    2. Response Body: In case of 400 there will be a message string in body giving further details

Examples

PartyB Contract Addresses

Chain
PartyB Address

BASE

0x1EcAbF0Eba136920677C9575FAccee36f30592cf

ARBITRUM

0x00c069d68bc7420740460dbc3cc3fff9b3742421

MANTLE

0x12de0352dd4187af5797f5147c4179f9624346e2

BNB

0xd5a075c88a4188d666fa1e4051913be6782982da

MODE

0x87fc464fa528260f1eeab94fa20f73fed8536eb7

BERA

0x8141c1840F7D190Cd24239C22b1e560e08999B12

SONIC

0x7D387771f6E23f353a4afCE21af521875C0825D0

COTI

0x61109A6Eb070a860B1Da2A38f93ca2B884B54f90

Last updated