Phase 1: Planning & Setup
Before writing code, align the product scope and technical setup with the Orderly team.- Choose an integration path: Pick the stack that matches your product and team.
- React Hooks
- React UI components
- Python connector
- Direct API access through the EVM API docs
- Set up builder identity: Start from Builder Onboarding. If you are using Orderly One, go to https://dex.orderly.network/ to create your builder ID and continue onboarding.
- Review system design: Read the Building on Orderly, Smart Contract Overview, and Smart Contract Addresses pages.
- Define launch scope: Confirm your core user flows, testnet plan, support process, and go-to-market milestones before development starts.
Phase 2: Core Implementation
Implement the flows that every trading integration needs.- Account registration: Let users create and activate their Orderly account.
- Wallet authentication and Orderly Keys: Set up authentication for signed API access and trading actions.
- Deposit and withdrawal: Support funding and withdrawal flows from supported chains.
- Order management: Implement order placement, cancellation, and order state handling.
- Market and symbol data: Integrate market metadata, prices, orderbook data, and trade updates from the WebSocket API and relevant REST endpoints such as available symbols.
Reduce-Only Orders: Use the
reduce-only flag for orders intended to close or reduce a
position. This helps avoid cases where a closing order could otherwise increase Initial Margin
Requirements (IMR) and fail because the account does not have enough margin.Phase 3: Advanced Features & Optimization
Add the pieces that make the integration operationally complete.- Settle PnL: Handle realized PnL settlement as part of the account lifecycle.
- Custom fees: Configure default builder fees and any user-level fee logic you need.
- User data surfaces: Display balances, positions, trade history, and account data using endpoints such as Get account information.
- Regulatory controls: Implement the geo-blocking and compliance checks required for your product and jurisdiction.
Phase 4: Testing & Launch Preparation
Verify the integration end to end before going live.- Validate on testnet: Run through registration, authentication, deposits, withdrawals, trading, and settlement on testnet before launch.
- Prepare for maintenance: Use the system maintenance status endpoint, ask the Orderly team for builder Telegram channel access, and make sure your UI handles maintenance windows clearly, including any order actions that remain available.
- Review support and launch readiness: Make sure your team has clear ownership for user support, incident communication, and launch coordination with Orderly.
AI & API Quick Reference
Use this section as a compact implementation reference after you have confirmed the integration scope above.Core Terms
- Builder ID (
broker_id): The identifier assigned to your platform during onboarding. It is required in registration and Orderly Key setup flows. - Orderly Key: An on-chain registered Ed25519 keypair. Use the private key only in the client or backend component that signs private REST and WebSocket requests.
- Strategy Vault vs. OmniVault: Strategy Vault is the underlying smart contract and clearing infrastructure. OmniVault is the official protocol-level vault implementation built on top of it.
REST Authentication
Private REST requests are signed with the Orderly Key. For the full spec, see API Authentication. Required headers:/v1/order?symbol=PERP_ETH_USDC. Omit BODY_STRING for requests without a body.
Minimal Signing Examples
TypeScript
Python
Core REST Endpoints
WebSocket Authentication & Heartbeat
Private WebSocket authentication also uses the Orderly Key. For the full spec, see WebSocket Authentication.- Testnet:
wss://testnet-ws-private-evm.orderly.org/v2/ws/private/stream/<account_id> - Mainnet:
wss://ws-private-evm.orderly.org/v2/ws/private/stream/<account_id> - Signature message: the timestamp only, because method, path, and body are blank for WebSocket authentication.
- Heartbeat: send
{"event":"ping"}regularly and expect apongresponse.