NAV

Auro Digital API

Overview

The Auro Digital API employs WebSockets for communication between the front-end and back-end services, allowing real-time data exchange. For developers aiming to programmatically interact with Auro Digital, a direct WebSocket connection to the back-end service can be established.

Please note, this API was initially designed for internal use, primarily for front-end development. Therefore, it may possess some complex payloads. Furthermore, it is subject to potential changes based on the evolving needs of the front-end application.

Connection Details

Base URL

Assuming your Auro Digital URL is https://test.aurodigital.ai/, your corresponding WebSocket URL would be: wss://test-backend.aurodigital.ai/v2.

The backend service adheres to the same IP whitelist policies as the front-end service. If you need to add (static) IP addresses to the whitelist, please contact our support team.

Pricing

Free
$0/month
  • 125K API credits included
  • No additional API credits
  • 1 RPS
  • 7 Days Trial
  • 25000 Web3 RPC Calls
  • 1 User(s)
Starter
$899/month ($999 for premium RPC)
  • 1M API credits included
  • $250 /1M API credits
  • 5 RPS
  • 50,000 Web3 RPC Calls
  • 2 User(s)
  • 30 days retention
Most Popular
Growth
$3199/month ($3299 for premium RPC)
  • 5M API credits included
  • $250 /1M API credits
  • 20 RPS
  • 100,000 Web3 RPC Calls
  • 3 User(s)
  • 30 days retention
Business
$6899/month ($6999 for premium RPC)
  • 15M API credits included
  • $225 /1M API credits
  • 50 RPS
  • 250,000 Web3 RPC Calls
  • 5 User(s)
  • 90 days retention

Request plan

Fill in your details and our team will reach out shortly.

JSON-RPC Schemagit

Name Type Description
jsonrpc string Only "2.0" is supported
id string This will be echoed back in responses or subscription payloads
method string Establishing the specific API to connect to. Documented below
params string Details regarding the specific API call. Documented below

API_GATEWAY

Login

Login to an account. Returns a token.

{
    "jsonrpc": "2.0",
    "id": "9cc1e382-ba9a-4992-80aa-fc77628a14d",
    "method": "login",
    "params": {
        "username": "admin",
        "password": "Admin@123"
    }
}

Request

Name Type Description
username string The user's login name.
password string The user's password.
{
    "jsonrpc": "2.0",
    "id": "9cc1e382-ba9a-4992-80aa-fc77628a14d",
    "result": {
        "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL210dWF0LWJh"
    }
}

Response

Name Type Description
token string JSON Web Token.

Subscribe_get_pair

Subscribe to a pair. Returns updates on all metrics of that pair on the given exchanges as well as consolidated order books and other metrics across the given exchanges.

{
    "jsonrpc": "2.0",
    "id": "6c1985bf-80ad-4bbc-86d0-6e682cdb764d",
    "method": "subscribe_get_pair",
    "params": {
        "pair": "BTC/USD",
        "exchanges": [
            "coinbasepro"
        ]   
   }
}

Request

Name Type Description
pair string The normalized symbol.
exchange array of object A list of cryptocurrency exchanges to use.
{
    "jsonrpc": "2.0",
    "id": "6c1985bf-80ad-4bbc-86d0-6e682cdb764d",
    "result": {
        "pair": "BTC/USD",
        "exchanges": [
            "coinbasepro"
        ],
        "order_book": {
            "columns": [
                "Price",
                "Size",
                "Exchange"
            ],
            "bids": [
                [
                    32800562.00007545,
                    10897.2,
                    "coinbasepro"
                ],
                [
                    84791055.49007545,
                    10897.1938683967,
                    "coinbasepro"
                ],
                [
                    150392079.09007546,
                    10897.1878189978,
                    "coinbasepro"
                ]
            ],
            "asks": [
                [
                    32798972.124043528,
                    10897.22,
                    "coinbasepro"
                ],
                [
                    84789656.45404352,
                    10897.2261317227,
                    "coinbasepro"
                ],
                [
                    150391041.25404352,
                    10897.2321811358,
                    "coinbasepro"
                ]
            ],
            "commission": 0.0,
            "timestamps": {
                "coinbasepro": 1600246762328
            },
            "done_at": [
                [
                    "fetch_order_book",
                    1600246763260
                ]
            ],
            "time_elapsed_after": [
                [
                    "fetch_order_book",
                    {
                        "coinbasepro": 932
                    }
                ]
            ]
        },
        "other_info": [
            {
                "title": "Liquidity Metrics",
                "columns": [
                    "bid",
                    "ask",
                ],
                "values": [
                    [
                        10897.2,
                        10897.22,
                    ]
                ]
            }
        ],
        "is_inverse": false,
        "time": 1600246763302
    }
}

Response

Name Type Description
pair string The normalized symbol.
exchange array of object A list of cryptocurrency exchanges to use.
order_book object A list of cryptocurrency exchanges to use.
-- columns array of string Description of the format in bids and asks.
-- bids array of string or number Bids aggregated across the specified exchanges.
-- asks array of string or number Asks aggregated across the specified exchanges.
-- commission number The administrator-defined fee that is applied on the order book prices.
-- timestamps number Unix timestamp in milliseconds.
-- done_at array of string or number Internal data structure. Please do not rely on this.
-- time_elapsed_after array of string or number Internal data structure. Please do not rely on this.
other_info array of object Internal data structure. Please do not rely on this.
is_inverse boolean Whether this is an inverse futures contract.
time number The Unix timestamp (in milliseconds) when the data in this payload is fetched.

get_tickers

feed of best bid and ask values for a specified crypto pair on the provided Liquidity venue(s).

{
"id": "b1b61f11-d34b-408b-ba46-cd6c1907252b",
"jsonrpc": "2.0",
"method": "get_tickers",
"params": {

    "pair": "ETH/BTC",
    "exchanges": ["okx-new_test"]

    }
}

Request

Name Type Description
pair string The normalized symbol.
exchange array of object A list of cryptocurrency liquidity venue to use.
{
"id": "b1b61f11-d34b-408b-ba46-cd6c1907252b",
"jsonrpc": "2.0",
    "result": {
    "best_bid": {
    "price": 0.06296,
    "size": 86.378417,
    "exchange": "okx-new_test",
    "timestamp": 1691055448
    },
"display_name": "okx-new_test"
    }
}

Request

Name Type Description
best_bid Object Contains the best bid data.(price,size,exchange,timestamps).
exchange array of object A list of cryptocurrency exchanges to use.

get_all_markets

Use the get_all_markets method to retrieve a list of all available exchanges and trading symbols. Please note, changes in the availability of symbols on the exchanges may not be immediately reflected in the response, so we recommend calling this method periodically.

{
    "jsonrpc": "2.0",
    "id": "22ad7310-b318-4eee-8618-b3c47ca2f225",
    "method": "get_all_markets"
}

Request

{
    "jsonrpc": "2.0",
    "id": "22ad7310-b318-4eee-8618-b3c47ca2f225",
    "result": [
        {
            "type": "SPOT",
            "normalized_symbol": "BTC/USDT",
            "exchange_id": "binance",
            "base": "BTC",
            "quote": "USDT",
            "is_inverse": false
        }
    ]
}

Response

Name Type Description
type string SPOT or FUTURES.
normalized_symbol string The unique identifier for a symbol in Access.
exchange_id string The name of the exchange as configured by your administrator.
base string The base currency.
quote string The quote currency.
is_inverse boolean Whether this is an inverse futures contract.

get_algo_executions

get all active orders

{
    "jsonrpc": "2.0",
    "id": "c407195b-4c35-483d-93f5-798b391dc710",
    "method": "get_algo_executions",
    "params": {
        "start_time": "2018-09-07T16:00:00.000Z",
        "end_time": "2020-09-07T16:00:00.000Z",
        "filters": [
            {
                "exchange_id": "coinbasepro",
                "normalized_symbol": "BTC/USD"
            }
        ],
        "algos_only": false,
        "status": "ALL"
    }
}

