# API for Developers

### RPC

#### Test Environment

* **RPC**: `https://relayer.test.deriw.com`
* **ChainId**: 2885
* **Explorer**: [https://explorerv2.test.deriw.com](https://explorerv2.test.deriw.com/)

#### Mainnet

* **RPC**: `https://rpc.deriw.com`
* **ChainId**: 2886
* **Explorer**: <https://explorer.deriw.com/>

***

### Notes

1. For opening a new position with no existing positions, margin must be **greater than 10 USDT**.
2. For closing a position, order amount must be **greater than 10 USDT**.

***

### 1. Faucet (Testnet Only)

In the **test environment**, users must claim test tokens. This is not required on mainnet.

#### 1.1 Claim Test Tokens

* **Airdrop Contract**: `0xb207FD6D1136b0a32E2077754C971A82C7E54545`
* Call the function: `claim()` to receive test USDT.

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0xb538243f0c2606b43060d558306bedd8172f20411db357b4ca5edc7fe3fcf7ca)

#### 1.2 Token Approval

* **USDT (6 decimals)**: `0x8059298AD3f2153EC1B0FA0d233342e834E06737`
* Approve Router: `0x871cC36e0C52d3e41f896FF9D4eE03BC81E452e4`

**Mainnet USDT (6 decimals)**: `0x3B11A54514A708CC2261f4B69617910E172a90B3`

* Approve Router: `0x1eB6Dfc3316012C5795E1060f8BD1CEa10df30F5`

***

### 2. PositionRouter – Market Orders

* **Testnet**: `0x9E649615947e2bd1462A4b5D66645912b7740DB1`
* **Mainnet**: `0x80257F37d327FA0EF464eFa64DdFb755dE111262`

#### 2.1 Market Open Position

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0x6485a3e2108bbb64b02359d1ac9f9baffb23cfc7b7453a2856a175f4c4f36d4e)

```solidity
function createIncreasePosition(
    address[] memory _path,        // Path (USDT address: 0x8059...)
    address _indexToken,           // Index token, see section 4
    uint256 _amountIn,             // USDT amount (1 USDT = 1,000,000 due to 6 decimals)
    uint256 _sizeDelta,            // Position size with leverage (1e30)
    bool _isLong,                  // Long = true, Short = false
    uint256 _acceptablePrice,      // Acceptable price (1e30)
    bytes32 _referralCode,         // Fixed value: 0x00...
    address _callbackTarget        // Fixed value: 0x0000000000000000000000000000000000000000
)
```

#### 2.2 Market Close Position

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0xf00e62d7badcce643a4b455f12ab4b286f1837392b1c4ae39563a22cb9c10c5b)

```solidity
function createDecreasePosition(
    address[] memory _path,        // Path (USDT address: 0x8059...)
    address _indexToken,           // Index token, see section 4
    uint256 _collateralDelta,      // Usually 0
    uint256 _sizeDelta,            // Closing position size (1e30)
    bool _isLong,                  // Long = true, Short = false
    address _receiver,             // Receiver (usually tx sender)
    uint256 _acceptablePrice,      // Acceptable price
    address _callbackTarget        // Fixed value: 0x0000000000000000000000000000000000000000
)
```

***

### 3. OrderBook – Limit Orders

* **Testnet**: `0x300cAD4a61E6785F75E6deEbCC29b5f2708ab327`
* **Mainnet**: `0x86A0D906c6375846b05a0EF20931c1B4d2489C13`

#### 3.1 Limit Open Position

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0xa0cc209e8fdcec47ce2d6f51ff1d453e05406ec0bee82c2d6468d64873ae6a5c)

```solidity
function createIncreaseOrder(
    address[] memory _path,        // Path (USDT address)
    uint256 _amountIn,             // USDT amount (1 USDT = 1,000,000 due to 6 decimals)
    address _indexToken,           // Index token, see section 4
    uint256 _sizeDelta,            // Position size with leverage (1e30)
    address _collateralToken,      // USDT (6 decimals)
    bool _isLong,                  // Long = true, Short = false
    uint256 _triggerPrice,         // Trigger price
    bool _triggerAboveThreshold,   // Default true
    uint256 _lever                 // Leverage
)
```

#### 3.2 Take Profit / Stop Loss Orders

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0x87fed27568573a578b1b420f23699d2031f7f4826e2684b55b740577a65cf826)

```solidity
function batchCreateDecreaseOrder(DecreaseOrderFor[] memory orders) 

struct DecreaseOrderFor {
    address indexToken;        
    uint256 sizeDelta;         
    address collateralToken;   
    uint256 collateralDelta;   // Usually 0
    bool isLong;               
    uint256 triggerPrice;      
    bool triggerAboveThreshold;// Take profit = true, Stop loss = false
    uint256 lever;             
}
```

#### 3.3 Limit Close Position (TP/SL)

