Base URL
markets-service is served from https://api.numofx.com. The examples below use $MARKETS_SERVICE_URL, so export it once:
1. Discover supported markets
Querymarkets-service first so you know which instruments are enabled in the matcher.
market = "USDCcNGN-SPOT"contract_type = "spot"settlement_type = "spot"asset_addressandsub_id
2. Read the book and recent trades
Once you have the market symbol or the(asset_address, sub_id) pair, fetch the current orderbook and recent prints.
markets-service is the public read surface for:
- market metadata
- top-of-book bids and asks
- recent trades and 24h stats
- order submission and cancellation
3. Submit a signed order
Orders are posted tomarkets-service, but the request must already contain a signed action payload that matches the contracts. See Authentication and signing for how to build action_json.data and produce the signature.
markets-service rejects the order unless:
- the instrument is enabled
action_json.subaccount_idmatchessubaccount_idaction_json.noncematchesnonceaction_json.ownermatchesowner_addressaction_json.signermatchessigner_address
4. Let the executor clear crossed orders
The matching loop inmarkets-service identifies crossed orders and emits a payload to execution-service.
execution-service then:
- validates the match payload shape
- ABI-encodes
TradeModule.OrderData - simulates
Matching.verifyAndMatch(...) - submits the transaction to the onchain matching contracts
Order lifecycle
Follow the full path across markets-service, execution-service, execution-contracts, and risk-core.
Markets service
Review the public orderbook, trades, and order-entry surface.