Request

Name Type Description
start_time timestamp A list of cryptocurrency exchanges to use.
end_time timestamp The amount of the Auro Digital Trading order.
exchange_id string The price of the Auro Digital Trading order.
normalized_symbol string Start datetime of algo processing
algo_only Boolean End datetime of algo processing
status string Staus of order that we want("OPEN", "CLOSE", "ALL")
{
    "jsonrpc": "2.0",
    "id": "c407195b-4c35-483d-93f5-798b391dc710",
    "result": {
        "executions": [
            {
                "id": 7333,
                "name": null,
                "algo_type": "LMT",
                "status": "CLOSED",
                "data": {
                    "pair": "BTC/USD",
                    "side": "sell",
                    "price": "9150",
                    "volume": "0.01",
                    "end_time": "2020-07-16T08:05:52.785000+00:00",
                    "exchange": "coinbasepro",
                    "start_time": "2020-07-16T07:06:58.104273+00:00",
                    "active_order_path": [
                        "coinbasepro",
                        "21f1206c-60b6-4323-8d99-233ebbe79c45"
                    ],
                    "active_order_amount": "0.01",
                    "canceled_order_paths": []
                },
                "start_time": 1594883218000,
                "end_time": 1594886752000,
                "exchanges": [
                    {
                        "exchange_id": "coinbasepro",
                        "side": "sell"
                    }
                ],
                "pairs": [
                    {
                        "pair": "BTC/USD",
                        "side": "sell"
                    }
                ],
                "side": "sell",
                "price": 9150.0,
                "price_net": 9150.0,
                "volume": 0.01,
                "leg_room": null,
                "slippage": null,
                "filled": 0.01,
                "average": 9156.02,
                "average_net": 9156.02,
                "updated_at": 1594883227000
            }
        ]
    }
}

Response

Name Type Description
id number The ID of the Auro Digital Trading order.
name null Currently unused field.
algo_type string Abbreviated order type.
status string Status of the algo execution.
data object Internal data structure, please avoid relying on this.
pair string The normalized symbol.
side string The side of the trade (buy or sell).
price number The price of the Auro Digital Trading order.
volume number The amount of the Auro Digital Trading order.
start_time timestamp Start datetime of algo processing
end_time timestamp End datetime of algo processing
exchange string The name of the exchange as configured by your administrator.
active_order_path list Currently working orders
active_order_amount string Amount of those orders
canceled_order_paths list Orders canceled by this Algorithm
start_time number Unix timestamp in milliseconds.
end_time number or null Unix timestamp in milliseconds.
exchange array of object A list of cryptocurrency exchanges to use.
exchange_id string The name of the exchange as configured by your administrator.
side string buy or sell.
pairs array of object A list of normalized symbols.
pair string buy or sell.
side string buy or sell.
price number The price of the Auro Digital Trading order.
price_net number or null The price, net of a fixed commission (if configured).
volume number The amount of the Auro Digital Trading order.
leg_room number or null Price adjustment before sending an order to the exchange.
slippage number or null Slippage, if applicable.
filled number The filled amount of the Auro Digital Trading order.
average number The average price of the filled amount.
average_net number or null The average price, net of a fixed commission (if configured).
updated_at number Unix timestamp in milliseconds.

place_orders

The place_orders method allows you to place LIMIT orders on an exchange.

A LIMIT order is an order to buy or sell a cryptocurrency at a specific price or better. It allows you to set a precise price at which you want to trade.

{
  "jsonrpc": "2.0",
  "id": "6c44a8f0-8196-40d0-8f39-620710bae10f",
  "method": "place_orders",
  "params": {
    "orders": [
      {
        "pair": "BTC/USD",
        "side": "BUY",
        "price": 1234,
        "volume": 0.01,
        "exchange": "coinbasepro",
        "end_time": "2020-09-10T10:44:02.187Z"
      }
    ]
  }
}

Request

Name Type Description
pair string The trading pair, represented as a normalized symbol
side string Indicates whether you want to "buy" or "sell".
price number Specifies the price at which you want to execute the order.
volume number Represents the amount (in base currency) you want to order.
exchange string The identifier of the exchange where the order will be placed, as configured by your administrator.
end_time timestamp The time at which the order will expire if not fulfilled.



{
    "jsonrpc": "2.0",
    "id": "6c44a8f0-8196-40d0-8f39-620710bae10f",
    "result": "ok"
}

Response

Name Type Description
result string Confirmation of request. “ok“ indicates positive confirmation.
Negative confirmation will display an “error” field instead of “result”

get_balances

get all balances for the given exchanges.

{
    "jsonrpc": "2.0",
    "id": "6c1985bf-80ad-4bbc-86d0-6e682cdb764d",
    "method": "get_balances",
    "params": {
        "pair": "BTC/USD",
        "exchanges": ["coinbasepro"],
        "from_mid_agg": 0,
        "cutoff": 1
    }
}

Request

Name Type Description
pair string The normalized symbol.
exchanges array of object A list of cryptocurrency exchanges to use.
from_mid_agg number Filter for Consolidated Orderbooks
cutoff number Filter for Consolidated Orderbooks
{
    "jsonrpc": "2.0",
    "id": "6c1985bf-80ad-4bbc-86d0-6e682cdb764d",
    "result": {
        "pair": "BTC/USD",
        "exchanges": ["coinbasepro"],
        "balances": {
            "coinbasepro": {
                "BTC": {
                    "free": 215.52433665,
                    "used": 0,
                    "total": 215.52433665
                },
                "ETH": {
                    "free": 883.80160773,
                    "used": 0,
                    "total": 883.80160773
                },
                "USD": {
                    "free": 363332.4740171202,
                    "used": 0,
                    "total": 363332.4740171202
                },
                "USDC": {
                    "free": 70000.0,
                    "used": 0,
                    "total": 70000.0
                }
            }
        },
        "is_inverse": false,
        "time": 1600246763302
    }
}

Response

Name Type Description
pair string The normalized symbol.
exchanges array of object A list of cryptocurrency exchanges to use.
balances object The balances on the exchanges configured by your administrator.
exchange_id (as key) object The name of the exchange as configured by your administrator.
currency_id (as key) object The currency ID.
free number Money available for trading.
used number Money on hold due to e.g., open orders.
total number free + used.
is_inverse boolean Whether this is an inverse futures contract.
time number The Unix timestamp (in milliseconds) when the data in this payload is fetched.

DEX APIs

This document outlines the APIs used to fetch quotes and place orders for token swaps on decentralized exchanges (DEX). The supported algorithm type is SWAP, and the response contains information on the price and slippage.

Base URL

Assuming your Auro Digital URL is https://mtuat.aurodigital.ai/, your corresponding WebSocket URL would be: wss://mtuat-backend.aurodigital.ai/v2.

The backend service adheres to the same IP whitelist policies as the front-end service. If you need to add (static) IP addresses to the whitelist, please contact our support team.

JSON-RPC Schema

Name Type Description
jsonrpc string Only "2.0" is supported
id string This will be echoed back in responses or subscription payloads
method string Establishing the specific API to connect to. Documented below
params string Details regarding the specific API call. Documented below

place_order_pre_processing_dex (Fetch Quotes)

This API is used to fetch token swap quotes for a given trading pair.

{
    "id": "cd728c5d-b8ca-40ee-a9cf-895a91cf2571",
    "jsonrpc": "2.0",
    "method": "place_order_pre_processing_dex",
    "params": {
        "pair": "ETH/USDC",
        "side": "SELL",
        "amount": 1,
        "exchange_ids": ["dex-arbitrum.Test"],
        "type": "SPOT",
        "unit": "ETH",
        "slippage": 1,
        "algo_type": "SWAP",
        "price": 0
    }
}

Request