```solidity
function createDecreaseOrder(
    address _indexToken,        
    uint256 _sizeDelta,         
    address _collateralToken,   
    uint256 _collateralDelta,   // Usually 0
    bool _isLong,               
    uint256 _triggerPrice,      
    bool _triggerAboveThreshold,// Take profit = true, Stop loss = false
    uint256 _lever              
)
```

***

### 4. Index Token List

#### Mainnet

* **XAUt**: `0xFbD3AE1b32fcCe9EdD86519223Ef773Dbc399795`
* **ASTER**: `0xb2d98323AD400B711e49f131086783d3471AcAd8`
* **WBTC**: `0x9cAaCD673fd5C6C4b3Aa3c4E55e930ca5A4f32fe`
* **DOGE**: `0x2fDC17Dca642BBA2f4ad5DD51E891A277670B556`
* **WETH**: `0x8892549DdcA0f14ee3b4B0dE9A5b6dE5087FE12f`
* **SOL**: `0xB7e20EE2392f940Df344a1A940c37030DF0363A0`
* **LINK**: `0x83Fbf275A3B79F062a4deb7b876fB17D11b22815`
* **SUI**: `0x3C02bFeFC774364a1B2DBa7Dfa093A4b2eAa98db`
* **XRP**: `0xc48566c3A2A4358f34BeF026B1148f1A2cD47856`
* **BNB**: `0x881E8ef8a6aC1fD7f850978361d9FF67902F0Cac`
* **MNT**: `0xAb49AA1FfAbdd69B812163Ac01B8762c1D435342`
* **OKB**: `0xF88f37DF527855440424B52CBDda0BcE510fa261`
* **PAXG**: `0x653d3D23F5a09DD38990691fbf47432977b1Bad8`
* **AVAX**: `0x644F2FD0476402359B9233B101663E706493A145`
* **LTC**: `0x3845E1d4DCDd0694BB9919F9dd87CF06148eacE3`
* **WLD**: `0x3Af24C47fe884653D64dc2edF00b8A07e2CBC764`
* **ONDO**: `0x56104434bFF98bE272997262098092d37d074e0B`
* **CRV**: `0xbAF2a9eD3d52B83730c66801891E79F9aE764Bdd`
* **ADA**: `0x6a8E5074000D16e865ab72B10Af401D96EF07628`
* **AAVE**: `0x7a895267FfDEFF5cb3331ac3D45A0c8Cc8257aba`
* **DOT**: `0x74759d2a55BC8e920c1f2ab9b0AD93c62c028B08`
* **UNI**: `0xc5B66dc0604a440155689015B1a577d7cF23e3d5`
* **TRUMP**: `0x7C823734F32A6Ba9eA7a5537AA05fc8147AC0464`
* **SOMI**: `0xfa4bdAD5B858263DEadCbD826AD1b4e9a5f43D62`
* **PENDLE**: `0xa0750EF1fA99A393ca82771bf91ba80e709ca692`
* **ENS**: `0xC0C5630B8B57C88F48626A5aFf0ab4dE5bCfD8a2`
* **TSLA**: `0x69ed5C59Cc40c98857860322a47630D2c0d1a022`
* **XAU**: `0xca6C998D3807dDa6e323eBa71AD26910e56C2F2e`
* **XAG**: `0x66913b13E2010B5474882aF2C14E66c6f8F334b1`
* **INTC**: `0x078A3f7F28766D10Fb9b9E92138D142bC8513083`
* **NVDA**: `0x8D1Db0131633f0E2097aDaEbF95f8AAac87e04a2`
* **MSTR**: `0x652606B80b4e7d5A7F709B1B0D382E7d8d9E187D`
* **CRCL**: `0x1F1441E6C7528dd1F1241b47BE31Cf09769Ed311`

#### Testnet

