{"openapi":"3.0.3","info":{"title":"SIWAI API","version":"1.5.0","description":"SIWAI analysis API for paid accounts and AI agents. Mostly read-only; PUT /workspace/watchlist and PATCH /workspace/prefs update the key owner's workspace. Not financial advice. For informational purposes only. Never returns raw OHLC feeds. Broker credentials never leave the browser; trading stays in-app."},"servers":[{"url":"https://siwai.app/api/v1"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key (siwai_…)"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]},"Setup":{"type":"object","properties":{"ticker":{"type":"string"},"name":{"type":"string"},"pattern":{"type":"string"},"timeframe":{"type":"string"},"confidence":{"type":"number"},"price":{"type":"number"},"target":{"type":"number","nullable":true},"stop_loss":{"type":"number","nullable":true}}},"NewsItem":{"type":"object","properties":{"id":{"type":"string"},"published_at":{"type":"string","format":"date-time"},"source":{"type":"string"},"headline":{"type":"string"},"ticker":{"type":"string","nullable":true},"tickers":{"type":"array","items":{"type":"string"}},"url":{"type":"string"}}},"WatchlistItem":{"type":"object","properties":{"ticker":{"type":"string"},"assetType":{"type":"string","enum":["stock","crypto","commodity","index","forex"]}},"required":["ticker"]},"FundChangeType":{"type":"string","enum":["new_buy","sold_out","increase","decrease","unchanged"],"description":"new_buy = brand-new position, sold_out = fully exited, increase/decrease = partial % change, unchanged = same share count as the prior filing (change = 0). Null means unknown / no prior filing."},"FundHolding":{"type":"object","properties":{"ticker":{"type":"string","nullable":true,"description":"Listed symbol, or null when unlisted/unknown. Never \"-\". Share classes are distinct (GOOGL vs GOOG, LEN vs LEN.B)."},"name":{"type":"string","description":"Full company or fund name, not the truncated 13F issuer string."},"shares":{"type":"number"},"value":{"type":"number"},"value_unit":{"type":"string","enum":["USD_millions"]},"change":{"type":"number","nullable":true,"description":"Percent change vs prior quarter. 0 when unchanged. Null for new_buy, sold_out, and unknown/no prior filing."},"change_type":{"allOf":[{"$ref":"#/components/schemas/FundChangeType"}],"nullable":true}}},"FundActivityRow":{"type":"object","properties":{"ticker":{"type":"string","nullable":true},"name":{"type":"string"},"change_type":{"allOf":[{"$ref":"#/components/schemas/FundChangeType"}],"nullable":true},"change":{"type":"number","nullable":true,"description":"Percent change for increase/decrease/unchanged. Null for new_buy and sold_out."},"share_change":{"type":"number","description":"Signed share delta vs prior quarter. Negative for decrease and sold_out."},"portfolio_impact":{"type":"number"}}},"ProfileUpdate":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"ISO date"},"title":{"type":"string"},"bullets":{"type":"array","items":{"type":"string"}},"link":{"type":"string","nullable":true}},"required":["date","title","bullets"]},"EarningsEvent":{"type":"object","properties":{"ticker":{"type":"string"},"datetime":{"type":"string","format":"date-time"},"name":{"type":"string"},"forecast_eps":{"type":"number","nullable":true,"description":"Yahoo analyst per-share EPS when a real estimate is stored (e.g. 1.23). Null when Yahoo omitted EPS, the stored forecast is revenue-only, or the value is 0 / not per-share. Usually null. Not trailing EPS from fundamentals."},"forecast_revenue":{"type":"number","nullable":true,"description":"USD"}}}}},"x-siwai":{"scopes":["market","accounts","mia","workspace"],"daily_limits":{"starter":{"requests":200,"mia":5},"pro":{"requests":1000,"mia":20},"premium":{"requests":5000,"mia":50}},"disclaimer":"Not financial advice. For informational purposes only.","mcp":"https://siwai.app/api/mcp","oauth_authorize":"https://siwai.app/oauth/authorize"},"paths":{"/":{"get":{"summary":"API index","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/openapi.json":{"get":{"summary":"This OpenAPI document. Unauthenticated.","security":[],"responses":{"200":{"description":"OpenAPI 3 document","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/setups/today":{"get":{"summary":"Today's SIWAI setups from the latest scan.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"market","in":"query","required":false,"description":"stocks | cryptos | commodities | indices","schema":{"type":"string"}},{"name":"pattern","in":"query","required":false,"description":"Pattern type, including confluence types","schema":{"type":"string"}},{"name":"timeframe","in":"query","required":false,"description":"Default Daily","schema":{"type":"string"}},{"name":"since","in":"query","required":false,"description":"ISO date or datetime cursor","schema":{"type":"string"}},{"name":"include_confluence","in":"query","required":false,"description":"Include confluence combinations","schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"description":"Max rows (default 100, max 1000)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Pagination offset","schema":{"type":"integer"}}]}},"/setups":{"get":{"summary":"Setups for one ticker.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"ticker","in":"query","required":false,"description":"Ticker symbol (required)","schema":{"type":"string"}},{"name":"timeframe","in":"query","required":false,"description":"Optional timeframe","schema":{"type":"string"}},{"name":"since","in":"query","required":false,"description":"ISO date or datetime cursor","schema":{"type":"string"}}]}},"/setups/confluence":{"get":{"summary":"Confluence setups from the latest scan.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/setups/outcomes":{"get":{"summary":"Pattern outcome summaries. No candle series.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"types","in":"query","required":false,"description":"Comma-separated pattern types","schema":{"type":"string"}},{"name":"category","in":"query","required":false,"description":"All | Stocks | Cryptos | Commodities | Indices","schema":{"type":"string"}},{"name":"minConfidence","in":"query","required":false,"description":"Minimum confidence","schema":{"type":"number"}},{"name":"limit","in":"query","required":false,"description":"Max events","schema":{"type":"integer"}}]}},"/setups/stats":{"get":{"summary":"Public hit-rate summaries for Breakout and Breakout + Impulse.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/patterns":{"get":{"summary":"Pattern catalog including confluence types.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/screener/filters":{"get":{"summary":"Screener filter catalog.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/screener/run":{"post":{"summary":"Run a SIWAI screen.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"query":{"type":"string"},"pattern_types":{"type":"array","items":{"type":"string"}},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/funds":{"get":{"summary":"Search 13F funds. Holdings use change_type (new_buy | sold_out | increase | decrease | unchanged). Null change_type means unknown/no prior filing. Tickers are never \"-\".","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"query","in":"query","required":false,"description":"Name, manager, or holding ticker","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset","schema":{"type":"integer"}}]}},"/funds/{id}/holdings":{"get":{"summary":"Fund holdings. Paginated (limit default 100, max 1000) with total/has_more. Same change data as activity for the filing quarter. Missing tickers are null with a full company name. unchanged means change = 0.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size (default 100, max 1000)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset","schema":{"type":"integer"}}]}},"/funds/{id}/activity":{"get":{"summary":"Fund activity vs prior quarter. Paginated (limit default 100, max 1000) with total/has_more. change_type: new_buy, sold_out, increase, decrease. share_change is signed (negative for decrease/sold_out). change is the % for partial changes, else null.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size (default 100, max 1000)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset","schema":{"type":"integer"}}]}},"/tickers/{ticker}":{"get":{"summary":"Ticker snapshot: SIWAI fundamentals, valuation, current setups.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}}]}},"/tickers/{ticker}/funds":{"get":{"summary":"Funds that hold or recently changed the ticker.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}}]}},"/tickers/{ticker}/financials":{"get":{"summary":"Derived financial-statement summaries (not a price feed).","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}}]}},"/news":{"get":{"summary":"News tagged against the SIWAI ticker universe.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"ticker","in":"query","required":false,"description":"Filter to news matching this ticker or company name","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"ISO start","schema":{"type":"string"}},{"name":"since","in":"query","required":false,"description":"Alias for from","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"ISO end","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset","schema":{"type":"integer"}}]}},"/calendar/economic":{"get":{"summary":"Economic calendar. Defaults to the next 7 days.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"from","in":"query","required":false,"description":"ISO start","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"ISO end","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Country or currency","schema":{"type":"string"}},{"name":"impact","in":"query","required":false,"description":"high | medium | low","schema":{"type":"string"}}]}},"/calendar/earnings":{"get":{"summary":"Earnings calendar. Defaults to the next 7 days. Rescheduled events for the same ticker in the same quarter (~45 days) keep the latest date. forecast_eps is a per-share Yahoo estimate when stored (never 0 or revenue); usually null. forecast_revenue is USD.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"from","in":"query","required":false,"description":"ISO start","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"ISO end","schema":{"type":"string"}},{"name":"ticker","in":"query","required":false,"description":"Ticker","schema":{"type":"string"}}]}},"/profile/updates":{"get":{"summary":"Profile → Updates changelog (same source as the in-app Profile page). Newest first. total is the matching changelog size; has_more follows limit. Invalid since returns 400. Scope: market.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"since","in":"query","required":false,"description":"ISO date; only items on or after this date","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size (default 20, max 100)","schema":{"type":"integer"}}]}},"/calendar/dividends":{"get":{"summary":"Dividends calendar. Defaults to the next 7 days.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"from","in":"query","required":false,"description":"ISO start","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"ISO end","schema":{"type":"string"}},{"name":"ticker","in":"query","required":false,"description":"Ticker","schema":{"type":"string"}}]}},"/accounts":{"get":{"summary":"Owner's connected brokers. Scope: accounts.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/accounts/{id}/stats":{"get":{"summary":"Account snapshot: stats, positions, recent trades. Scope: accounts.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/workspace":{"get":{"summary":"Watchlist, feed filters, and chart prefs. Scope: workspace.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/workspace/watchlist":{"get":{"summary":"Watchlist. Scope: workspace.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}},"put":{"summary":"Replace watchlist. Scope: workspace.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"watchlist":{"type":"array","items":{"$ref":"#/components/schemas/WatchlistItem"}}},"required":["watchlist"]}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/workspace/prefs":{"get":{"summary":"Feed filters and chart prefs. Scope: workspace.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}},"patch":{"summary":"Update feed_filters and/or chart_prefs. Scope: workspace.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"feed_filters":{"type":"object"},"chart_prefs":{"type":"object"}}}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}},"/mia/ask":{"post":{"summary":"Ask MIA. Scope: mia. Separate daily cap returned as mia_rate_limit.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string"},"history":{"type":"array","items":{"type":"object"}}},"required":["question"]}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"answer":{"type":"string"},"plan":{"type":"array","items":{"type":"object"}}}}}}},"400":{"description":"Bad request","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"403":{"description":"Missing scope or unpaid account","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"404":{"description":"Not found","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}},"429":{"description":"Rate limited","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Daily request quota"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining quota (4xx does not decrement)"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time when the UTC daily quota resets"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"disclaimer":{"type":"string"}},"required":["error","disclaimer"]}}}}}}}},"x-disclaimer":"Not financial advice. For informational purposes only."}