Name Type Description
jsonrpc string Only "2.0" is supported
id string This will be echoed back in responses or subscription payloads
method string Establishing the specific API to connect to. Documented below
params string Details regarding the specific API call. Documented below
params.pair string Trading pair (e.g., "USDC/SOL"), specifying the assets involved in the trade
params.side string The side of the order: "BUY" or "SELL"
params.amount number The amount of the base currency to trade
params.type string The type of trade: "SPOT"
params.unit string Denomination of the base amount
params.slippage number Maximum allowed slippage percentage
params.algo_type string Type of algorithm used for the trade. In this case, "SWAP" for decentralized swaps
params.price number Price limit for the trade (set to 0 for swap orders)

Response

{
    "jsonrpc": "2.0",
    "id": "cd728c5d-b8ca-40ee-a9cf-895a91cf2571",
    "result": {
        "total_volume": "1.0000",
        "base_amount": 1.0,
        "quote_amount": 2669.771179,
        "usd_amount": 3066.624755859375,
        "usd_base_amount": 3066.624755859375,
        "usd_quote_amount": 2669.3294320025893,
        "plan": [
            {
                "exchange": "Arbitrum",
                "exchange_id": "dex-arbitrum.Test",
                "step_price": null,
                "step_volume": null,
                "base_amount": 1.0,
                "quote_amount": 2669.771179,
                "base_amount_usd": 2750.2073,
                "quote_amount_usd": 2669.8470005014833,
                "gas_amount": 0.0,
                "gas_unit": "ETH",
                "percent": 100,
                "slippage": "1.0000",
                "route_amounts": [
                    "1000000000000000000",
                    "2669771179"
                ],
                "route_path_symbol": [
                    "WETH",
                    500,
                    "UNISWAP_V3",
                    "USDC"
                ],
                "route_path_address": [
                    "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
                    500,
                    "UNISWAP_V3",
                    "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
                ],
                "amm_configs": [null],
                "pool_states": ["0xC6962004f452bE9203591991D15f6b388e09E8D0"],
                "token_mints": [
                    "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
                    "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
                ],
                "token_vaults": [null, null],
                "token_programs": [null, null],
                "observation_states": [null],
                "remaining_accounts": [[]],
                "zero_for_ones": [true],
                "route_dex_ids": ["UNISWAP_V3"],
                "total_raw_base_amount": 1000000000000000000,
                "total_raw_quote_amount": 2669771179,
                "volume": "1.0000",
                "price": "2669.7712",
                "base": {
                    "unit": "ETH",
                    "volume": 1.0,
                    "volume_usd": 2750.2073
                },
                "quote": {
                    "unit": "USDC",
                    "volume": 2669.771179,
                    "volume_usd": 2669.8470005014833
                },
                "usd_volume": "3066.6248",
                "gas_amount_usd": 0.0
            }
        ]
    }
}
Name Type Description
jsonrpc string The JSON-RPC version, typically "2.0".
id string The ID from the request, echoed back in the response.
result object Contains the results of the fetch quotes operation.
result.total_volume string The total volume of the trade represented as a string.
result.base_amount number The base amount specified for the quote.
result.quote_amount number The amount of the quote currency corresponding to the base amount.
result.usd_amount number The equivalent amount in USD for the base amount.
result.usd_base_amount number The USD equivalent of the base amount.
result.usd_quote_amount number The USD equivalent of the quote amount.
result.plan array An array of execution plans used for placing the order, with details for each step.

place_market_orders (Place Orders)

This API is used to place market orders for a token swap, using the quotes fetched in the previous step. Orders can either allow partial fill (enabling partial execution in case of liquidity constraints) or require full execution (ensuring the entire order is completed as planned).

Request

main fields

Name Type Description
id string Unique identifier for the request.
jsonrpc string JSON-RPC version, typically "2.0".
method string The method name, always "place_market_orders".
params object The parameters for placing market orders.

params.orders[]

Name Type Description
pair string The trading pair (e.g., "ETH/USDC").
side string "BUY" or "SELL".
volume number Amount of the base asset being traded.
price number Execution price (set to 0 for market orders).
exchange string The exchange name where the order will be executed.
start_time string Start time of the order (ISO 8601 format).
end_time string Expiration time of the order (ISO 8601 format).
timezone string The timezone of the order timestamps.
timestamp number Epoch timestamp of when the order was created.
params object Object containing order details

Execution Strategy

Partial Fill Enabled (partialFill: true)

Partial fill only applies if a swap route consists of multiple main route parts. It allows for partial execution, preventing the transaction from being reversed if the market price moves out of favor. - The plan is taken directly from the place_order_pre_processing_dex API response without modification. - The entire volume is allocated to a single execution plan. - If the market changes, only a portion of the trade might be executed.

Request (Partial Fill Enabled)

{
    "id": "508cf9f6-b49f-4d36-a84a-b775570f62f0",
    "jsonrpc": "2.0",
    "method": "place_market_orders",
    "params": {
        "orders": [   // list containing all orders
            {
                "pair": "ETH/USDC",
                "side": "SELL",
                "volume": 1,
                "price": 0,
                "exchange": "dex-arbitrum.Test",
                "end_time": "2025-02-04T06:36:09.344Z",
                "start_time": "2025-02-04T05:36:09.344Z",
                "timezone": "Asia/Calcutta",
                "timestamp": 1738647371663,
                "params": {
                    "partialFill": true,
                    "plan": {..} // Taken directly from fetch quotes API
                }
            }
        ]
    }
}

Partial Fill Disabled (partialFill: false)

When partial fill is disabled, the entire order must be executed as planned.

Request (Partial Fill Disabled)

{
    "id": "7bdac2f7-2b23-42db-94f3-d8963156ef74",
    "jsonrpc": "2.0",
    "method": "place_market_orders",
    "params": {
        "orders": [
            {
                "pair": "ETH/USDC",
                "side": "SELL",
                "volume": 1,
                "price": 0,
                "exchange": "dex-arbitrum.Test",
                "start_time": "2025-02-04T06:28:11.128Z",
                "end_time": "2025-02-04T07:28:11.128Z",
                "timezone": "Asia/Calcutta",
                "timestamp": 1738650536207,
                "params": {
                    "partialFill": false,
                    "plans": [
                        { "plan": { ... } },  // Plan 1
                        { "plan": { ... } }   // Plan 2
                    ]
                }
            }
        ]
    }
}

Note: Execution Plan (plan or plans[])

The execution plan is taken directly from the response of the place_order_pre_processing_dex API without modifications.

Partial Fill Handling

Whitelabel

The Master Hub is the top-level administration API for white-label partners. It exposes a WebSocket endpoint speaking JSON-RPC 2.0, from which a Master can manage Admins, Users, Exchanges, Credits, Markups, Instrument Segments, RBAC, and consume real-time subscription streams.

Session & Auth

Every method (except ping, login, authenticate_with_token, forgot_password, reset_password) requires the caller to first login or authenticate_with_token on the same WebSocket connection.

ping

Connectivity heartbeat.

Request

{ "jsonrpc": "2.0", "id": "1", "method": "ping" }
NameTypeDescription
jsonrpcstringOnly "2.0" is supported.
idstringClient-supplied request identifier echoed in response.
methodstringMethod name: ping.

Response

{ "jsonrpc": "2.0", "id": "1", "result": "pong" }
NameTypeDescription
jsonrpcstringJSON-RPC protocol version.
idstringEchoed request identifier.
resultstringReturns pong when service is reachable.

login

Authenticate as a master. Supports regular and stealth credentials.

Request

{
  "jsonrpc": "2.0",
  "id": "2",
  "method": "login",
  "params": { "username": "master_acme", "password": "correct-horse-battery-staple" }
}
NameTypeDescription
jsonrpcstringOnly "2.0" is supported.
idstringClient-supplied request identifier.
methodstringMethod name: login.
params.usernamestringMaster username.
params.passwordstringMaster password.

Response