* **WBTC**: `0x09A3136D50E375F3bfd35b0Ec7982721d3d6A54F`
* **DOGE**: `0x6e465324A7d113389De95183Db8Cfb76d411625c`
* **WETH**: `0x89b80e784F85028C75A00971B1A3f5827DC0d0aa`
* **SOL**: `0xD389ba94FC0Fb63Ee529D133aE03777eae861cb9`
* **LINK**: `0x00218834263b0a15b4dD70850E19A428e0d58fE3`
* **SUI**: `0xa7Dc854728C68b63c5504BB3f13ff5aC87f4a6C1`
* **XRP**: `0x75490283ed7494cC56aaCd362E0F9227ADA4D959`
* **BNB**: `0xBC7575878D6c4a06DdB0c62bc0F866A4493A80b4`
* **LTC**: `0x477fA0030757DcDb496595E54159F28ea5E7a190`
* **WLD**: `0x8568C0C8867363dd03Feae85e5b6563A1913A5D9`
* **CRV**: `0xd34BBB62B94cb2e80579E5F6FdE56BA7CA6B1Ac6`
* **ADA**: `0x0f3B0a998515918A46b6B740881CA475DB6512b7`
* **AAVE**: `0xc073ca0Bca8F79e970f9aD2191471EB85892d6a8`
* **UNI**: `0xF873c66e26B16cf3C489062C25d27715Ad18a678`
* **TRUMP**: `0x432357a752879A33C0D5d5ffEa40EF878524022F`
* **XAU**: `0xc16B53114997d17a8D8e23B4Fe3C48DB9b7378e4`
* **XAG**: `0x10d503Db5AFF07A85566E189cA5e1aF222857F43`
* **TSLA**: `0x411d41f5Eb2858cc78001357069c9CE21e46Efb4`
* **INTC**: `0x14E6B0D24f90A9D7320FcE44e20263d1363A6E18`
* **NVDA**: `0x68f20035F385FB57d1051D3a5d78863143EF0C97`
* **MSTR**: `0xFB8BBF9Eb50A042b01c378BfB5392995579Ae7A3`
* **CRCL**: `0x27c3B15A67EBA48072199EB3Cfc994578C9A3118`
* **BCH**: `0x2b45DAA43A52ce55950eE4f9a5Cbf10225803EBE`
* **FIL**: `0x09FD0Feec20E2F9dD5cf4F5aB2372CD80B14116a`
* **ORDI**: `0xeAAF0f68F94620919f57a7079169684e902917F9`
* **ARB**: `0xF66e0aBaba7e61968bF31fd75eEb39b379EEC954`
* **TRX**: `0xA5cFbf1908837c81127D0cC0Ff57C289bf4B311d`
* **SAND**: `0xaE7203eBA7E570A6B5C7A303987B6C824dF5A325`
* **OP**: `0xC88F5eE7D4ECb5033fCB5c60525587E72Cd1A36e`
* **APE**: `0x7B47509E3fd234F82df3373E35C3c8470FF77dC2`
* **MASK**: `0x3680c176bEFb73cFE6008269358819180a7a7A9F`
* **TIA**: `0x301A099287D53c1C14C273a0E02B8fe21886F8dc`
* **AXS**: `0x766BcAAAE1b774F5AA919D8969737927B904F9F3`
* **CFX**: `0xcDfABaA9990F41b4d8Da785EB37306A0ab97EC49`
* **BLUR**: `0x327C4F29833FFe483c94145430B372996B6DFb5d`
* **DYDX**: `0xecE9556e91223DA81b8C29739cFdfaF51218E488`
* **CAKE**: `0xE321f86907641dF968027A628243547F2e84F2A5`
* **GMT**: `0xdB5E2b2AEf6b8B8F58F9fc2Eef6eD134e49de065`
* **GMX**: `0xCd8ec06684D758E735CF3655c3ddDa808Da0e741`
* **PYTH**: `0x54289258403B72bFC0e652B677560b0C5ccAfabE`
* **GAS**: `0x78E1F9a9c4921A0f91ED0F02DEb4234f9E0e579d`
* **COMP**: `0x21d185b9dcB60bc58Fc4cC7d082e2e34ED1d2dA1`
* **1INCH**: `0x5A78f68b9eE1Ae995738dC2F7f96bEf8b558CDB4`
* **1000SATS**: `0xd37B3e43CC0Ad1574479b27f9427c6632995Cb2f`
* **PEOPLE**: `0x542abD3F77D41db0bc19F9b6bE51Ee5370022D0A`
* **NOT**: `0x4C2c677863627f0bA66B5F6658662970702c6156`
* **W**: `0x82e610e5cfD1B58DE683c446c96bf4FEFC20aB9E`
* **ENA**: `0xd6b09Bf968F1Fb6971C6f636D08870b22fCb2B8a`
* **WIF**: `0x1C8a3e1Da66B5a85A56A34b5754dcde92aBC3dA1`
* **TON**: `0xBb1132D675A0281Df1097CF4CB10B22D2A70A65e`
* **HYPE**: `0x227C16ef02eD6f4AB8Dc16a9cA49747BCbc6025D`
* **KAITO**: `0x24EafbFFF825d36C77216063b34e6c9ef4392c0f`
* **IP**: `0xF650DE55bFF297d5F98Ba71667Bfb4243C705ed0`
* **BERA**: `0x223fF8E6435De4F1476bAA3384Da952e504F1dB8`
* **MOVE**: `0x2e5ba971963da78F46B1E7cCbD790ff5Bf0b8A94`
* **NEIRO**: `0xde8689172cF9a5b9DBa6A1AB0bdf4D573E67050B`
* **AIXBT**: `0x8eF5c700De1A700b4b2002D65db842CB784A0556`
* **SONIC**: `0x60C2014A9f6Be6597775489dE12caa7CE3095d71`
* **SEI**: `0x7c2130CF1F9bcCEf8E6b72FD86402A1F89e944C4`
* **LAYER**: `0x8693F1f7cF61378F37fcD6a8aDC5c045Feb06067`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.deriw.com/deriw-mainnet/api-for-developers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
