{"api":"v1","generated_at":"2026-09-16T03:15:09.873Z","licence":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/","attribution":"TOLL, with a link to the page cited"},"page":"https://tollindex.com/e/x402-ottoai-services-trade-perpetuals-d036ac","pinned_page":"https://tollindex.com/e/x402-ottoai-services-trade-perpetuals-d036ac/at/2026-09-15T21-20Z","pinned":false,"method":"https://tollindex.com/ledger/method","snapshot_at":"2026-09-15T21:20:12.737Z","snapshot_stamp":"2026-09-15T21-20Z","endpoint":{"slug":"x402-ottoai-services-trade-perpetuals-d036ac","canonical_url":"https://x402.ottoai.services/trade-perpetuals","resource":"https://x402.ottoai.services/trade-perpetuals","http_method":"POST","type":"http","x402_version":2,"registries":["cdp"],"primary_registry":"cdp","curated_by_coinbase":false,"description":"Open leveraged perpetual positions on Hyperliquid with optional native TP/SL trigger orders. Min notional $10. Max leverage varies by asset (BTC 40x, ETH 25x, SOL 20x). Supports BTC, ETH, SOL, and 100+ other markets.","service_name":"Otto AI","declared_category":null,"declared_tags":["perpetual trading","hyperliquid perps","leverage trading","tp sl orders"],"route_template":null,"registry_updated":"2026-08-28T23:02:02.603Z"},"derived":{"note":"fields no registry supplies; TOLL derives them and marks them derived on the page","title":"trade perpetuals","category":"market-data","first_observed_by_toll":"2026-09-10T19:08:24.178Z","last_observed_by_toll":"2026-09-15T21:20:12.737Z","observation_began":"2026-09-10"},"presence":{"listed_now":true,"first_absent_at":null,"delisting_confirmed_at":null,"events":[{"registry":"cdp","at":"2026-09-10T19:08:24.178Z","event":"listed"}]},"accepts":[{"registry":"cdp","ordinal":0,"network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","asset_name":"USD Coin","symbol":"USDC","decimals":6,"amount_display":"0.01 USDC","amount_units":0.01,"decimals_known":true,"pay_to":"0x5bB4B0C766E0D5D791d9403Fc275c22064709F68","scheme":"exact"},{"registry":"cdp","ordinal":1,"network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","asset_name":"USD Coin","symbol":"USDC","decimals":6,"amount_display":"0.01 USDC","amount_units":0.01,"decimals_known":true,"pay_to":"0x5bB4B0C766E0D5D791d9403Fc275c22064709F68","scheme":"exact"}],"counters":{"observed_at":"2026-09-15T21:20:12.737Z","calls_30d":3,"unique_payers_30d":2,"last_called_at":"2026-08-28T23:02:10.426Z"},"validation":{"latest":{"observed_at":"2026-09-15T06:36:34.773Z","state":"pass","failed_checks":[],"endpoint_http_status":402,"run_id":"daily-2026-09-15"},"uptime":[{"days":7,"observed":5,"passed":5,"ratio":1},{"days":30,"observed":5,"passed":5,"ratio":1},{"days":90,"observed":5,"passed":5,"ratio":1}],"history_90d":[{"observed_at":"2026-09-15T06:36:34.773Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-15","state_changed":false},{"observed_at":"2026-09-14T06:05:15.745Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-14","state_changed":false},{"observed_at":"2026-09-13T05:57:06.570Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-13","state_changed":false},{"observed_at":"2026-09-12T08:14:20.205Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-12","state_changed":false},{"observed_at":"2026-09-11T12:35:43.511Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-11","state_changed":true}]},"seller":{"wallet":"0x5bB4B0C766E0D5D791d9403Fc275c22064709F68","page":"https://tollindex.com/seller/0x5bB4B0C766E0D5D791d9403Fc275c22064709F68","endpoints":13,"hosts":1},"reports":0,"registry_record":{"cdp":[{"tags":["perpetual trading","hyperliquid perps","leverage trading","tp sl orders"],"type":"http","accepts":[{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"name":"USD Coin","version":"2"},"payTo":"0x5bB4B0C766E0D5D791d9403Fc275c22064709F68","amount":"10000","scheme":"exact","network":"eip155:8453","maxTimeoutSeconds":300},{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"name":"USD Coin","version":"2","assetTransferMethod":"permit2"},"payTo":"0x5bB4B0C766E0D5D791d9403Fc275c22064709F68","amount":"10000","scheme":"exact","network":"eip155:8453","maxTimeoutSeconds":300}],"iconUrl":"https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1781044576/bazaar-icons/84cde0751281b3d0.png","quality":{"lastCalledAt":"2026-08-28T23:02:10.426Z","l30DaysTotalCalls":3,"l30DaysUniquePayers":2},"resource":"https://x402.ottoai.services/trade-perpetuals","extensions":{"bazaar":{"info":{"input":{"body":{"side":"long","size":250,"asset":"BTC","leverage":25,"stopLoss":{"price":60000},"takeProfit":{"price":75000}},"type":"http","method":"POST","bodyType":"json"},"output":{"type":"json","example":{"side":"long","asset":"BTC","entry":{"side":"long","size":250,"orderId":"12345","outcome":"filled","leverage":25,"orderType":"market","entryPrice":67000,"filledSize":0.0037,"marginMode":"cross","positionOpen":true,"amountConfirmed":true,"sizeInContracts":0.0037,"requestedNotional":250,"requestedSizeInContracts":0.0037},"status":"partial","message":"Your long position in BTC is open at 25x for 250 (0.0037 contracts), and the stop-loss could not be confirmed either way. Nothing was changed or cancelled on your behalf — add or confirm the trigger with /modify-hl-order before relying on it.","orderId":"12345","tpOrderId":"12346","entryPrice":67000,"protection":{"legs":[{"leg":"takeProfit","state":"resting","orderId":"12346"},{"leg":"stopLoss","state":"unknown","detail":"The venue did not confirm this order and its current order list could not be read."}],"failed":[],"filled":[],"placed":["takeProfit"],"unknown":["stopLoss"],"requested":["takeProfit","stopLoss"],"actionRequired":true},"action_required":true}}},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","required":["asset","side","size","leverage"],"properties":{"side":{"enum":["long","short"],"type":"string","description":"Position direction"},"size":{"type":"number","description":"Notional size in USDC (NOT margin). For '$10 margin at 25x', use size=250. Required — an omitted size is rejected, never defaulted."},"asset":{"type":"string","description":"Asset ticker (BTC, ETH, SOL, etc.). HIP-3 stock perps also accept 'xyz:TSLA' form."},"leverage":{"type":"number","description":"Leverage multiplier (1-40 depending on asset)"},"stopLoss":{"type":"object","properties":{"price":{"type":"number","description":"SL as an absolute price level"},"percentage":{"type":"number","description":"SL as a percentage loss from entry (e.g. 5 = -5%)"}},"description":"Optional stop-loss trigger. Provide EITHER percentage OR price, not both."},"orderType":{"enum":["market","limit"],"type":"string","description":"Default: market."},"limitPrice":{"type":"number","description":"Required when orderType is 'limit'."},"marginMode":{"enum":["cross","isolated"],"type":"string","description":"Default: cross. Stock perps (xyz DEX) are always isolated."},"takeProfit":{"type":"object","properties":{"price":{"type":"number","description":"TP as an absolute price level"},"percentage":{"type":"number","description":"TP as a percentage gain from entry (e.g. 10 = +10%)"}},"description":"Optional take-profit trigger. Provide EITHER percentage OR price, not both."},"stopLossPrice":{"type":"number","description":"Alias for stopLoss.price. Send exactly one of the two — supplying stopLoss and stopLossPrice together is rejected, including when their values are equal."},"takeProfitPrice":{"type":"number","description":"Alias for takeProfit.price. Send exactly one of the two — supplying takeProfit and takeProfitPrice together is rejected, including when their values are equal."}},"additionalProperties":false},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","required":["status"],"properties":{"side":{"type":"string"},"as_of":{"type":"string"},"asset":{"type":"string"},"entry":{"type":"object","properties":{"side":{"type":"string"},"size":{"type":"number"},"orderId":{"type":"string"},"outcome":{"enum":["filled","partially_filled","resting","rejected","unknown","not_submitted"],"type":"string","description":"Where the entry stands, read off the venue by the client order id we submitted: 'filled' (a position is open — the AMOUNT is a separate question, see `amountConfirmed` and `filledSize`; a 'filled' status alone does not mean the full requested size filled), 'partially_filled' (a position is open for PROVABLY less than requested — see entry.filledSize for what actually filled), 'resting' (the order is on the book), 'rejected' (the venue refused this exact order), 'not_submitted' (nothing was sent to the venue at all) or 'unknown' (none of these could be established — check before retrying, because retrying may open a second position). You are charged when this request verifiably delivered something: the entry is 'filled' or 'resting', OR any requested take-profit/stop-loss is live on the book (resting, or already executed). You are NOT charged when the entry is 'rejected' and no requested trigger is live, nor when the outcome is 'unknown' and no requested trigger is live — an unconfirmed request is never billed."},"accepted":{"type":"boolean"},"leverage":{"type":"number"},"orderType":{"type":"string"},"entryPrice":{"type":"number"},"filledSize":{"type":"number"},"marginMode":{"type":"string"},"positionOpen":{"type":"boolean"},"amountConfirmed":{"type":"boolean"},"sizeInContracts":{"type":"number"},"requestedNotional":{"type":"number"},"filledSize_notional":{"type":"number"},"requestedSizeInContracts":{"type":"number"}}},"error":{"type":"string"},"status":{"enum":["success","partial","unknown","failed"],"type":"string","description":"'success' = the entry is live and every requested trigger is confirmed resting. 'partial' = the entry is live but a requested take-profit or stop-loss is not resting — check `protection`. 'unknown' = an order was submitted and the resulting state could not be confirmed; you may hold a position. Never retry blind on this one. 'failed' = nothing reached the venue."},"message":{"type":"string"},"orderId":{"type":"string"},"resting":{"type":"array","items":{"type":"object"}},"slOrderId":{"type":"string"},"tpOrderId":{"type":"string"},"entryPrice":{"type":"number"},"protection":{"type":"object","properties":{"legs":{"type":"array","items":{"type":"object","properties":{"leg":{"enum":["takeProfit","stopLoss"],"type":"string"},"state":{"enum":["resting","filled","failed","unknown","not_submitted"],"type":"string"},"detail":{"type":"string"},"orderId":{"type":"string"}}}},"failed":{"type":"array","items":{"type":"string"}},"filled":{"type":"array","items":{"type":"string"}},"placed":{"type":"array","items":{"type":"string"}},"unknown":{"type":"array","items":{"type":"string"}},"requested":{"type":"array","items":{"type":"string"}},"notSubmitted":{"type":"array","items":{"type":"string"}},"actionRequired":{"type":"boolean"}}},"action_required":{"type":"boolean","description":"Machine-readable: true whenever this position needs you to look at it. Branch on this single field and you land correctly for every status above."}}}}}}}},"builder-code":{"info":{"a":"bc_hc2dhq09"},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"a":{"type":"string","pattern":"^[a-z0-9_]{1,32}$","description":"App builder code"},"s":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9_]{1,32}$"},"description":"Service builder codes"},"w":{"type":"string","pattern":"^[a-z0-9_]{1,32}$","description":"Wallet builder code"}},"additionalProperties":false}},"offer-receipt":{"info":{"offers":[{"format":"eip712","payload":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x5bB4B0C766E0D5D791d9403Fc275c22064709F68","amount":"10000","scheme":"exact","network":"eip155:8453","version":1,"validUntil":1787958422,"resourceUrl":"https://x402.ottoai.services/trade-perpetuals"},"signature":"0xa30f3fcae496a43bed9ae221204a281342a4a136732243328c4e2bd4860da8ad278b88e3a48784c724e441f204b60e45aa9c5ddbdcca217499c503e2b0ea8e9e1b","acceptIndex":0},{"format":"eip712","payload":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x5bB4B0C766E0D5D791d9403Fc275c22064709F68","amount":"10000","scheme":"exact","network":"eip155:8453","version":1,"validUntil":1787958422,"resourceUrl":"https://x402.ottoai.services/trade-perpetuals"},"signature":"0xa30f3fcae496a43bed9ae221204a281342a4a136732243328c4e2bd4860da8ad278b88e3a48784c724e441f204b60e45aa9c5ddbdcca217499c503e2b0ea8e9e1b","acceptIndex":1}]},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["offers"],"properties":{"offers":{"type":"array","items":{"type":"object","required":["format","signature"],"properties":{"format":{"type":"string"},"payload":{"type":"object","required":["version","resourceUrl","scheme","network","asset","payTo","amount"],"properties":{"asset":{"type":"string"},"payTo":{"type":"string"},"amount":{"type":"string"},"scheme":{"type":"string"},"network":{"type":"string"},"version":{"type":"integer"},"validUntil":{"type":"integer"},"resourceUrl":{"type":"string"}}},"signature":{"type":"string"},"acceptIndex":{"type":"integer"}}}}}}},"payment-identifier":{"info":{"required":false},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["required"],"properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","maxLength":128,"minLength":16},"required":{"type":"boolean"}}}}},"description":"Open leveraged perpetual positions on Hyperliquid with optional native TP/SL trigger orders. Min notional $10. Max leverage varies by asset (BTC 40x, ETH 25x, SOL 20x). Supports BTC, ETH, SOL, and 100+ other markets.","lastUpdated":"2026-08-28T23:02:02.603Z","serviceName":"Otto AI","x402Version":2}]}}