{
  "jsonrpc": "2.0",
  "id": "2",
  "result": {
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "session_uuid": "a7e7a4a0-...-...",
    "uses_master_exchanges": true,
    "permissions": { "manage_admins": true, "manage_credits": true }
  }
}
NameTypeDescription
jsonrpcstringJSON-RPC protocol version.
idstringEchoed request identifier.
result.tokenstringJWT used for authenticated calls.
result.session_uuidstringServer-issued session identifier.
result.uses_master_exchangesbooleanWhether master-level exchange configuration is enabled.
result.permissionsobjectPermission map granted to this session.

authenticate_with_token

Resume a session using the JWT returned from login.

Request

{ "jsonrpc": "2.0", "id": "3", "method": "authenticate_with_token",
  "params": { "auth_token": "eyJhbGciOiJIUzI1NiIs..." } }
NameTypeDescription
jsonrpcstringOnly "2.0" is supported.
idstringClient-supplied request identifier.
methodstringMethod name: authenticate_with_token.
params.auth_tokenstringJWT token received from login.

Response

{ "jsonrpc": "2.0", "id": "3", "result": { "status": "ok", "permissions": { "manage_admins": true } } }
NameTypeDescription
jsonrpcstringJSON-RPC protocol version.
idstringEchoed request identifier.
result.statusstringAuthentication status, typically ok.
result.permissionsobjectPermission map active for the resumed session.

change_password

Change the current master's password.

Request

{ "jsonrpc": "2.0", "id": "4", "method": "change_password",
  "params": { "username": "master_acme", "password": "old-pw", "new_password": "new-pw" } }
NameTypeDescription
jsonrpcstringOnly "2.0" is supported.
idstringClient-supplied request identifier.
methodstringMethod name: change_password.
params.usernamestringMaster username.
params.passwordstringCurrent password.
params.new_passwordstringNew password to set.

Response

{ "jsonrpc": "2.0", "id": "4", "result": "ok" }
NameTypeDescription
jsonrpcstringJSON-RPC protocol version.
idstringEchoed request identifier.
resultstringReturns ok when password update succeeds.

forgot_password

Request a password reset token (emailed to the master).

Request

{ "jsonrpc": "2.0", "id": "5", "method": "forgot_password",
  "params": { "email": "ops@acme.com" } }
NameTypeDescription
jsonrpcstringOnly "2.0" is supported.
idstringClient-supplied request identifier.
methodstringMethod name: forgot_password.
params.emailstringEmail address associated with the master account.

Response

{ "jsonrpc": "2.0", "id": "5", "result": "ok" }
NameTypeDescription
jsonrpcstringJSON-RPC protocol version.
idstringEchoed request identifier.
resultstringReturns ok if reset flow is initiated.

reset_password

Complete a reset using the token from forgot_password.

Request

{ "jsonrpc": "2.0", "id": "6", "method": "reset_password",
  "params": { "token": "a3b2...reset-token", "new_password": "new-pw" } }
NameTypeDescription
jsonrpcstringOnly "2.0" is supported.
idstringClient-supplied request identifier.
methodstringMethod name: reset_password.
params.tokenstringPassword reset token from forgot-password flow.
params.new_passwordstringNew password to set.

Response

{ "jsonrpc": "2.0", "id": "6", "result": "ok" }
NameTypeDescription
jsonrpcstringJSON-RPC protocol version.
idstringEchoed request identifier.
resultstringReturns ok when reset is successful.

Admin Management

Admin lifecycle and listing operations for creating, updating, activating/deactivating, and auditing managed admins.

add_admin

Create a new admin under the current master.

Request

{ "jsonrpc": "2.0", "id": "10", "method": "add_admin",
"params": { "username": "acme_desk_1", "password": "InitialPw!23", "email": "desk1@acme.com", "name": "Acme Desk 1", "uses_master_exchanges": true } }
NameTypeDescription
methodstringadd_admin
params.usernamestringAdmin username.
params.passwordstringInitial admin password.
params.emailstringAdmin email.
params.namestringAdmin display name.
params.uses_master_exchangesbooleanWhether admin inherits master exchange setup.

Response

{ "jsonrpc": "2.0", "id": "10",
"result": { "admin": { "id": 42, "username": "acme_desk_1", "email": "desk1@acme.com", "name": "Acme Desk 1", "active": true, "uses_master_exchanges": true } } }
NameTypeDescription
result.adminobjectCreated admin object.
result.admin.idnumberNew admin identifier.
result.admin.activebooleanCurrent admin status.

update_admin

Update admin details.

Request

{ "jsonrpc": "2.0", "id": "11", "method": "update_admin",
"params": { "admin_id": 42, "email": "new@acme.com", "name": "Acme Desk One" } }
NameTypeDescription
methodstringupdate_admin
params.admin_idnumberTarget admin id.
params.emailstringUpdated admin email.
params.namestringUpdated admin display name.

Response

{ "jsonrpc": "2.0", "id": "11",
"result": { "admin": { "id": 42, "username": "acme_desk_1", "email": "new@acme.com", "name": "Acme Desk One" } } }
NameTypeDescription
result.adminobjectUpdated admin object.
result.admin.idnumberAdmin identifier.

get_admins

List all admins this master manages.

Request

{ "jsonrpc": "2.0", "id": "12", "method": "get_admins" }
NameTypeDescription
methodstringget_admins

Response

{ "jsonrpc": "2.0", "id": "12",
"result": { "admins": [{ "id": 42, "username": "acme_desk_1", "email": "desk1@acme.com",
"active": true, "name": "Acme Desk 1", "num_users": 3, "user_names": ["alice","bob","carol"] }] } }
NameTypeDescription
result.adminsarray of objectManaged admin list.
result.admins[].num_usersnumberUser count under each admin.
result.admins[].user_namesarray of stringUsernames under each admin.

get_users

List all admins plus the users under each.

Request

{ "jsonrpc": "2.0", "id": "13", "method": "get_users" }
NameTypeDescription
methodstringget_users

Response

{ "jsonrpc": "2.0", "id": "13",
"result": { "admins": [{ "id": 42, "username": "acme_desk_1", "active": true,
"users": [{ "id": 100, "username": "alice", "email": "alice@acme.com", "active": true }] }] } }
NameTypeDescription
result.adminsarray of objectAdmin objects with nested users.
result.admins[].usersarray of objectUsers belonging to each admin.

make_admin_inactive

Deactivate an admin (cascades to their users).

Request

{ "jsonrpc": "2.0", "id": "14", "method": "make_admin_inactive", "params": { "admin_id": 42 } }
NameTypeDescription
methodstringmake_admin_inactive
params.admin_idnumberAdmin id to deactivate.

Response

{ "jsonrpc": "2.0", "id": "14", "result": "ok" }
NameTypeDescription
resultstringReturns ok when deactivation succeeds.

make_admin_active

Reactivate an admin.

Request

{ "jsonrpc": "2.0", "id": "15", "method": "make_admin_active", "params": { "admin_id": 42 } }
NameTypeDescription
methodstringmake_admin_active
params.admin_idnumberAdmin id to reactivate.

Response

{ "jsonrpc": "2.0", "id": "15", "result": "ok" }
NameTypeDescription
resultstringReturns ok when activation succeeds.

change_admin_password

Reset an admin's password.

Request

{ "jsonrpc": "2.0", "id": "16", "method": "change_admin_password",
"params": { "admin_id": 42, "new_password": "NewStrongPw!9" } }
NameTypeDescription
methodstringchange_admin_password
params.admin_idnumberAdmin id whose password is being reset.
params.new_passwordstringNew password value.

Response

{ "jsonrpc": "2.0", "id": "16", "result": "ok" }
NameTypeDescription
resultstringReturns ok when password reset succeeds.

Admin Exchanges

Admin exchange assignment controls, including per-admin access grants and exchange mapping governance.

add_admin_exchange

Create a new exchange key on the master and assign it to managed admins.

Request

