{"api":"v1","generated_at":"2026-09-16T01:55:18.163Z","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-close-position-a3b56a","pinned_page":"https://tollindex.com/e/x402-ottoai-services-close-position-a3b56a/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-close-position-a3b56a","canonical_url":"https://x402.ottoai.services/close-position","resource":"https://x402.ottoai.services/close-position","http_method":"POST","type":"http","x402_version":2,"registries":["cdp"],"primary_registry":"cdp","curated_by_coinbase":false,"description":"Close an open perpetual position on Hyperliquid (full or partial). Cancels all attached TP/SL trigger orders automatically.","service_name":"Otto AI","declared_category":null,"declared_tags":["close position","hyperliquid","perps exit"],"route_template":null,"registry_updated":"2026-08-28T23:02:05.670Z"},"derived":{"note":"fields no registry supplies; TOLL derives them and marks them derived on the page","title":"close position","category":"inference","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:13.676Z"},"validation":{"latest":{"observed_at":"2026-09-15T06:05:24.115Z","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:05:24.115Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-15","state_changed":false},{"observed_at":"2026-09-14T05:36:33.859Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-14","state_changed":false},{"observed_at":"2026-09-13T05:30:30.000Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-13","state_changed":false},{"observed_at":"2026-09-12T07:47:24.800Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-12","state_changed":false},{"observed_at":"2026-09-11T11:38:34.557Z","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":["close position","hyperliquid","perps exit"],"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:13.676Z","l30DaysTotalCalls":3,"l30DaysUniquePayers":2},"resource":"https://x402.ottoai.services/close-position","extensions":{"bazaar":{"info":{"input":{"body":{"asset":"BTC","partialClosePercentage":100},"type":"http","method":"POST","bodyType":"json"},"output":{"type":"json","example":{"asset":"BTC","status":"success","exitPrice":67500,"closedSize":250,"realizedPnl":"15.23","closedPercentage":100}}},"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","partialClosePercentage"],"properties":{"asset":{"type":"string","description":"Asset ticker of the open position"},"closePercent":{"type":"number","description":"Alias for partialClosePercentage. Accepted; sending both with different values is rejected."},"partialClosePercentage":{"type":"number","description":"Percentage of the position to close (1-100). 100 closes it fully. Required — an omitted percentage is rejected, never treated as a full close."}},"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":{"as_of":{"type":"string","description":"ISO-8601 time the reported venue state was read."},"asset":{"type":"string"},"close":{"type":"object","properties":{"side":{"type":"string"},"asset":{"type":"string"},"accepted":{"type":"boolean","description":"Present and false when the venue explicitly refused the close."},"submitted":{"type":"boolean","description":"Whether the close order reached the venue at all."},"sizeRequested":{"type":"number","description":"Size submitted to the venue, in contracts."},"requestedPercentage":{"type":"number"}},"description":"Present on the non-success outcomes: the close as it was submitted, so you can check it without a second call."},"error":{"type":"string"},"status":{"enum":["success","partial","failed","unknown"],"type":"string","description":"'partial' when the venue's own size shows the close filled SHORT — the remainder of your position is still open and still carrying risk. 'success' when the venue confirmed the close filled — it is the only outcome that is charged for. 'failed' when the venue refused the close: NOTHING WAS CLOSED by this request and you are not charged. That is a statement about this order, not about your position — a trigger or a liquidation may have moved it, so check it rather than assuming it is untouched. 'unknown' when the close was submitted and its outcome could not be confirmed: check your position before retrying, because a retry may close more than you intended. You are not charged for that either."},"message":{"type":"string","description":"Buyer-facing sentence describing the outcome and what, if anything, to do."},"exitPrice":{"type":"number","description":"Mark price read just after the close, not the venue fill price."},"shortfall":{"type":"number","description":"Present on a proven short close: contracts of your request that did NOT close and remain open."},"closedSize":{"type":"number","description":"Contracts the venue reported closing. ABSENT when amountConfirmed is false — it is never defaulted to the size you requested."},"requestedSize":{"type":"number","description":"Contracts submitted to close, for comparison with closedSizeActual. A request, never a result."},"action_required":{"type":"boolean","description":"Present on the non-success outcomes: this position needs you to look at it."},"amountConfirmed":{"type":"boolean","description":"Did the venue state HOW MUCH closed? When false the close is confirmed and its size is not, so closedPercentage, closedSize, closedSizeActual and realizedPnl are ALL ABSENT — there is no amount to publish and the request's own figures are not a stand-in. Read requestedPercentage/requestedSize for what was asked, and check the position on Hyperliquid for what remains."},"closedPercentage":{"type":"number","description":"The percentage ACTUALLY closed, derived from the venue's filled size — never an echo of what you sent. ABSENT when amountConfirmed is false."},"closedSizeActual":{"type":"number","description":"Contracts the venue reported closing. ABSENT when it did not state an amount."},"estimatedPnlAtMark":{"type":"string","description":"An ESTIMATE of what this close was worth: (mark price read just after the close - your entry price) x the venue's CONFIRMED closed size. Not a realised result — it is not the price the close filled at, and it excludes fees and funding. ABSENT when amountConfirmed is false or the mark-price read failed."},"requestedPercentage":{"type":"number","description":"The percentage you asked to close. A request, never a result."},"fullyClosedAsRequested":{"type":"boolean","description":"Present only when the venue's own size proves it either way."},"closedPercentageVerified":{"type":"boolean","description":"Mirrors amountConfirmed: false when the venue confirmed a fill without stating its size."}}}}}}}},"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":1787958425,"resourceUrl":"https://x402.ottoai.services/close-position"},"signature":"0xa12e9f7b3d95e608e322e3ec703386e5c19b7c96d91e566576a231256230533a37b040b44610e9443df73dfb7db7ec3123a7d09f56b763cf05303254a36641ea1c","acceptIndex":0},{"format":"eip712","payload":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x5bB4B0C766E0D5D791d9403Fc275c22064709F68","amount":"10000","scheme":"exact","network":"eip155:8453","version":1,"validUntil":1787958425,"resourceUrl":"https://x402.ottoai.services/close-position"},"signature":"0xa12e9f7b3d95e608e322e3ec703386e5c19b7c96d91e566576a231256230533a37b040b44610e9443df73dfb7db7ec3123a7d09f56b763cf05303254a36641ea1c","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":"Close an open perpetual position on Hyperliquid (full or partial). Cancels all attached TP/SL trigger orders automatically.","lastUpdated":"2026-08-28T23:02:05.67Z","serviceName":"Otto AI","x402Version":2}]}}