Submit Maker-Taker Arbitrage Strategy
Submit a maker-taker arbitrage strategy that places a maker order on one exchange and triggers a taker order on another exchange when conditions are met.
How it works:
- Places a maker (limit) order on the maker exchange with GTX (post-only)
- When the maker order is placed, monitors for trigger conditions
- When triggered, executes a taker order on the taker exchange
- Optionally reconciles positions if there's a discrepancy
Use Cases:
- Cross-exchange arbitrage
- Market making with hedging
- Spread capture strategies
Endpoint: POST https://api.hypereth.io/v2/all/strategy/submit/maker-taker-arbitrage
Authorization
ApiKeyAuth In: header
Request Body
application/json
Unified market symbol
MONOptional market type. Use "spot" for spot markets or "perp" for perpetual/futures markets.
spotspotperpOrder amount for both legs
100Maker leg configuration
Exchange to place the maker order (e.g., "kuru")
kuruAccount ID for this leg
acc_AOrder side (buy or sell)
buysellLimit price for the maker order
0.01Taker leg configuration
Exchange to place the taker order (e.g., "kuru")
kuruAccount ID for this leg
acc_BOrder side (must be opposite of maker side)
buysellOptional limit price for taker order. If not provided, uses market order.
Optional slippage tolerance for market orders
0.005Optional trigger conditions for the taker order
Price-based trigger condition
Price spread threshold to trigger the taker order
0.001Trigger condition:
above- Trigger when spread is above thresholdbelow- Trigger when spread is below threshold
abovebelowOrder book depth trigger condition
Additional volume buffer required in the order book beyond the order amount
10How to combine multiple conditions:
AND- All conditions must be metOR- Any condition triggers execution
ANDORTimeout for trigger conditions in milliseconds
Strategy timeout in milliseconds
30000Optional client-provided strategy ID
my_strategy_001Optional reconciliation configuration
Whether reconciliation is enabled
Time to wait before checking for discrepancies (milliseconds)
Minimum size discrepancy to trigger recovery
Maximum slippage for recovery orders in basis points (100 = 1%)
Response Body
application/json
application/json
curl -X POST "https://api.hypereth.io/v2/all/strategy/submit/maker-taker-arbitrage" \ -H "Content-Type: application/json" \ -d '{ "symbol": "MON", "marketType": "spot", "amount": "100", "maker": { "exchange": "kuru", "accountId": "acc_A", "side": "buy", "price": "0.01" }, "taker": { "exchange": "kuru", "accountId": "acc_B", "side": "sell" } }'{
"strategyId": "maker_taker_550e8400-e29b-41d4-a716-446655440000",
"status": "pending",
"createdAt": 1710000000000,
"requestId": "req_123456789"
}{
"code": "invalid_parameters",
"message": "string",
"retriable": true
}Update Position Leverage POST
Update leverage for a specific trading symbol. **Platform Support**: Available on hyperliquid, aster, lighter. **Not available on kuru** (spot DEX - no leverage). **Implementation Notes**: - Leverage must be adjusted before opening positions or when no position exists - Some platforms restrict leverage changes when positions are open - Maximum allowed leverage varies by symbol and account tier - Leverage reduction may be restricted in isolated margin mode with open positions **Platform-Specific Limits**: - **Hyperliquid**: Asset and notional-dependent (varies by margin tiers; e.g., BTC up to 40x, ETH up to 25x) - **Aster**: 1-125 depending on position size and notional brackets, and it is unable to adjust to isolated-margin mode under the Multi-Assets mode. - **Lighter**: 1-100 (varies by market)
Get Strategy Status GET
Get the current status and details of a submitted maker-taker arbitrage strategy. **Status Lifecycle**: - `pending` → Strategy submitted, not yet started - `maker_placing` → Placing maker order - `waiting_trigger` → Maker order placed, waiting for trigger conditions - `taker_triggered` → Taker order being executed - `reconciling` → Checking for position discrepancies - `completed` → Strategy completed successfully - `completed_with_recovery` → Completed with position recovery - `failed` → Strategy failed (see error field) - `cancelled` → Strategy was cancelled - `timed_out` → Strategy timed out - `requires_intervention` → Manual intervention required **Endpoint**: `GET https://api.hypereth.io/v2/all/strategy/status/maker-taker-arbitrage/{strategyId}`