{ "jsonrpc":"2.0","id":"20","method":"add_admin_exchange","params":{"name":"binance_prod_1","info":{"api_key":"AKxxx","secret":"SSxxx","exchange":"binance"},"admins":[42,43],"always_active":true} }
NameTypeDescription
params.namestringExchange key name.
params.infoobjectExchange credentials payload.
params.adminsarray of numberAdmin ids to grant.
params.always_activebooleanMarks exchange always active.

Response

{ "jsonrpc":"2.0","id":"20","result":{"exchanges":[{"id":7,"name":"binance_prod_1","display_name":"Binance Prod 1","info":{"exchange":"binance"},"always_active":true}]}} }
NameTypeDescription
result.exchangesarray of objectCreated exchange records.

get_admin_exchange

Fetch master-owned exchanges (all, or by id).

Request

{ "jsonrpc":"2.0","id":"21","method":"get_admin_exchange","params":{"id":7} }
NameTypeDescription
params.idnumberOptional exchange id filter.

Response

{ "jsonrpc":"2.0","id":"21","result":{"exchanges":[{"id":7,"name":"binance_prod_1","display_name":"Binance Prod 1","always_active":true,"admins":[{"admin_id":42,"admin_username":"acme_desk_1","admin_name":"Acme Desk 1"}]}]}} }
NameTypeDescription
result.exchanges[].adminsarray of objectAdmin assignments for exchange.

update_admin_exchange

Edit an exchange key.

Request

{ "jsonrpc":"2.0","id":"22","method":"update_admin_exchange","params":{"id":7,"name":"binance_prod_renamed","always_active":false,"admins":[42]} }
NameTypeDescription
params.idnumberExchange id.
params.namestringUpdated name.
params.adminsarray of numberNew admin assignments.

Response

{ "jsonrpc":"2.0","id":"22","result":{"exchanges":[{"id":7,"name":"binance_prod_renamed","always_active":false}]}} }
NameTypeDescription
result.exchangesarray of objectUpdated exchanges.

delete_admin_exchange

Delete an exchange key.

Request

{ "jsonrpc":"2.0","id":"23","method":"delete_admin_exchange","params":{"id":7} }
NameTypeDescription
params.idnumberExchange id to delete.

Response

{ "jsonrpc":"2.0","id":"23","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.

get_admin_exchange_access

List exchanges granted to a specific admin.

Request

{ "jsonrpc":"2.0","id":"24","method":"get_admin_exchange_access","params":{"admin_id":42} }
NameTypeDescription
params.admin_idnumberAdmin id.

Response

{ "jsonrpc":"2.0","id":"24","result":{"admin_id":42,"admin_username":"acme_desk_1","admin_name":"Acme Desk 1","exchanges":[{"id":7,"name":"binance_prod_1","display_name":"Binance Prod 1","always_active":true}]}} }
NameTypeDescription
result.exchangesarray of objectAccessible exchanges for admin.

add_admin_exchange_access

Grant an admin access to additional exchanges.

Request

{ "jsonrpc":"2.0","id":"25","method":"add_admin_exchange_access","params":{"admin_id":42,"exchanges":["binance_prod_1","deribit_prod_1"]} }
NameTypeDescription
params.exchangesarray of stringExchange names to grant.

Response

{ "jsonrpc":"2.0","id":"25","result":{"admin_id":42,"added":["binance_prod_1","deribit_prod_1"]} }
NameTypeDescription
result.addedarray of stringSuccessfully granted exchanges.

remove_admin_exchange_access

Revoke an admin's access to specific exchanges.

Request

{ "jsonrpc":"2.0","id":"26","method":"remove_admin_exchange_access","params":{"admin_id":42,"exchanges":["deribit_prod_1"]} }
NameTypeDescription
params.exchangesarray of stringExchange names to revoke.

Response

{ "jsonrpc":"2.0","id":"26","result":{"admin_id":42,"removed":["deribit_prod_1"]} }
NameTypeDescription
result.removedarray of stringSuccessfully revoked exchanges.

Credits

Credit controls including limits, manual adjustments, transaction ledger visibility, and utilisation tracking.

set_client_credit

Set a credit limit on an admin's pool.

Request

{ "jsonrpc":"2.0","id":"30","method":"set_client_credit","params":{"admin_id":42,"credit_limit":1000000} }
NameTypeDescription
params.admin_idnumberAdmin id.
params.credit_limitnumberNew total credit limit.

Response

{ "jsonrpc":"2.0","id":"30","result":{"admin_id":42,"credit_limit":1000000,"balance":1000000} }
NameTypeDescription
result.balancenumberCurrent available balance after setting.

get_client_credits

Current credit balances (single or all admins).

Request

{ "jsonrpc":"2.0","id":"31","method":"get_client_credits" }
NameTypeDescription
methodstringget_client_credits

Response

{ "jsonrpc":"2.0","id":"31","result":{"credits":[{"admin_id":42,"admin_name":"Acme Desk 1","credit_limit":1000000,"balance":850000,"used":150000}]}} }
NameTypeDescription
result.creditsarray of objectCredit snapshot per admin.

adjust_client_credit

Manual deposit / withdrawal on an admin's credit pool.

Request

{ "jsonrpc":"2.0","id":"32","method":"adjust_client_credit","params":{"admin_id":42,"amount":-50000,"reason":"withdrawal settlement"} }
NameTypeDescription
params.amountnumberPositive=deposit, negative=withdrawal.
params.reasonstringLedger reason note.

Response

{ "jsonrpc":"2.0","id":"32","result":{"admin_id":42,"new_balance":800000,"transaction_id":9101} }
NameTypeDescription
result.new_balancenumberBalance after adjustment.
result.transaction_idnumberCreated ledger transaction id.

get_credit_ledger

Paginated credit transaction history.

Request

{ "jsonrpc":"2.0","id":"33","method":"get_credit_ledger","params":{"admin_id":42,"limit":50,"offset":0} }
NameTypeDescription
params.limitnumberPage size.
params.offsetnumberResult offset.

Response

{ "jsonrpc":"2.0","id":"33","result":{"transactions":[{"id":9101,"admin_id":42,"type":"adjustment","amount":-50000,"balance_after":800000,"reason":"withdrawal settlement","timestamp":"2026-04-21T12:15:00Z"}]}} }
NameTypeDescription
result.transactionsarray of objectCredit ledger entries.

get_credit_utilization

Credit usage broken down by SPOT and F&O.

Request

{ "jsonrpc":"2.0","id":"34","method":"get_credit_utilization","params":{"admin_id":42} }
NameTypeDescription
params.admin_idnumberAdmin id filter.

Response

{ "jsonrpc":"2.0","id":"34","result":{"utilization":[{"admin_id":42,"admin_name":"Acme Desk 1","spot":{"used":100000,"available":400000},"fno":{"used":50000,"available":250000}}]}} }
NameTypeDescription
result.utilization[].spotobjectSPOT usage split.
result.utilization[].fnoobjectF&O usage split.

User Management

User lifecycle APIs for adding, updating, activating/deactivating, and listing users under admin scopes.

add_user

Create a user under an admin.

Request

{ "jsonrpc":"2.0","id":"40","method":"add_user","params":{"admin_id":42,"username":"alice","password":"AlicePw!23","email":"alice@acme.com","name":"Alice","is_stealth_user":false} }
NameTypeDescription
params.admin_idnumberParent admin id.
params.usernamestringUser login id.
params.is_stealth_userbooleanWhether user is stealth mode.

Response

{ "jsonrpc":"2.0","id":"40","result":{"user":{"id":100,"username":"alice","email":"alice@acme.com","active":true,"is_stealth_user":false,"name":"Alice"}} }
NameTypeDescription
result.userobjectCreated user object.

update_user

Edit user details.

Request

{ "jsonrpc":"2.0","id":"41","method":"update_user","params":{"user_id":100,"email":"alice.new@acme.com"} }
NameTypeDescription
params.user_idnumberUser id.
params.emailstringUpdated email.

