{"openapi":"3.1.0","info":{"title":"Ylalo API","version":"0.6.0","description":"Ylalo API for AI agents and humans. Stocks, bonds, crypto, and event markets via MCP (/mcp) or REST. This host is SANDBOX (play money). Sandbox keys: POST /v1/sandbox/accounts. Agents cannot withdraw. limitsVersion=2. See GET /v1/changelog, /llms.txt, /agent.json. Bearer may be a sandbox/ylk_ key or phone session. X-API-Version: 2026-10-19."},"servers":[{"url":"https://sandbox.ylalo.com"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Session token or ylk_ API key"}},"schemas":{"Position":{"type":"object","properties":{"coin":{"type":"string"},"side":{"type":"string","enum":["long","short"]},"size":{"type":"string"},"leverage":{"type":"number"},"entryPx":{"type":"string","nullable":true},"markPx":{"type":"string","nullable":true},"liquidationPx":{"type":"string","nullable":true},"unrealizedPnlUsd":{"type":"string","nullable":true},"fundingUsd":{"type":"string","nullable":true},"marginUsedUsd":{"type":"string","nullable":true},"book":{"type":"string","description":"Public book label: main | stocks | events"}}},"Trade":{"type":"object","properties":{"id":{"type":"string"},"requestId":{"type":"string","nullable":true},"source":{"type":"string","enum":["dashboard","agent","api"],"nullable":true},"kind":{"type":"string"},"symbol":{"type":"string"},"side":{"type":"string"},"intent":{"type":"string","enum":["open","close"]},"reduceOnly":{"type":"boolean"},"size":{"type":"string"},"avgPx":{"type":"string","nullable":true},"feeUsd":{"type":"string","nullable":true},"realizedPnlUsd":{"type":"string","nullable":true},"fillStatus":{"type":"string","nullable":true},"status":{"type":"string"},"venueOid":{"type":"string","nullable":true},"idempotencyKey":{"type":"string","nullable":true}}},"ErrorCodes":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]}}},"paths":{"/v1/start":{"get":{"operationId":"get_start","summary":"Agent onboarding: instructions, available REST/MCP APIs, and USD credit policy. Call this first (no auth).","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/changelog":{"get":{"operationId":"get_changelog","summary":"Public API changelog (currentVersion, limitsVersion, entries). No auth.","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/keys":{"post":{"operationId":"post_keys","summary":"Create a scoped agent API key (ylk_…). Shown once. scopes: read and/or trade; optional maxExposureUsd.","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"scopes":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","enum":["read","trade","trade:close_only","outcomes"]}},"maxExposureUsd":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000000000},{"type":"null"}]},"maxDailyNotionalUsd":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":1000000000},{"type":"null"}]},"maxLeverage":{"type":"integer","minimum":1,"maximum":50},"allowedCoins":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":32}},"maxOpenPositions":{"type":"integer","minimum":1,"maximum":100},"expiresAt":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}}}}}},"get":{"operationId":"get_keys","summary":"List API keys for the signed-in user (prefix only; secrets are never re-shown)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/keys/{id}":{"delete":{"operationId":"delete_keys_id","summary":"Revoke an API key by id","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"id"}}]}},"/v1/auth/countries":{"get":{"operationId":"get_auth_countries","summary":"Country list for flexible phone sign-in (ISO code, name, calling code)","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/auth/otp":{"post":{"operationId":"post_auth_otp","summary":"Request an SMS verification code. phoneNumber accepts E.164, local number + country/countryCode, or \"US 415…\".","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"phoneNumber":{"type":"string","minLength":3,"maxLength":80},"country":{"description":"ISO code, calling code, or country name (e.g. US, +1, United States)","type":"string","minLength":1,"maxLength":64},"countryCode":{"description":"Alias of country","type":"string","minLength":1,"maxLength":64}},"required":["phoneNumber"]}}}}}},"/v1/auth/verify":{"post":{"operationId":"post_auth_verify","summary":"Verify the code; creates the account and wallet on first use; returns accessToken, available APIs, and USD credit. Same flexible phone fields as /auth/otp.","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"phoneNumber":{"type":"string","minLength":3,"maxLength":80},"country":{"description":"ISO code, calling code, or country name (e.g. US, +1, United States)","type":"string","minLength":1,"maxLength":64},"countryCode":{"description":"Alias of country","type":"string","minLength":1,"maxLength":64},"code":{"type":"string","pattern":"^\\d{6}$"},"nickname":{"type":"string","minLength":2,"maxLength":32},"inviteCode":{"type":"string","minLength":6,"maxLength":64}},"required":["phoneNumber","code"]}}}}}},"/v1/auth/session":{"delete":{"operationId":"delete_auth_session","summary":"Revoke the current session","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/account":{"get":{"operationId":"get_account","summary":"One-call account snapshot: positions, attached orders, guardians, limits, budget, credit, lastEventId, health","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/limits":{"get":{"operationId":"get_limits","summary":"Single source of truth for platform + account + key + rate limits","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/orders":{"post":{"operationId":"post_orders","summary":"Intent-level order: usdAmount or size, optional bracket/guardians, dryRun for plan+confirmToken.","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"market":{"type":"string","minLength":1,"maxLength":80},"side":{"type":"string","enum":["long","short"]},"usdAmount":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"size":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"leverage":{"type":"integer","minimum":1,"maximum":50},"leverageMode":{"default":"error","type":"string","enum":["error","clamp"]},"type":{"default":"market","type":"string","enum":["market","limit"]},"limitPx":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"maxSlippageBps":{"type":"integer","minimum":0,"maximum":1000},"allowPartial":{"type":"boolean"},"requireProtection":{"type":"boolean"},"bracket":{"type":"object","properties":{"stopLoss":{"type":"object","properties":{"pct":{"type":"number"},"px":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"r":{"type":"number","exclusiveMinimum":0}}},"takeProfit":{"type":"object","properties":{"pct":{"type":"number"},"px":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"r":{"type":"number","exclusiveMinimum":0}}}}},"guardians":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"dryRun":{"type":"boolean"},"maxDriftBps":{"type":"integer","minimum":1,"maximum":5000},"acknowledgeLeverageChange":{"type":"boolean"},"source":{"type":"string","enum":["dashboard","agent","api"]}},"required":["market","side"]}}}}},"get":{"operationId":"get_orders","summary":"List open and resting trigger orders (?coin=). Includes attached SL/TP.","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"coin","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}}]},"delete":{"operationId":"delete_orders","summary":"Cancel all open orders for a coin (?coin= required)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"coin":{"type":"string","minLength":1,"maxLength":64}},"required":["coin"]}}}}}},"/v1/orders/confirm":{"post":{"operationId":"post_orders_confirm","summary":"Execute a dryRun plan with confirmToken (single-use; rejects on price drift)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"confirmToken":{"type":"string","minLength":8,"maxLength":128}},"required":["confirmToken"]}}}}}},"/v1/positions/{market}/close":{"post":{"operationId":"post_positions_market_close","summary":"Close a position by market (perp:BTC or BTC). Accepts fraction, usdAmount, or size.","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fraction":{"type":"number","exclusiveMinimum":0,"maximum":1},"usdAmount":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"size":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"slippageBps":{"type":"integer","minimum":0,"maximum":1000},"source":{"type":"string","enum":["dashboard","agent","api"]}}}}}},"parameters":[{"name":"market","in":"path","required":true,"schema":{"type":"string","description":"market"}}]}},"/v1/guardians":{"get":{"operationId":"get_guardians","summary":"List armed account/position guardians (trailing stop, max-hold, dead-man switch, …)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}},"post":{"operationId":"post_guardians","summary":"Create a guardian so agents need not stay awake","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"scope":{"type":"string","enum":["account","position"]},"market":{"type":"string","minLength":1,"maxLength":80},"type":{"type":"string","enum":["trailing_stop","max_hold","account_drawdown","dead_man_switch","schedule","kill_switch"]},"heartbeatSeconds":{"type":"integer","minimum":60,"maximum":86400},"onMiss":{"type":"string","enum":["flatten","block_opens","cancel_orders"]},"seconds":{"type":"integer","minimum":60,"maximum":9007199254740991},"trailPct":{"type":"number","exclusiveMinimum":0,"maximum":50},"trailR":{"type":"number","exclusiveMinimum":0,"maximum":20},"activateAtR":{"type":"number","exclusiveMinimum":0,"maximum":20},"maxLossPctFromDayStart":{"type":"number","exclusiveMinimum":0,"maximum":100},"action":{"type":"string","enum":["flatten","block_opens","cancel_orders"]},"cron":{"type":"string","minLength":1,"maxLength":64},"orderTemplate":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["type"]}}}}}},"/v1/guardians/{id}":{"delete":{"operationId":"delete_guardians_id","summary":"Delete (disarm) a guardian","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"id"}}]}},"/v1/heartbeat":{"post":{"operationId":"post_heartbeat","summary":"Ping dead-man-switch guardians; refreshes nextDeadline","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/account/kill":{"post":{"operationId":"post_account_kill","summary":"Kill switch: optionally flatten all positions and cancel orders","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"flatten":{"type":"boolean"}}}}}}}},"/v1/events":{"get":{"operationId":"get_events","summary":"Cursor event feed (?since=evt_…&types=fill,trigger,guardian). For sleeping agents.","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"since","in":"query","schema":{"type":"string"}},{"name":"types","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}}]}},"/v1/events/stream":{"get":{"operationId":"get_events_stream","summary":"SSE event stream for connected agents (polls every 2s). Prefer /events?since= when sleeping.","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/oauth/device":{"post":{"operationId":"post_oauth_device","summary":"OAuth device flow: returns userCode + verificationUri for headless bots","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/oauth/device/token":{"post":{"operationId":"post_oauth_device_token","summary":"Poll device flow until the human approves on /activate","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deviceCode":{"type":"string","minLength":8}},"required":["deviceCode"]}}}}}},"/v1/webhooks":{"post":{"operationId":"post_webhooks","summary":"Register an HMAC-signed webhook for fills/triggers/guardians","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","format":"uri"},"types":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":64}},"secret":{"type":"string","minLength":8,"maxLength":128}},"required":["url"]}}}}},"get":{"operationId":"get_webhooks","summary":"List webhooks (secrets never re-shown)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/webhooks/{id}":{"delete":{"operationId":"delete_webhooks_id","summary":"Revoke a webhook","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"id"}}]}},"/v1/sandbox/accounts":{"post":{"operationId":"post_sandbox_accounts","summary":"Create a phone-free sandbox account + ylk_ key (testnet only)","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"startingBalanceUsd":{"type":"number","exclusiveMinimum":0,"maximum":100000}}}}}}}},"/v1/sandbox/accounts/reset":{"post":{"operationId":"post_sandbox_accounts_reset","summary":"Reset the signed-in sandbox account: wipe trades/events/guardians and set balance","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"balanceUsd":{"type":"number","minimum":0,"maximum":100000}}}}}}}},"/v1/portfolio":{"get":{"operationId":"get_portfolio","summary":"Account value, positions, funding instructions, guidance, and webWatch (public browser URL)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/settings":{"get":{"operationId":"get_settings","summary":"Trade limit settings for the signed-in user. Default is no notional cap (maxTradeUsd / dailyTradeCapUsd null).","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}},"patch":{"operationId":"patch_settings","summary":"Update optional self-limits: maxTradeUsd and/or dailyTradeCapUsd (USD). Pass null to clear (no cap).","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"maxTradeUsd":{"anyOf":[{"type":"null"},{"type":"string","const":""},{"type":"string","const":"none"},{"type":"string","const":"null"},{"type":"number","exclusiveMinimum":0,"maximum":1000000000},{"type":"string","pattern":"^\\d+(\\.\\d+)?$"}]},"dailyTradeCapUsd":{"anyOf":[{"type":"null"},{"type":"string","const":""},{"type":"string","const":"none"},{"type":"string","const":"null"},{"type":"number","exclusiveMinimum":0,"maximum":1000000000},{"type":"string","pattern":"^\\d+(\\.\\d+)?$"}]}}}}}}}},"/v1/home":{"get":{"operationId":"get_home","summary":"Post-signin home: nickname, wallet, portfolio slice, guidance, and webWatch (public browser URL)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/wallets/{address}":{"get":{"operationId":"get_wallets_address","summary":"Public read-only portfolio for any wallet address (no auth). Same data as the web view at /{address}.","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Ylalo account address"}}]}},"/v1/wallets/{address}/positions":{"get":{"operationId":"get_wallets_address_positions","summary":"Public read-only open positions for a wallet address","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Ylalo account address"}}]}},"/v1/wallets/{address}/pnl":{"get":{"operationId":"get_wallets_address_pnl","summary":"Public read-only P&L for a wallet address","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Ylalo account address"}}]}},"/v1/wallets/{address}/nav":{"get":{"operationId":"get_wallets_address_nav","summary":"Public read-only NAV (+ series when registered) for a wallet address","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Ylalo account address"}},{"name":"range","in":"query","schema":{"default":"7d","type":"string","enum":["1d","7d","30d","all"]}}]}},"/v1/wallets/{address}/trades":{"get":{"operationId":"get_wallets_address_trades","summary":"Public read-only Ylalo trade history for a registered wallet address","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Ylalo account address"}},{"name":"limit","in":"query","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"before","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}]}},"/v1/funding":{"get":{"operationId":"get_funding","summary":"Funding instructions for the user Ylalo account","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/markets":{"get":{"operationId":"get_markets","summary":"Search stocks, bonds, crypto, and event markets (?query=&asset_class=)","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"query","in":"query","schema":{"default":"","type":"string","maxLength":64}},{"name":"asset_class","in":"query","schema":{"default":"all","type":"string","enum":["stocks","bonds","crypto","prediction","all"]}},{"name":"view","in":"query","schema":{"default":"trending","type":"string","enum":["trending","opportunities","all"]}},{"name":"limit","in":"query","schema":{"default":150,"type":"integer","minimum":1,"maximum":250}}]}},"/v1/orders/suggest":{"post":{"operationId":"post_orders_suggest","summary":"Recommend executable open/close params: venue $10 min, book depth, slippage. Pass intent=close to size a reduce-only exit. Prefer usdAmount (open) or omit size (close).","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"coin":{"type":"string","minLength":1,"maxLength":64},"intent":{"default":"open","type":"string","enum":["open","close"]},"side":{"default":"long","type":"string","enum":["long","short"]},"notionalUsd":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"size":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"leverage":{"type":"integer","minimum":1,"maximum":50},"slippageBps":{"type":"integer","minimum":0,"maximum":1000}},"required":["coin"]}}}}}},"/v1/orders/{oid}":{"delete":{"operationId":"delete_orders_oid","summary":"Cancel one open/trigger order by venue oid","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"oid","in":"path","required":true,"schema":{"type":"string","description":"oid"}}]}},"/v1/markets/{coin}/candles":{"get":{"operationId":"get_markets_coin_candles","summary":"OHLCV candles for a perp (?interval=1m|5m|15m|1h|4h|1d&limit=)","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"coin","in":"path","required":true,"schema":{"type":"string","description":"coin"}}]}},"/v1/markets/{coin}/book":{"get":{"operationId":"get_markets_coin_book","summary":"Top-of-book snapshot (bids/asks, spreadBps) for a perp","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"coin","in":"path","required":true,"schema":{"type":"string","description":"coin"}}]}},"/v1/outcomes/trade":{"post":{"operationId":"post_outcomes_trade","summary":"Buy or sell an event/prediction share (integer size; min notional $1 testnet / $10 mainnet). Buys auto-move free cash from classic books into the events ledger. Pass Idempotency-Key to make retries safe.","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"outcomeId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"side":{"anyOf":[{"type":"number","const":0},{"type":"number","const":1},{"type":"string","const":"yes"},{"type":"string","const":"no"}]},"action":{"type":"string","enum":["buy","sell"]},"size":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"price":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"},"slippageBps":{"type":"integer","minimum":0,"maximum":1000},"source":{"type":"string","enum":["dashboard","agent","api"]}},"required":["outcomeId","side","action","size"]}}}}}},"/v1/opportunities/packages/execute":{"post":{"operationId":"post_opportunities_packages_execute","summary":"One-confirm best-effort Opportunity package: fires classic + prediction legs back-to-back. Partial fills possible (no rollback). Pass Idempotency-Key. Prefer notionalUsd ≥ $40 so both venue mins clear at 70/30.","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"packageId":{"type":"string","minLength":1,"maxLength":160},"notionalUsd":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"legs":{"minItems":2,"maxItems":4,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"perp"},"coin":{"type":"string","minLength":1,"maxLength":64},"side":{"type":"string","enum":["long","short"]},"weightPct":{"type":"number","exclusiveMinimum":0,"maximum":100},"leverage":{"type":"integer","minimum":1,"maximum":50},"slippageBps":{"type":"integer","minimum":0,"maximum":1000}},"required":["kind","coin","side","weightPct"]},{"type":"object","properties":{"kind":{"type":"string","const":"outcome"},"outcomeId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"side":{"anyOf":[{"type":"number","const":0},{"type":"number","const":1},{"type":"string","const":"yes"},{"type":"string","const":"no"}]},"action":{"default":"buy","type":"string","enum":["buy","sell"]},"weightPct":{"type":"number","exclusiveMinimum":0,"maximum":100},"slippageBps":{"type":"integer","minimum":0,"maximum":1000}},"required":["kind","outcomeId","side","weightPct"]}]}}},"required":["notionalUsd","legs"]}}}}}},"/v1/trades":{"get":{"operationId":"get_trades","summary":"Trade history (?limit=&before=)","security":[{"bearer":[]}],"responses":{"200":{"description":"Trade history","content":{"application/json":{"schema":{"type":"object","properties":{"trades":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"requestId":{"type":"string","nullable":true},"source":{"type":"string","enum":["dashboard","agent","api"],"nullable":true},"kind":{"type":"string"},"symbol":{"type":"string"},"side":{"type":"string"},"intent":{"type":"string","enum":["open","close"]},"reduceOnly":{"type":"boolean"},"size":{"type":"string"},"avgPx":{"type":"string","nullable":true},"feeUsd":{"type":"string","nullable":true},"realizedPnlUsd":{"type":"string","nullable":true},"fillStatus":{"type":"string","nullable":true},"status":{"type":"string"},"venueOid":{"type":"string","nullable":true},"idempotencyKey":{"type":"string","nullable":true}}}}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"limit","in":"query","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"before","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}]}},"/v1/positions":{"get":{"operationId":"get_positions","summary":"Open positions and event-market balances","security":[{"bearer":[]}],"responses":{"200":{"description":"Open positions","content":{"application/json":{"schema":{"type":"object","properties":{"positions":{"type":"array","items":{"type":"object","properties":{"coin":{"type":"string"},"side":{"type":"string","enum":["long","short"]},"size":{"type":"string"},"leverage":{"type":"number"},"entryPx":{"type":"string","nullable":true},"markPx":{"type":"string","nullable":true},"liquidationPx":{"type":"string","nullable":true},"unrealizedPnlUsd":{"type":"string","nullable":true},"fundingUsd":{"type":"string","nullable":true},"marginUsedUsd":{"type":"string","nullable":true},"book":{"type":"string","description":"Public book label: main | stocks | events"}}}}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/pnl":{"get":{"operationId":"get_pnl","summary":"Realized and unrealized P&L (USD)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/nav":{"get":{"operationId":"get_nav","summary":"NAV and time series (?range=1d|7d|30d|all)","security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}},"parameters":[{"name":"range","in":"query","schema":{"default":"7d","type":"string","enum":["1d","7d","30d","all"]}}]}},"/v1/system/status":{"get":{"operationId":"get_system_status","summary":"Public health (TradFi-safe; no venue details)","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}},"/v1/public-config":{"get":{"operationId":"get_public-config","summary":"Public client config (Sentry, Mixpanel, tunnel, invites, sandbox OTP)","security":[],"responses":{"200":{"description":"OK"},"default":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_input","unauthorized","forbidden","not_found","rate_limited","insufficient_funds","limit_exceeded","service_unavailable","trade_failed","internal_error","session_expired","insufficient_depth","below_min_notional","leverage_too_high","market_closed","plan_stale","key_limit_exceeded","idempotency_conflict"]},"message":{"type":"string"},"details":{"type":"object","additionalProperties":true},"retryable":{"type":"boolean"},"orderSubmitted":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["unknown"]}]},"requestId":{"type":"string"},"docsUrl":{"type":"string"},"fix":{"type":"object","additionalProperties":true}},"required":["code","message","requestId"]}}}}}}}}}}}