Repository Public
1{2 "recordedAt": "2026-11-11T06:04:35.450Z",3 "network": "testnet",4 "note": "throwaway seed generated in memory by scripts/hl-mandate-testnet.mts; the account never existed on the venue",5 "account": "0x8300112dfcd111c77ec78e2af506507bd8e00b44",6 "agent": "0xc174d2c52561a66e5a947feb023233f19e9e0682",7 "mandateId": "86575464-ba0f-442e-a39a-aad3812ee7b0",8 "exchanges": [9 {10 "step": "signer read: clearinghouseState + frontendOpenOrders of the throwaway account (testnet info endpoint)",11 "answer": {12 "time": 1794377071146,13 "accountValue": "0.0",14 "totalNtlPos": "0.0",15 "positions": [],16 "openOrders": []17 }18 },19 {20 "step": "API authorization/approve (signer signs approveAgent with the wallet key; the API sends it to the testnet)",21 "status": 422,22 "answer": {23 "error": "venue_rejected",24 "message": "the venue did not register the trading key: hyperliquid: Must deposit before performing actions. User: 0x8300112dfcd111c77ec78e2af506507bd8e00b44 — the authorization was revoked on the signer, nothing can trade. Fund the venue account first if the venue asks for a deposit, then prepare a new authorization."25 }26 },27 {28 "step": "approveAgent signed by the wallet key (user-signed action)",29 "request": {30 "action": {31 "type": "approveAgent",32 "hyperliquidChain": "Testnet",33 "signatureChainId": "0x66eee",34 "agentAddress": "0xc174d2c52561a66e5a947feb023233f19e9e0682",35 "agentName": "spw-live valid_until 1794549872000",36 "nonce": 179437707271937 },38 "nonce": 1794377072719,39 "signature": {40 "r": "0x50dfb8e6ef0f58149bb141d0e441aa360900e9efe7b3e54cb0ea888f568283b0",41 "s": "0x4f2b95412c478397ec74e3510b32df683411cf97bb9616e8c0f9b2c321a1e6ce",42 "v": 2743 },44 "vaultAddress": null,45 "expiresAfter": null46 },47 "status": 200,48 "answer": {49 "status": "err",50 "response": "Must deposit before performing actions. User: 0x8300112dfcd111c77ec78e2af506507bd8e00b44"51 }52 },53 {54 "step": "updateLeverage signed under the mandate (no passkey)",55 "request": {56 "action": {57 "type": "updateLeverage",58 "asset": 3,59 "isCross": true,60 "leverage": 361 },62 "nonce": 1794377073225,63 "signature": {64 "r": "0xded78f8b34d2ed7e70835b2aec63879458814399a256785348303dec44870769",65 "s": "0x6f94f1e205ba13a6de1ee332a6c9158491169be0f3f4af29a07b7b90f4eae374",66 "v": 2867 },68 "vaultAddress": null,69 "expiresAfter": 179437710322570 },71 "status": 200,72 "answer": {73 "status": "err",74 "response": "User or API Wallet 0xc174d2c52561a66e5a947feb023233f19e9e0682 does not exist."75 }76 },77 {78 "step": "signer: leverage 4× (the mandate says 3×)",79 "answer": "signer_leverage_exceeded: leverage 4 is above the mandate's 3× for hyperliquid:BTC"80 },81 {82 "step": "signer: order buy 0.0002 BTC @ 73509 that can add exposure, on an account the venue values at 0.0",83 "answer": "signer_floor_equity: the venue reports an account value of 0.0, below the mandate's floor of 5: only cancels and reduce-only orders are signed"84 },85 {86 "step": "reduce-only order signed under the mandate (no passkey; expiresAfter = nonce + 30 s)",87 "request": {88 "action": {89 "type": "order",90 "orders": [91 {92 "a": 3,93 "b": false,94 "p": "74259",95 "s": "0.0002",96 "r": true,97 "t": {98 "limit": {99 "tif": "Ioc"100 }101 },102 "c": "0x0eb3762f532a00385f10e50efc38bce4"103 }104 ],105 "grouping": "na"106 },107 "nonce": 1794377074412,108 "signature": {109 "r": "0x2806cbc972f18a5b9ff3a94d480f7171f7cbfd84d1abf72ce09e3ebd8d668b52",110 "s": "0x5f95171f091889b76f37d3f72e9a05963a8a541fd023fd50fcc378ae81037e2c",111 "v": 27112 },113 "vaultAddress": null,114 "expiresAfter": 1794377104412115 },116 "status": 200,117 "answer": {118 "status": "err",119 "response": "User or API Wallet 0xc174d2c52561a66e5a947feb023233f19e9e0682 does not exist."120 }121 },122 {123 "step": "cancelByCloid signed under the mandate",124 "request": {125 "action": {126 "type": "cancelByCloid",127 "cancels": [128 {129 "asset": 3,130 "cloid": "0x0eb3762f532a00385f10e50efc38bce4"131 }132 ]133 },134 "nonce": 1794377074893,135 "signature": {136 "r": "0x61f2d447136c34b692ff089d70cc9a84e3181182cc309b707eb413f4fb5bb60f",137 "s": "0x6231ae48b2eac0b94ca13920d72dadbcc28dfb40614050bf1c226c4233e85333",138 "v": 28139 },140 "vaultAddress": null,141 "expiresAfter": 1794377104893142 },143 "status": 200,144 "answer": {145 "status": "err",146 "response": "User or API Wallet 0xc174d2c52561a66e5a947feb023233f19e9e0682 does not exist."147 }148 },149 {150 "step": "signer: reduce-only order at half the market price",151 "answer": "signer_price: price 37505 is more than 1000 bps away from the signer's own BTC price 73779.9525"152 },153 {154 "step": "signer: order above the mandate's notional per order (reduce-only included)",155 "answer": "signer_order_notional: order notional 367.545 is above the mandate's 30 per order"156 },157 {158 "step": "signer: order on an instrument outside the mandate",159 "answer": "signer_instrument: hyperliquid:ETH is not allowed by the mandate"160 },161 {162 "step": "signer: the API describes a plain sell as reduce-only",163 "answer": "signer_mismatch: the order described by the API and the payload to sign differ (reduce-only)"164 },165 {166 "step": "signer: the same client id again",167 "answer": "signer_replay: an order with this client id was already signed"168 },169 {170 "step": "signer: an approveAgent for another address smuggled through /venue/mandate/sign",171 "answer": "signer_unsupported: this payload is not an order, a cancel or a leverage change (hl_user): a mandate signs nothing else"172 },173 {174 "step": "signer: a signature valid for more than 120 s",175 "answer": "signer_policy: validity window longer than 120 s"176 },177 {178 "step": "signer: an order that can add exposure during the wind-down",179 "answer": "signer_wind_down: the mandate was revoked: only cancels and reduce-only orders are signed until the wind-down ends"180 },181 {182 "step": "signer: a leverage change during the wind-down",183 "answer": "signer_wind_down: the mandate has ended: only cancels and reduce-only orders are signed until the wind-down ends"184 },185 {186 "step": "signer: a reduce-only order after the AUTHORIZATION was revoked",187 "answer": "signer_revoked: the venue authorization of this mandate was revoked: nothing is signed"188 },189 {190 "step": "signer: a cancel after the authorization was revoked",191 "answer": "signer_revoked: the venue authorization of this mandate was revoked: nothing is signed"192 }193 ]194}195