Response

{ "jsonrpc":"2.0","id":"41","result":{"user":{"id":100,"username":"alice","email":"alice.new@acme.com"}} }
NameTypeDescription
result.userobjectUpdated user object.

make_user_inactive

Deactivate a user.

Request

{ "jsonrpc":"2.0","id":"42","method":"make_user_inactive","params":{"user_id":100} }
NameTypeDescription
params.user_idnumberUser id to deactivate.

Response

{ "jsonrpc":"2.0","id":"42","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.

make_user_active

Reactivate a user.

Request

{ "jsonrpc":"2.0","id":"43","method":"make_user_active","params":{"user_id":100} }
NameTypeDescription
params.user_idnumberUser id to activate.

Response

{ "jsonrpc":"2.0","id":"43","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.

Admin Markups

Markup management with support for flat markups, aggregated reports, and PnL-oriented reporting workflows.

set_admin_markup

Add or update a markup for a specific admin-instrument.

Request

{ "jsonrpc":"2.0","id":"50","method":"set_admin_markup","params":{"admin_id":42,"instrument_id":"BTC/USDT","base_instrument_id":"BTC/USDT","bps":25,"enabled":true} }
NameTypeDescription
params.admin_idnumberAdmin id.
params.instrument_idstringInstrument pair.
params.bpsnumberMarkup in basis points.
params.enabledbooleanEnable/disable markup.

Response

{ "jsonrpc":"2.0","id":"50","result":{"markup":{"id":501,"admin_id":42,"instrument_id":"BTC/USDT","bps":25,"enabled":true}} }
NameTypeDescription
result.markupobjectSaved markup object.

delete_admin_markup

Delete admin markup by id.

Request

{ "jsonrpc":"2.0","id":"51","method":"delete_admin_markup","params":{"markup_id":501} }
NameTypeDescription
params.markup_idnumberMarkup id to delete.

Response

{ "jsonrpc":"2.0","id":"51","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.

get_admin_markups

All markups for one admin.

Request

{ "jsonrpc":"2.0","id":"52","method":"get_admin_markups","params":{"admin_id":42} }
NameTypeDescription
params.admin_idnumberAdmin id.

Response

{ "jsonrpc":"2.0","id":"52","result":{"markups":[{"id":501,"admin_id":42,"instrument_id":"BTC/USDT","bps":25,"enabled":true}]}} }
NameTypeDescription
result.markupsarray of objectAdmin markup list.

get_aggregated_admin_markups

Markups aggregated per instrument (min bps on overlap).

Request

{ "jsonrpc":"2.0","id":"53","method":"get_aggregated_admin_markups","params":{"admin_id":42} }
NameTypeDescription
params.admin_idnumberAdmin id.

Response

{ "jsonrpc":"2.0","id":"53","result":{"markups":[{"instrument_id":"BTC/USDT","bps":25,"enabled":true}]}} }
NameTypeDescription
result.markupsarray of objectAggregated markup list.

get_all_managed_admin_markups

All markups across every admin the master manages.

Request

{ "jsonrpc":"2.0","id":"54","method":"get_all_managed_admin_markups" }
NameTypeDescription
methodstringget_all_managed_admin_markups

Response

{ "jsonrpc":"2.0","id":"54","result":{"markups":[{"admin_id":42,"admin_name":"Acme Desk 1","instrument_id":"BTC/USDT","bps":25,"enabled":true}]}} }
NameTypeDescription
result.markupsarray of objectFlattened markups across all managed admins.

get_markup_pnl_report

P&L report for a single admin.

Request

{ "jsonrpc":"2.0","id":"55","method":"get_markup_pnl_report","params":{"admin_id":42,"period_type":"monthly","anchor_date":"2026-04-01"} }
NameTypeDescription
params.period_typestringPeriod granularity (daily/monthly/etc).
params.anchor_datestringReport anchor date.

Response

{ "jsonrpc":"2.0","id":"55","result":{"report":{"period":{"from":"2026-04-01","to":"2026-04-30"},"totals":{"quantity":123.45,"markup_pnl":5432.10},"instruments":[{"instrument_id":"BTC/USDT","qty":10.5,"markup_pnl":2100.0}]}} }
NameTypeDescription
result.report.totalsobjectAggregate pnl totals.
result.report.instrumentsarray of objectInstrument-wise pnl rows.

get_all_managed_admin_markup_pnl_report

P&L across every managed admin.

Request

{ "jsonrpc":"2.0","id":"56","method":"get_all_managed_admin_markup_pnl_report","params":{"period_type":"daily"} }
NameTypeDescription
params.period_typestringRequested aggregation period.

Response

{ "jsonrpc":"2.0","id":"56","result":{"reports":[{"admin_id":42,"admin_name":"Acme Desk 1","period":{"from":"2026-04-21","to":"2026-04-21"},"totals":{"markup_pnl":321.0},"instruments":[]}]}} }
NameTypeDescription
result.reportsarray of objectPnL reports grouped by admin.

Markup Templates / Tiers / Overrides

Template-driven markup configuration, tier definitions, assignment, and admin-level overrides.

create_markup_template

Request

{ "jsonrpc":"2.0","id":"60","method":"create_markup_template","params":{"name":"Gold Tier","description":"High-volume tiered markup"} }
NameTypeDescription
params.namestringTemplate name.
params.descriptionstringTemplate description.

Response

{ "jsonrpc":"2.0","id":"60","result":{"template":{"id":12,"name":"Gold Tier","description":"High-volume tiered markup","tiers":[]}} }

get_markup_template

Request

{ "jsonrpc":"2.0","id":"61","method":"get_markup_template","params":{"template_id":12} }
NameTypeDescription
params.template_idnumberTemplate id.

Response

{ "jsonrpc":"2.0","id":"61","result":{"template":{"id":12,"name":"Gold Tier","tiers":[{"id":300,"tier_level":1,"min_threshold":0,"bps":30}]}} }
NameTypeDescription
result.templateobjectTemplate with tier list.

update_markup_template

Request

{ "jsonrpc":"2.0","id":"62","method":"update_markup_template","params":{"template_id":12,"name":"Platinum Tier"} }
NameTypeDescription
params.template_idnumberTemplate id.
params.namestringUpdated template name.

Response

{ "jsonrpc":"2.0","id":"62","result":{"template":{"id":12,"name":"Platinum Tier"}} }
NameTypeDescription
result.templateobjectUpdated template object.

delete_markup_template

Request

{ "jsonrpc":"2.0","id":"63","method":"delete_markup_template","params":{"template_id":12} }
NameTypeDescription
params.template_idnumberTemplate id to delete.

Response

{ "jsonrpc":"2.0","id":"63","result":{"deleted":true} }
NameTypeDescription
result.deletedbooleanDeletion status.

add_template_tier

Request

{ "jsonrpc":"2.0","id":"64","method":"add_template_tier","params":{"template_id":12,"tier_level":2,"min_threshold":100000,"bps":20} }
NameTypeDescription
params.template_idnumberTemplate id.
params.tier_levelnumberTier order.
params.min_thresholdnumberMinimum threshold for tier.
params.bpsnumberTier markup bps.

Response

{ "jsonrpc":"2.0","id":"64","result":{"tier":{"id":301,"template_id":12,"tier_level":2,"min_threshold":100000,"bps":20}} }
NameTypeDescription
result.tierobjectCreated tier object.

get_template_tiers

Request

{ "jsonrpc":"2.0","id":"65","method":"get_template_tiers","params":{"template_id":12} }
NameTypeDescription
params.template_idnumberTemplate id.

Response

{ "jsonrpc":"2.0","id":"65","result":{"tiers":[{"id":300,"tier_level":1,"min_threshold":0,"bps":30},{"id":301,"tier_level":2,"min_threshold":100000,"bps":20}]}} }
NameTypeDescription
result.tiersarray of objectAll tiers under template.

update_template_tier

Request

{ "jsonrpc":"2.0","id":"66","method":"update_template_tier","params":{"tier_id":301,"bps":18} }
NameTypeDescription
params.tier_idnumberTier id.
params.bpsnumberUpdated bps.

Response

{ "jsonrpc":"2.0","id":"66","result":{"tier":{"id":301,"tier_level":2,"min_threshold":100000,"bps":18}} }
NameTypeDescription
result.tierobjectUpdated tier object.

delete_template_tier

Request

{ "jsonrpc":"2.0","id":"67","method":"delete_template_tier","params":{"tier_id":301} }
NameTypeDescription
params.tier_idnumberTier id to delete.

Response

{ "jsonrpc":"2.0","id":"67","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.

assign_markup_template_to_admin

Request

{ "jsonrpc":"2.0","id":"68","method":"assign_markup_template_to_admin","params":{"admin_id":42,"template_id":12,"enabled":true} }
NameTypeDescription
params.admin_idnumberAdmin id.
params.template_idnumberTemplate id.
params.enabledbooleanAssignment enabled state.

Response

{ "jsonrpc":"2.0","id":"68","result":{"assignment":{"id":900,"admin_id":42,"template_id":12,"enabled":true}} }
NameTypeDescription
result.assignmentobjectCreated assignment object.

unassign_markup_template_from_admin

Request

{ "jsonrpc":"2.0","id":"69","method":"unassign_markup_template_from_admin","params":{"admin_id":42,"template_id":12} }
NameTypeDescription
params.admin_idnumberAdmin id.
params.template_idnumberTemplate id.

Response

{ "jsonrpc":"2.0","id":"69","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.

add_admin_markup_override

Request

{ "jsonrpc":"2.0","id":"70","method":"add_admin_markup_override","params":{"admin_id":42,"instrument_id":"ETH/USDT","base_instrument_id":"ETH/USDT","bps":15,"enabled":true} }
NameTypeDescription
params.admin_idnumberAdmin id.
params.instrument_idstringInstrument symbol.
params.base_instrument_idstringBase instrument symbol.
params.bpsnumberMarkup in basis points.
params.enabledbooleanOverride enabled state.

Response

{ "jsonrpc":"2.0","id":"70","result":{"override":{"id":777,"admin_id":42,"instrument_id":"ETH/USDT","bps":15,"enabled":true}} }
NameTypeDescription
result.overrideobjectCreated override object.

update_admin_markup_override

Request

{ "jsonrpc":"2.0","id":"71","method":"update_admin_markup_override","params":{"override_id":777,"bps":10} }
NameTypeDescription
params.override_idnumberOverride id.
params.bpsnumberUpdated bps value.

Response

{ "jsonrpc":"2.0","id":"71","result":{"override":{"id":777,"admin_id":42,"instrument_id":"ETH/USDT","bps":10,"enabled":true}} }
NameTypeDescription
result.overrideobjectUpdated override object.

delete_admin_markup_override

Request

{ "jsonrpc":"2.0","id":"72","method":"delete_admin_markup_override","params":{"override_id":777} }
NameTypeDescription
params.override_idnumberOverride id to delete.

Response

{ "jsonrpc":"2.0","id":"72","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.

list_markup_templates

Request

{ "jsonrpc":"2.0","id":"73","method":"list_markup_templates" }

Response

{ "jsonrpc":"2.0","id":"73","result":{"templates":[{"id":12,"name":"Gold Tier","description":"..."}]}} }
NameTypeDescription
result.templatesarray of objectAll markup templates.

list_admin_markup_assignments

Request

{ "jsonrpc":"2.0","id":"74","method":"list_admin_markup_assignments","params":{"admin_id":42} }
NameTypeDescription
params.admin_idnumberAdmin id.

Response

{ "jsonrpc":"2.0","id":"74","result":{"assignments":[{"id":900,"admin_id":42,"template_id":12,"enabled":true}]}} }
NameTypeDescription
result.assignmentsarray of objectTemplate assignments for the admin.

list_admin_markup_overrides

Request

{ "jsonrpc":"2.0","id":"75","method":"list_admin_markup_overrides","params":{"admin_id":42} }
NameTypeDescription
params.admin_idnumberAdmin id.

Response

{ "jsonrpc":"2.0","id":"75","result":{"overrides":[{"id":777,"admin_id":42,"instrument_id":"ETH/USDT","bps":10,"enabled":true}]}} }
NameTypeDescription
result.overridesarray of objectPer-instrument overrides for the admin.

Instrument Segments

Segment management APIs used to organize and control instrument universes exposed to downstream users.

list_instrument_segments

Request

{ "jsonrpc":"2.0","id":"80","method":"list_instrument_segments" }

Response

{ "jsonrpc":"2.0","id":"80","result":{"segments":[{"id":5,"name":"Majors","description":"BTC/ETH majors","member_count":2}]}} }
NameTypeDescription
result.segmentsarray of objectAll instrument segments with member counts.

create_instrument_segment

Request

{ "jsonrpc":"2.0","id":"81","method":"create_instrument_segment","params":{"name":"Altcoins","description":"Mid-cap alts"} }
NameTypeDescription
params.namestringSegment name.
params.descriptionstringSegment description.

Response

{ "jsonrpc":"2.0","id":"81","result":{"segment":{"id":6,"name":"Altcoins","description":"Mid-cap alts","member_count":0}} }
NameTypeDescription
result.segmentobjectCreated segment object.

update_instrument_segment

Request

{ "jsonrpc":"2.0","id":"82","method":"update_instrument_segment","params":{"segment_id":6,"name":"Alt Coins"} }
NameTypeDescription
params.segment_idnumberSegment id.
params.namestringUpdated segment name.

Response

{ "jsonrpc":"2.0","id":"82","result":{"segment":{"id":6,"name":"Alt Coins","description":"Mid-cap alts","member_count":0}} }
NameTypeDescription
result.segmentobjectUpdated segment object.

delete_instrument_segment

Request

{ "jsonrpc":"2.0","id":"83","method":"delete_instrument_segment","params":{"segment_id":6} }
NameTypeDescription
params.segment_idnumberSegment id to delete.

Response

{ "jsonrpc":"2.0","id":"83","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.

list_instrument_segment_members

Request

{ "jsonrpc":"2.0","id":"84","method":"list_instrument_segment_members","params":{"segment_id":5} }
NameTypeDescription
params.segment_idnumberSegment id.

Response

{ "jsonrpc":"2.0","id":"84","result":{"members":[{"id":1000,"instrument_id":"BTC/USDT"},{"id":1001,"instrument_id":"ETH/USDT"}]}} }
NameTypeDescription
result.membersarray of objectInstruments in the segment.

add_instrument_segment_member

Request

{ "jsonrpc":"2.0","id":"85","method":"add_instrument_segment_member","params":{"segment_id":5,"instrument_id":"SOL/USDT"} }
NameTypeDescription
params.segment_idnumberSegment id.
params.instrument_idstringInstrument symbol to add.

Response

{ "jsonrpc":"2.0","id":"85","result":{"member":{"id":1002,"segment_id":5,"instrument_id":"SOL/USDT"}} }
NameTypeDescription
result.memberobjectAdded member object.

remove_instrument_segment_member

Request

{ "jsonrpc":"2.0","id":"86","method":"remove_instrument_segment_member","params":{"segment_id":5,"instrument_id":"SOL/USDT"} }
NameTypeDescription
params.segment_idnumberSegment id.
params.instrument_idstringInstrument symbol to remove.

Response

{ "jsonrpc":"2.0","id":"86","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.

set_admin_markup_by_segment

Request

{ "jsonrpc":"2.0","id":"87","method":"set_admin_markup_by_segment","params":{"admin_id":42,"segment_id":5,"bps":25} }
NameTypeDescription
params.admin_idnumberAdmin id.
params.segment_idnumberSegment id.
params.bpsnumberMarkup bps to apply to every instrument in the segment.

Response

{ "jsonrpc":"2.0","id":"87","result":{"updated_count":2} }
NameTypeDescription
result.updated_countnumberNumber of instruments updated.

Vendors allowlist

Controls for allowlisting vendor integrations and restricting access to approved external providers.

get_allowed_vendors_for_admin

Request

{ "jsonrpc":"2.0","id":"90","method":"get_allowed_vendors_for_admin","params":{"admin_id":42} }
NameTypeDescription
params.admin_idnumberAdmin id.

Response

{ "jsonrpc":"2.0","id":"90","result":{"admin_id":42,"vendors":["binance","deribit"]} }
NameTypeDescription
result.admin_idnumberAdmin id.
result.vendorsarray of stringAllowlisted vendor identifiers.

set_allowed_vendors_for_admin

Request

{ "jsonrpc":"2.0","id":"91","method":"set_allowed_vendors_for_admin","params":{"admin_id":42,"vendors":["binance","okx"]} }
NameTypeDescription
params.admin_idnumberAdmin id.
params.vendorsarray of stringVendor identifiers to allow.

Response

{ "jsonrpc":"2.0","id":"91","result":{"admin_id":42,"vendors":["binance","okx"]} }
NameTypeDescription
result.admin_idnumberAdmin id.
result.vendorsarray of stringUpdated vendor allowlist.

Exchange info metadata

Exchange metadata APIs for retrieving capabilities, identifiers, and display-level information required by clients.

get_exc_info

Return supported exchanges and required credential fields.

Request

{ "jsonrpc":"2.0","id":"100","method":"get_exc_info" }

Response

{ "jsonrpc":"2.0","id":"100","result":{"info":[{"name":"binance","api_key":"true","secret":"true","passphrase":"false"},{"name":"deribit","api_key":"true","secret":"true"}]}} }
NameTypeDescription
result.infoarray of objectSupported exchanges and required credential fields.

Real-time Subscriptions

Subscriptions are long-lived and push multiple responses with the same request id, each including seq_nr. Cancel with unsubscribe.

subscribe_balances

Request

{ "jsonrpc":"2.0","id":"bal-1","method":"subscribe_balances","params":{"incremental":true} }
NameTypeDescription
params.incrementalbooleanIf true, only deltas are pushed after the initial snapshot.

Initial push

{ "jsonrpc":"2.0","id":"bal-1","result":{"seq_nr":1,"exchanges":["binance_prod_1"],"balances":{"binance_prod_1":{"USDT":{"free":1000,"used":0,"total":1000}}},"other_balances":{},"is_inverse":false}} }
NameTypeDescription
result.seq_nrnumberMonotonic sequence number for this subscription.
result.exchangesarray of stringConnected exchange account identifiers.
result.balancesobjectPer-exchange balance map keyed by asset.
result.other_balancesobjectAuxiliary balance buckets (staking, earn, etc.).
result.is_inversebooleanWhether balances are in inverse-contract units.

subscribe_algo_executions

Request

{ "jsonrpc":"2.0","id":"algo-1","method":"subscribe_algo_executions","params":{} }

Push

{ "jsonrpc":"2.0","id":"algo-1","result":{"seq_nr":1,"executions":[{"id":501,"algo_id":77,"status":"running","filled_qty":0.5,"timestamp":"2026-04-21T12:30:00Z"}]}} }
NameTypeDescription
result.seq_nrnumberMonotonic sequence number for this subscription.
result.executionsarray of objectAlgo execution snapshots.

subscribe_algo_execution_logs

Request

{ "jsonrpc":"2.0","id":"alog-1","method":"subscribe_algo_execution_logs","params":{} }

Push

{ "jsonrpc":"2.0","id":"alog-1","result":{"seq_nr":1,"logs":[{"id":9001,"algo_id":77,"level":"INFO","message":"child order sent","timestamp":"2026-04-21T12:30:00Z"}]}} }
NameTypeDescription
result.seq_nrnumberMonotonic sequence number for this subscription.
result.logsarray of objectAlgo execution log entries.

unsubscribe

Request

{ "jsonrpc":"2.0","id":"bal-1","method":"unsubscribe" }

Response

{ "jsonrpc":"2.0","id":"bal-1","result":"ok" }
NameTypeDescription
resultstringReturns ok on success. The id identifies which subscription to cancel.

RBAC

Role-based access control APIs including role definitions, permission overrides, and effective permission reads.

get_roles

Request

{ "jsonrpc":"2.0","id":"110","method":"get_roles" }

Response

{ "jsonrpc":"2.0","id":"110","result":{"roles":[{"id":1,"name":"super_admin","permissions":["manage_admins","manage_credits","manage_markups"]},{"id":2,"name":"ops","permissions":["manage_credits"]}]}} }
NameTypeDescription
result.rolesarray of objectDefined roles with their permission lists.

set_master_role

Request

{ "jsonrpc":"2.0","id":"111","method":"set_master_role","params":{"master_id":3,"role_id":2} }
NameTypeDescription
params.master_idnumberMaster id.
params.role_idnumberRole id to assign.

Response

{ "jsonrpc":"2.0","id":"111","result":{"master_id":3,"role_id":2,"role_name":"ops"} }
NameTypeDescription
result.master_idnumberMaster id.
result.role_idnumberAssigned role id.
result.role_namestringAssigned role name.

set_master_permission_overrides

Request

{ "jsonrpc":"2.0","id":"112","method":"set_master_permission_overrides","params":{"master_id":3,"permissions":{"manage_markups":true,"delete_master":false}} }
NameTypeDescription
params.master_idnumberMaster id.
params.permissionsobjectMap of permission key to boolean overriding the role default.

Response

{ "jsonrpc":"2.0","id":"112","result":{"master_id":3,"overrides":{"manage_markups":true,"delete_master":false}} }
NameTypeDescription
result.master_idnumberMaster id.
result.overridesobjectFinal override map applied to the master.

get_master_permissions

Request

{ "jsonrpc":"2.0","id":"113","method":"get_master_permissions","params":{"master_id":3} }
NameTypeDescription
params.master_idnumberMaster id.

Response

{ "jsonrpc":"2.0","id":"113","result":{"permissions":{"manage_admins":false,"manage_credits":true,"manage_markups":true}} }
NameTypeDescription
result.permissionsobjectEffective permission map for the master.

get_my_permissions

Request

{ "jsonrpc":"2.0","id":"114","method":"get_my_permissions" }

Response

{ "jsonrpc":"2.0","id":"114","result":{"permissions":{"manage_admins":true,"manage_credits":true}} }
NameTypeDescription
result.permissionsobjectEffective permission map for the current caller.

Master CRUD

Master-level create/read/delete operations for super-admin flows.

create_master

Request

{ "jsonrpc":"2.0","id":"120","method":"create_master","params":{"username":"master_ops","password":"Pw!23","email":"ops@acme.com","name":"Ops Master"} }
NameTypeDescription
params.usernamestringLogin username.
params.passwordstringInitial password.
params.emailstringContact email.
params.namestringDisplay name.

Response

{ "jsonrpc":"2.0","id":"120","result":{"master":{"id":4,"username":"master_ops","email":"ops@acme.com","active":true,"name":"Ops Master"}} }
NameTypeDescription
result.masterobjectCreated master object.

get_masters

Request

{ "jsonrpc":"2.0","id":"121","method":"get_masters" }

Response

{ "jsonrpc":"2.0","id":"121","result":{"masters":[{"id":1,"username":"master_acme","email":"main@acme.com","active":true,"name":"Acme Root"}]}} }
NameTypeDescription
result.mastersarray of objectAll masters.

delete_master

Request

{ "jsonrpc":"2.0","id":"122","method":"delete_master","params":{"master_id":4} }
NameTypeDescription
params.master_idnumberMaster id to delete.

Response

{ "jsonrpc":"2.0","id":"122","result":"ok" }
NameTypeDescription
resultstringReturns ok on success.