{"openapi":"3.1.0","info":{"title":"tvfin API Reference","version":"0.2.0","description":"TradingView source API contract for bluedoor Financial Data.\n\nSource-native TradingView-backed routes for search, market news, screeners, calendars, options, ideas, and scripts.\n\nHosted TradingView data API with product-native routes for symbols, screeners, news, calendars, options, ideas, and scripts.","x-bluedoor-source":{"source_id":"tvfin","adapter_slug":"tradingview","upstream":"tradingview.com","docs_url":"https://bluedoor.sh/apis/financial-data/sources/tvfin"}},"servers":[{"url":"https://api.tvfin.bluedoor.sh","description":"Current source API host"},{"url":"https://api.bluedoor.sh/adapters/tradingview","description":"bluedoor adapter namespace"}],"tags":[{"name":"Symbols","description":"Symbol search and instrument discovery."},{"name":"Screeners","description":"TradingView scanner queries and metadata."},{"name":"News","description":"Headlines and news flow."},{"name":"Calendar","description":"Economic calendar data."},{"name":"Events","description":"Earnings and dividend event tables."},{"name":"Options","description":"Option chains, implied volatility, and aggregate option-underlying data."},{"name":"Ideas","description":"Public TradingView ideas."},{"name":"Scripts","description":"Public TradingView scripts."},{"name":"Auth","description":"Email verification, API keys, and limit requests."},{"name":"System","description":"Service metadata."}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Email-verified API key returned by /v1/auth/verify."},"TvfinKey":{"type":"apiKey","in":"header","name":"X-Tvfin-Key","description":"Alternative API-key header. Authorization: Bearer is also supported."}},"schemas":{"TvfinResponse":{"type":"object","required":["meta","data"],"properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"description":"Endpoint-specific TradingView data payload."},"error":{"$ref":"#/components/schemas/TvfinError"}},"additionalProperties":true},"ResponseMeta":{"type":"object","required":["provider","route","status","generated_at"],"properties":{"provider":{"type":"string","enum":["tradingview"]},"route":{"type":"string"},"status":{"type":"string","enum":["ok","error"]},"generated_at":{"type":"string","format":"date-time"},"freshness":{"type":"object","properties":{"as_of":{"type":"string","format":"date-time"},"max_age_seconds":{"type":"integer","minimum":0},"stale":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":true},"ErrorResponse":{"type":"object","required":["ok","error"],"properties":{"ok":{"type":"boolean","const":false},"error":{"$ref":"#/components/schemas/TvfinError"}},"additionalProperties":true},"TvfinError":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"additionalProperties":true},"HealthResponse":{"type":"object","required":["ok","name","version"],"properties":{"ok":{"type":"boolean"},"name":{"type":"string"},"version":{"type":"string"},"shipped_rest_contracts":{"type":"integer"},"shipped_websocket_methods":{"type":"integer"},"websocket_policy":{"type":"string"},"identity":{"type":"object","additionalProperties":true},"rate_limits":{"type":"object","additionalProperties":true}},"additionalProperties":true},"EndpointCatalogResponse":{"type":"object","required":["shipped_route_count","routes"],"properties":{"shipped_route_count":{"type":"integer"},"shipped_rest_contract_count":{"type":"integer"},"shipped_websocket_method_count":{"type":"integer"},"routes":{"type":"object","additionalProperties":true}},"additionalProperties":true},"OpenApiDocument":{"type":"object","required":["openapi","info","paths"],"properties":{"openapi":{"type":"string"},"info":{"type":"object","additionalProperties":true},"servers":{"type":"array","items":{"type":"object","additionalProperties":true}},"paths":{"type":"object","additionalProperties":true}},"additionalProperties":true},"AuthResponse":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"error":{"$ref":"#/components/schemas/TvfinError"}},"additionalProperties":true},"AuthOtpRequest":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email"}},"additionalProperties":false},"AuthVerifyRequest":{"type":"object","required":["email","code"],"properties":{"email":{"type":"string","format":"email"},"code":{"type":"string"},"create_key":{"type":"boolean","default":true},"label":{"type":"string"}},"additionalProperties":false},"ApiKeyCreateRequest":{"type":"object","properties":{"label":{"type":"string"}},"additionalProperties":false},"LimitRequest":{"type":"object","properties":{"requested_rps":{"type":"integer","minimum":1},"requested_origin_rps":{"type":"integer","minimum":1},"use_case":{"type":"string"},"message":{"type":"string"}},"additionalProperties":false},"GenericTradingViewRequest":{"type":"object","description":"Endpoint-specific TradingView request payload. Prefer product route parameters where available.","additionalProperties":true},"ScannerRequest":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string"}},"range":{"type":"array","items":{"type":"integer"},"minItems":2,"maxItems":2},"sort":{"type":"object","properties":{"sortBy":{"type":"string"},"sortOrder":{"type":"string","enum":["asc","desc"]}},"additionalProperties":true},"filter":{"type":"array","items":{"type":"object","additionalProperties":true}},"options":{"type":"object","additionalProperties":true}},"additionalProperties":true}}},"paths":{"/v1/auth/otp":{"post":{"tags":["Auth"],"summary":"Request Email Code","operationId":"requestAuthOtp","description":"Starts the email verification flow. tvfin sends a short-lived one-time code to the requested email address when email delivery is configured.","requestBody":{"required":false,"description":"Email address.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthOtpRequest"},"example":{"email":"you@example.com"}}}},"responses":{"200":{"description":"OTP request response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"api_key":"tvfin_live_example","management_token":"tvfin_mgmt_example"}}}}}}},"202":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"accepted":true,"message":"Verification email queued."}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Unauthorized.","value":{"ok":false,"error":{"code":"unauthorized","message":"A valid API key or management token is required."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}}}}},"/v1/auth/verify":{"post":{"tags":["Auth"],"summary":"Verify Email Code","operationId":"verifyAuthOtp","description":"Verifies an email one-time code and optionally creates an API key. Successful responses include a short-lived management token for key administration.","requestBody":{"required":false,"description":"Email verification code.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthVerifyRequest"},"example":{"email":"you@example.com","code":"123456","create_key":true,"label":"production"}}}},"responses":{"200":{"description":"OTP verification response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"api_key":"tvfin_live_example","management_token":"tvfin_mgmt_example"}}}}}}},"202":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"accepted":true,"message":"Verification email queued."}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Unauthorized.","value":{"ok":false,"error":{"code":"unauthorized","message":"A valid API key or management token is required."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}}}}},"/v1/auth/keys":{"get":{"tags":["Auth"],"summary":"List API Keys","operationId":"listApiKeys","description":"Lists API keys associated with the verified email session. Requires the management token returned by /v1/auth/verify.","parameters":[{"name":"X-Tvfin-Management-Token","in":"header","required":false,"schema":{"type":"string"},"description":"Short-lived management token returned by /v1/auth/verify."}],"responses":{"200":{"description":"API key list response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"api_key":"tvfin_live_example","management_token":"tvfin_mgmt_example"}}}}}}},"202":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"accepted":true,"message":"Verification email queued."}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Unauthorized.","value":{"ok":false,"error":{"code":"unauthorized","message":"A valid API key or management token is required."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}}}},"post":{"tags":["Auth"],"summary":"Create API Key","operationId":"createApiKey","description":"Creates an additional API key for the verified email session. Requires the management token returned by /v1/auth/verify.","parameters":[{"name":"X-Tvfin-Management-Token","in":"header","required":false,"schema":{"type":"string"},"description":"Short-lived management token returned by /v1/auth/verify."}],"requestBody":{"required":false,"description":"API key options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateRequest"},"example":{"label":"production"}}}},"responses":{"200":{"description":"API key creation response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"api_key":"tvfin_live_example","management_token":"tvfin_mgmt_example"}}}}}}},"202":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"accepted":true,"message":"Verification email queued."}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Unauthorized.","value":{"ok":false,"error":{"code":"unauthorized","message":"A valid API key or management token is required."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}}}}},"/v1/auth/keys/{keyId}":{"delete":{"tags":["Auth"],"summary":"Revoke API Key","operationId":"revokeApiKey","description":"Revokes an API key for the verified email session. Requires the management token returned by /v1/auth/verify.","parameters":[{"name":"keyId","in":"path","required":true,"schema":{"type":"string"},"description":"API key identifier returned by the key management endpoints."},{"name":"X-Tvfin-Management-Token","in":"header","required":false,"schema":{"type":"string"},"description":"Short-lived management token returned by /v1/auth/verify."}],"responses":{"200":{"description":"API key revocation response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"api_key":"tvfin_live_example","management_token":"tvfin_mgmt_example"}}}}}}},"202":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"accepted":true,"message":"Verification email queued."}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Unauthorized.","value":{"ok":false,"error":{"code":"unauthorized","message":"A valid API key or management token is required."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}}}}},"/v1/auth/keys/{keyId}/rotate":{"post":{"tags":["Auth"],"summary":"Rotate API Key","operationId":"rotateApiKey","description":"Revokes an existing API key and returns a replacement key. Requires the management token returned by /v1/auth/verify.","parameters":[{"name":"keyId","in":"path","required":true,"schema":{"type":"string"},"description":"API key identifier returned by the key management endpoints."},{"name":"X-Tvfin-Management-Token","in":"header","required":false,"schema":{"type":"string"},"description":"Short-lived management token returned by /v1/auth/verify."}],"requestBody":{"required":false,"description":"Replacement key options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateRequest"},"example":{"label":"production"}}}},"responses":{"200":{"description":"API key rotation response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"api_key":"tvfin_live_example","management_token":"tvfin_mgmt_example"}}}}}}},"202":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"accepted":true,"message":"Verification email queued."}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Unauthorized.","value":{"ok":false,"error":{"code":"unauthorized","message":"A valid API key or management token is required."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}}}}},"/v1/auth/limits/requests":{"post":{"tags":["Auth"],"summary":"Request Higher Limits","operationId":"requestHigherLimits","description":"Submit a custom RPS request for an authenticated API key. Limited to 1 request per minute per key.","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."}],"requestBody":{"required":false,"description":"Requested rate limits and use case.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitRequest"},"example":{"requested_rps":100,"requested_origin_rps":25,"use_case":"production agent workflow","message":"Short description of traffic pattern and data needed."}}}},"responses":{"200":{"description":"Custom limit request response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"api_key":"tvfin_live_example","management_token":"tvfin_mgmt_example"}}}}}}},"202":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"accepted":true,"message":"Verification email queued."}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Unauthorized.","value":{"ok":false,"error":{"code":"unauthorized","message":"A valid API key or management token is required."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}}}}},"/v1/health":{"get":{"tags":["System"],"summary":"Service Health","operationId":"getHealth","description":"Returns service status, shipped contract counts, WebSocket policy, identity tiers, and current public rate limits. Use this endpoint for uptime checks and client capability discovery.","responses":{"200":{"description":"Service health response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"name":"tvfin","version":"0.2.0","shipped_rest_contracts":25,"shipped_websocket_methods":17,"websocket_policy":"REST is hosted by tvfin; direct TradingView WebSocket access is outside the hosted REST API.","rate_limits":{"anonymous":{"requestsPerMinute":1200,"originPerMinute":120},"key":{"requestsPerMinute":30000,"originPerMinute":3000}}}}}}}}}}},"/v1/endpoints":{"get":{"tags":["System"],"summary":"Endpoint Catalog","operationId":"getEndpointCatalog","description":"Returns the machine-readable tvfin endpoint catalog, including route names, paths, methods, and freshness windows.","responses":{"200":{"description":"Endpoint catalog response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointCatalogResponse"},"examples":{"success":{"summary":"Success","value":{"shipped_route_count":17,"shipped_rest_contract_count":25,"routes":{"symbols_search":{"path":"/v1/symbols/search","methods":["GET"],"tag":"Symbols","summary":"Search Symbols","description":"Search TradingView's public symbol catalog by company, ticker, exchange, country, or asset type."},"news_headlines":{"path":"/v1/news/headlines","methods":["GET"],"tag":"News","summary":"News Headlines","description":"Return current TradingView news headlines with language, market, provider, and symbol filters."}}}}}}}}}}},"/v1/openapi.json":{"get":{"tags":["System"],"summary":"OpenAPI Document","operationId":"getOpenApiDocument","description":"Returns the live OpenAPI 3.1 document used by docs.tvfin.bluedoor.sh and API tooling.","responses":{"200":{"description":"OpenAPI document.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiDocument"},"examples":{"success":{"summary":"Success","value":{"openapi":"3.1.0","info":{"title":"tvfin TradingView API","version":"0.2.0"},"servers":[{"url":"https://api.tvfin.bluedoor.sh"}]}}}}}}}}},"/v1/symbols/search":{"get":{"tags":["Symbols"],"summary":"Search Symbols","description":"Search TradingView's public symbol catalog by company, ticker, exchange, country, or asset type.","operationId":"getSymbolsSearch","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Search query. Aliases: query, text."}],"responses":{"200":{"description":"Search Symbols response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"symbols_search","status":"ok","generated_at":"2026-05-28T21:02:02.098Z","freshness":{"as_of":"2026-05-28T21:02:02.098Z","max_age_seconds":120,"stale":false}},"data":[{"symbol":"AAPL","description":"Apple Inc.","type":"stock","exchange":"NASDAQ","found_by_isin":false,"found_by_cusip":false,"cusip":"037833100","isin":"US0378331005","cik_code":"0000320193","currency_code":"USD","currency-logoid":"country/US","logoid":"apple","logo":{"style":"single","logoid":"apple"},"provider_id":"ice","source_logoid":"source/NASDAQ","source2":{"id":"NASDAQ","name":"Nasdaq Stock Market","description":"Nasdaq Stock Market"},"source_id":"NASDAQ","country":"US","is_primary_listing":true,"typespecs":["common"]}]}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/news/headlines":{"get":{"tags":["News"],"summary":"News Headlines","description":"Return current TradingView news headlines with language, market, provider, and symbol filters.","operationId":"getNewsHeadlines","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."}],"responses":{"200":{"description":"News Headlines response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"news_headlines","status":"ok","generated_at":"2026-05-28T20:59:05.625Z","freshness":{"as_of":"2026-05-28T20:59:05.625Z","max_age_seconds":600,"stale":false}},"data":{"items":[{"id":"tag:reuters.com,2026:newsml_FWN42513R:0","title":"Apollo Shops $36 Billion Debt Deal To Buy Google Chips For Anthropic - Bloomberg News","provider":"reuters","sourceLogoId":"reuters","published":1780001853,"source":"Reuters","urgency":2,"permission":"headline","relatedSymbols":[{"symbol":"NSE:APOLLO","logoid":"apollo-micro-systems-limited"}],"storyPath":"/news/reuters.com,2026:newsml_FWN42513R:0-apollo-shops-36-billion-debt-deal-to-buy-google-chips-for-anthropic-bloomberg-news/"}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/news/latest":{"get":{"tags":["News"],"summary":"Latest News","description":"Return the latest TradingView news headlines.","operationId":"getNewsLatest","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."}],"responses":{"200":{"description":"Latest News response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"news_latest","status":"ok","generated_at":"2026-05-28T21:02:03.370Z","freshness":{"as_of":"2026-05-28T21:02:03.370Z","max_age_seconds":600,"stale":false}},"data":{"astDescription":{"type":"root","children":[{"type":"list","children":[{"type":"*","children":[{"type":"p","children":["ePlus inc "]}]}]}]},"language":"en","copyright":"Copyright Thomson Reuters 2026. Click For Restrictions - https://agency.reuters.com/en/copyright.html","id":"tag:reuters.com,2026:newsml_L8N4252L6:0","title":"ePlus inc reports results for the quarter ended March 31 - Earnings Summary","provider":"reuters","sourceLogoId":"reuters","published":1780002086,"source":"Reuters","urgency":2,"permission":"headline","relatedSymbols":[{"symbol":"NASDAQ:PLUS","logoid":"eplus"}],"storyPath":"/news/reuters.com,2026:newsml_L8N4252L6:0-eplus-inc-reports-results-for-the-quarter-ended-march-31-earnings-summary/"}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/news/flow":{"get":{"tags":["News"],"summary":"News Flow","description":"Return TradingView's news flow feed. Use version=v1 or version=v2 when a specific feed version is needed.","operationId":"getNewsFlow","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"version","in":"query","required":false,"schema":{"type":"string","enum":["v1","v2"]}}],"responses":{"200":{"description":"News Flow response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"news_flow","status":"ok","generated_at":"2026-05-28T20:59:00.302Z","freshness":{"as_of":"2026-05-28T20:59:00.302Z","max_age_seconds":600,"stale":false}},"data":{"items":[{"id":"tag:reuters.com,2026:newsml_FWN42513R:0","title":"Apollo Shops $36 Billion Debt Deal To Buy Google Chips For Anthropic - Bloomberg News","published":1780001853,"urgency":2,"permission":"headline","relatedSymbols":[{"symbol":"NSE:APOLLO","logoid":"apollo-micro-systems-limited"}],"storyPath":"/news/reuters.com,2026:newsml_FWN42513R:0-apollo-shops-36-billion-debt-deal-to-buy-google-chips-for-anthropic-bloomberg-news/","provider":{"id":"reuters","name":"Reuters","logo_id":"reuters"}}],"pagination":{"cursor":"eyJfaWQiOiJnbG9iZW5ld3N3aXJlOmY3ODcwZmI0NzA5NGIiLCJwdWJkYXRlIjoxNzc5OTk5NzIwMDAwfQ=="}}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/symbols/{symbol}/news":{"get":{"tags":["News"],"summary":"Symbol News","description":"Return news for a TradingView symbol such as NASDAQ:AAPL or AAPL with exchange=NASDAQ.","operationId":"getSymbolNews","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."}],"responses":{"200":{"description":"Symbol News response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"symbol_news","status":"ok","generated_at":"2026-05-28T21:02:04.710Z","freshness":{"as_of":"2026-05-28T21:02:04.710Z","max_age_seconds":600,"stale":false}},"data":{"sections":[{"id":"press_release","title":"Press releases"}],"items":[{"id":"zacks:1783834ef094b:0","title":"Apple Intelligence Drives Up iPhone & Mac Sales: More Upside Ahead?","provider":"zacks","sourceLogoId":"zacks","published":1779984780,"source":"Zacks","urgency":2,"link":"https://www.zacks.com/stock/news/2928528/apple-intelligence-drives-up-iphone-mac-sales-more-upside-ahead?cid=CS-TRADINGVIEW-FT-analyst_blog|quick_take-2928528","relatedSymbols":[{"symbol":"NASDAQ:AAPL","logoid":"apple"}],"storyPath":"/news/zacks:1783834ef094b:0-apple-intelligence-drives-up-iphone-mac-sales-more-upside-ahead/"}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/calendar/economic":{"get":{"tags":["Calendar"],"summary":"Economic Calendar","description":"Return upcoming and recent economic calendar events.","operationId":"getCalendarEconomic","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Economic Calendar response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"calendar_economic","status":"ok","generated_at":"2026-05-28T21:03:18.580Z","freshness":{"as_of":"2026-05-28T21:03:18.580Z","max_age_seconds":3,"stale":false}},"data":{"status":"ok","result":[{"id":"401076","title":"ANZ Roy Morgan Consumer Confidence","country":"NZ","indicator":"ANZ Roy Morgan Consumer Confidence Index","comment":"In New Zealand, ANZ Roy Morgan Consumer Confidence is a monthly measure of consumer confidence across New Zealand households and how this affects their spending behavior.","category":"cnsm","period":"May","referenceDate":"2026-05-31T00:00:00Z","source":"ANZ Bank","source_url":"https://www.anz.co.nz/personal/","actual":null,"previous":80.3,"forecast":null,"actualRaw":null,"previousRaw":80.3,"forecastRaw":null,"currency":"NZD","importance":-1,"date":"2026-05-28T22:00:00.000Z"}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/calendar/economic/reuters":{"get":{"tags":["Calendar"],"summary":"Reuters Economic Calendar","description":"Return the Reuters-backed economic calendar feed exposed in TradingView.","operationId":"getCalendarReuters","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Reuters Economic Calendar response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"calendar_reuters","status":"ok","generated_at":"2026-05-28T21:03:20.665Z","freshness":{"as_of":"2026-05-28T21:03:20.665Z","max_age_seconds":5,"stale":false}},"data":{"result":[{"actual":null,"comment":"Capacity utilization is the extent to which a country uses its potential production capacity. 100% denotes full capacity being used.","country":"KR","currency":"KRW","date":"2026-05-28T23:00:00.000Z","forecast":0.3,"id":"16357680 2026-05-28 23:00:00 +0000 UTC Industrial Output Growth South Korea-Industrial output prelim-Industrial Output Growth","importance":-1,"indicator":"Industrial Output Growth","link":"","period":"Apr. 2026","previous":0.3,"scale":"","source":"KOSTAT","title":"Industrial Output Growth","unit":"%"}],"status":"ok"}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/events/earnings":{"get":{"tags":["Events"],"summary":"Earnings Events","description":"Return earnings calendar rows from TradingView scanner data.","operationId":"getEventsEarnings","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Earnings Events response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"events_earnings","status":"ok","generated_at":"2026-05-28T21:03:21.897Z","freshness":{"as_of":"2026-05-28T21:03:21.897Z","max_age_seconds":30,"stale":false}},"data":{"totalCount":8169,"data":[{"s":"OTC:EDDRF","d":["EDDRF","eDreams ODIGEO",1772107200,0.836486022,484158584.7352941]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}},"post":{"tags":["Events"],"summary":"Earnings Events","description":"Return earnings calendar rows from TradingView scanner data.","operationId":"postEventsEarnings","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Earnings Events response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"events_earnings","status":"ok","generated_at":"2026-05-28T21:03:21.897Z","freshness":{"as_of":"2026-05-28T21:03:21.897Z","max_age_seconds":30,"stale":false}},"data":{"totalCount":8169,"data":[{"s":"OTC:EDDRF","d":["EDDRF","eDreams ODIGEO",1772107200,0.836486022,484158584.7352941]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}},"requestBody":{"required":false,"description":"Earnings Events request options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScannerRequest"},"example":{"columns":["name","close","volume"],"range":[0,25],"sort":{"sortBy":"market_cap_basic","sortOrder":"desc"}}}}}}},"/v1/events/dividends":{"get":{"tags":["Events"],"summary":"Dividend Events","description":"Return dividend calendar rows from TradingView scanner data.","operationId":"getEventsDividends","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Dividend Events response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"events_dividends","status":"ok","generated_at":"2026-05-28T21:03:22.838Z","freshness":{"as_of":"2026-05-28T21:03:22.838Z","max_age_seconds":30,"stale":false}},"data":{"totalCount":1534,"data":[{"s":"OTC:IMSIF","d":["IMSIF","iShares Global Clean Energy Transition UCITS ETD USD",null,null]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}},"post":{"tags":["Events"],"summary":"Dividend Events","description":"Return dividend calendar rows from TradingView scanner data.","operationId":"postEventsDividends","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Dividend Events response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"events_dividends","status":"ok","generated_at":"2026-05-28T21:03:22.838Z","freshness":{"as_of":"2026-05-28T21:03:22.838Z","max_age_seconds":30,"stale":false}},"data":{"totalCount":1534,"data":[{"s":"OTC:IMSIF","d":["IMSIF","iShares Global Clean Energy Transition UCITS ETD USD",null,null]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}},"requestBody":{"required":false,"description":"Dividend Events request options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScannerRequest"},"example":{"columns":["name","close","volume"],"range":[0,25],"sort":{"sortBy":"market_cap_basic","sortOrder":"desc"}}}}}}},"/v1/screeners/{market}/metadata":{"get":{"tags":["Screeners"],"summary":"Screener Metadata","description":"Return available columns and metadata for a TradingView market screener.","operationId":"getScreenersMetadata","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"market","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Screener Metadata response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"screeners_metadata","status":"ok","generated_at":"2026-05-28T20:58:36.357Z","freshness":{"as_of":"2026-05-28T20:58:36.357Z","max_age_seconds":300,"stale":false}},"data":{"financial_currency":"USD","fields":[{"n":"debt_to_equity_fy","t":"number","r":null}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/screeners/{market}/search":{"get":{"tags":["Screeners"],"summary":"Run Screener","description":"Run a TradingView market screener using friendly query parameters or a scanner JSON body.","operationId":"getScreenersSearch","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"market","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Run Screener response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"screeners_search","status":"ok","generated_at":"2026-05-28T21:02:11.601Z","freshness":{"as_of":"2026-05-28T21:02:11.601Z","max_age_seconds":300,"stale":false}},"data":{"totalCount":16002,"data":[{"s":"NASDAQ:NVDA","d":["NVDA","NVIDIA Corporation",214.25,0.776105362182505,139079971,5184850148851.347,"Electronic Technology","Semiconductors",0.13333333333333333]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}},"post":{"tags":["Screeners"],"summary":"Run Screener","description":"Run a TradingView market screener using friendly query parameters or a scanner JSON body.","operationId":"postScreenersSearch","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"market","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Run Screener response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"screeners_search","status":"ok","generated_at":"2026-05-28T21:02:11.601Z","freshness":{"as_of":"2026-05-28T21:02:11.601Z","max_age_seconds":300,"stale":false}},"data":{"totalCount":16002,"data":[{"s":"NASDAQ:NVDA","d":["NVDA","NVIDIA Corporation",214.25,0.776105362182505,139079971,5184850148851.347,"Electronic Technology","Semiconductors",0.13333333333333333]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}},"requestBody":{"required":false,"description":"Run Screener request options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScannerRequest"},"example":{"columns":["name","close","volume"],"range":[0,25],"sort":{"sortBy":"market_cap_basic","sortOrder":"desc"}}}}}}},"/v1/screeners/global/search":{"get":{"tags":["Screeners"],"summary":"Run Global Screener","description":"Run a cross-market TradingView scanner query.","operationId":"getScreenersGlobal","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Run Global Screener response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"screeners_global","status":"ok","generated_at":"2026-05-28T21:02:12.418Z","freshness":{"as_of":"2026-05-28T21:02:12.418Z","max_age_seconds":300,"stale":false}},"data":{"totalCount":16002,"data":[{"s":"NASDAQ:NVDA","d":["NVDA","NVIDIA Corporation",214.25,0.776105362182505,139079971,"america",5184850148851.347,"USD"]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}},"post":{"tags":["Screeners"],"summary":"Run Global Screener","description":"Run a cross-market TradingView scanner query.","operationId":"postScreenersGlobal","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Run Global Screener response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"screeners_global","status":"ok","generated_at":"2026-05-28T21:02:12.418Z","freshness":{"as_of":"2026-05-28T21:02:12.418Z","max_age_seconds":300,"stale":false}},"data":{"totalCount":16002,"data":[{"s":"NASDAQ:NVDA","d":["NVDA","NVIDIA Corporation",214.25,0.776105362182505,139079971,"america",5184850148851.347,"USD"]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}},"requestBody":{"required":false,"description":"Run Global Screener request options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScannerRequest"},"example":{"columns":["name","close","volume"],"range":[0,25],"sort":{"sortBy":"market_cap_basic","sortOrder":"desc"}}}}}}},"/v1/options/{symbol}/chain":{"get":{"tags":["Options"],"summary":"Options Chain","description":"Return option contracts for an underlying symbol, including strikes, expirations, prices, volume, Greeks, and IV fields when available.","operationId":"getOptionsChain","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Options Chain response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"options_chain","status":"ok","generated_at":"2026-05-28T21:02:13.320Z","freshness":{"as_of":"2026-05-28T21:02:13.320Z","max_age_seconds":300,"stale":false}},"data":{"totalCount":3636,"data":[{"s":"OPRA:AAPL270617P270.0","d":["AAPL270617P270.0",null,270,20270617,"put","NASDAQ:AAPL",13.5,12.6,-0.23455808853225218,0.003724474024897076,-0.030508452441175563,0.9845850498345837,-0.909229262537599,0.2569844616027893,null]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}},"post":{"tags":["Options"],"summary":"Options Chain","description":"Return option contracts for an underlying symbol, including strikes, expirations, prices, volume, Greeks, and IV fields when available.","operationId":"postOptionsChain","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"columns","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated scanner columns."}],"responses":{"200":{"description":"Options Chain response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"options_chain","status":"ok","generated_at":"2026-05-28T21:02:13.320Z","freshness":{"as_of":"2026-05-28T21:02:13.320Z","max_age_seconds":300,"stale":false}},"data":{"totalCount":3636,"data":[{"s":"OPRA:AAPL270617P270.0","d":["AAPL270617P270.0",null,270,20270617,"put","NASDAQ:AAPL",13.5,12.6,-0.23455808853225218,0.003724474024897076,-0.030508452441175563,0.9845850498345837,-0.909229262537599,0.2569844616027893,null]}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}},"requestBody":{"required":false,"description":"Options Chain request options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScannerRequest"},"example":{"columns":["name","close","strike","expiration","option-type","iv"],"range":[0,50]}}}}}},"/v1/options/{symbol}/implied-volatility":{"get":{"tags":["Options"],"summary":"Implied Volatility","description":"Return TradingView's in-time implied volatility series for an underlying symbol.","operationId":"getOptionsImpliedVolatility","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."}],"responses":{"200":{"description":"Implied Volatility response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"options_implied_volatility","status":"ok","generated_at":"2026-05-28T20:58:42.290Z","freshness":{"as_of":"2026-05-28T20:58:42.290Z","max_age_seconds":300,"stale":false}},"data":{"symbol":"NASDAQ:AAPL","real-ivs":[{"span":{"value":0,"unit":"d"},"value":0.22774952054023745}],"standard-ivs":[{"span":{"value":1,"unit":"w"},"value":0.1998086501525428}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/options/{symbol}/underlying-aggregates":{"get":{"tags":["Options"],"summary":"Underlying Aggregates","description":"Return aggregate option-underlying metrics for a symbol.","operationId":"getOptionsUnderlyingAggregates","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."}],"responses":{"200":{"description":"Underlying Aggregates response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"options_underlying_aggregates","status":"ok","generated_at":"2026-05-28T20:58:43.247Z","freshness":{"as_of":"2026-05-28T20:58:43.247Z","max_age_seconds":300,"stale":false}},"data":{"underlying":"NASDAQ:AAPL","ts":1779998743747,"yield_1y":{"mean":0.0018838816305751017,"std_dev":0.013887078476781074}}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/ideas":{"get":{"tags":["Ideas"],"summary":"Ideas","description":"Return public TradingView ideas, optionally filtered by symbol.","operationId":"getIdeas","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."}],"responses":{"200":{"description":"Ideas response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"ideas","status":"ok","generated_at":"2026-05-28T21:02:14.802Z","freshness":{"as_of":"2026-05-28T21:02:14.802Z","max_age_seconds":120,"stale":false}},"data":{"count":1000,"page_size":20,"page_count":50,"next":"https://www.tradingview.com/api/v1/ideas/?page=11&symbol=NASDAQ%3AAAPL&sort=recent&type=all","previous":"https://www.tradingview.com/api/v1/ideas/?page=9&symbol=NASDAQ%3AAAPL&sort=recent&type=all","results":[{"id":21575807,"image_url":"yX3z6I5O","name":"APPLE The Target Is UP! BUY!","description":"My dear subscribers, this is my opinion on the APPLE next move: the instrument tests an important psychological level 257.54. Bias - Bullish.","created_at":"2026-03-07T12:25:44+00:00","updated_at":null,"date_timestamp":1772886344,"updated_date_timestamp":null,"chart_url":"https://www.tradingview.com/chart/AAPL/yX3z6I5O-APPLE-The-Target-Is-UP-BUY/","is_public":true,"is_visible":true,"is_video":false,"is_education":false,"is_script":false,"is_picked":false,"is_hot":true,"is_reviewed":true,"is_platinum_broker_idea":false,"script_type":null,"script_access":null,"script_id_part":null,"version":null,"script_package_id":null,"video_duration":"0","video_cam":false,"video_filename":null,"comments_count":1,"views_count":0,"symbol":{"name":"NASDAQ:AAPL","full_name":"NASDAQ:AAPL","short_name":"AAPL","exchange":"NASDAQ","type":"stock","logo":{"style":"single","logoid":"apple"},"logo_id":"apple","currency_logo_id":"country/US","base_currency_logo_id":null,"logo_urls":["https://s3-symbol-logo.tradingview.com/apple.svg"],"interval":"240","direction":1,"badge":{"label":"NASDAQ:AAPL","url":"/symbols/NASDAQ-AAPL/"}},"user":{"id":40418649,"username":"AnabelSignals","badges":[{"name":"pro:pro_premium","verbose_name":"Premium"}],"picture_url":"https://s3.tradingview.com/userpics/40418649-7jZX.png","mid_picture_url":"https://s3.tradingview.com/userpics/40418649-7jZX_mid.png","is_pro":true,"pro_plan":"pro_premium","is_broker":false,"broker_name":null,"broker_plan":null},"image":{"big":"https://s3.tradingview.com/y/yX3z6I5O_big.png","middle":"https://s3.tradingview.com/y/yX3z6I5O_mid.png","middle_webp":"https://s3.tradingview.com/y/yX3z6I5O_mid.webp","bg_color":"#9dffb3"},"reputation":null,"actions":null,"is_liked":false,"is_favorite":false,"likes_count":5}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}},"/v1/scripts":{"get":{"tags":["Scripts"],"summary":"Scripts","description":"Return public TradingView scripts, optionally filtered by symbol.","operationId":"getScripts","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"type":"string"},"description":"Bearer API key from /v1/auth/verify. X-Tvfin-Key is also supported."},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"},"description":"Request fresh source data when available."}],"responses":{"200":{"description":"Scripts response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TvfinResponse"},"examples":{"success":{"summary":"Success","value":{"meta":{"provider":"tradingview","route":"scripts","status":"ok","generated_at":"2026-05-28T21:02:16.171Z","freshness":{"as_of":"2026-05-28T21:02:16.171Z","max_age_seconds":120,"stale":false}},"data":{"count":1000,"page_size":20,"page_count":50,"next":"https://www.tradingview.com/api/v1/scripts/?page=2&symbol=NASDAQ%3AAAPL&sort=recent","previous":null,"results":[{"id":22083425,"image_url":"Wz3MYMtD","name":"1% Gamma Indicator + VP","description":"Gamma Indicator + VP. Automatically displays key Gamma Exposure levels and Volume Profile data for US equities and futures.","created_at":"2026-05-28T14:21:48+00:00","updated_at":null,"date_timestamp":1779978108,"updated_date_timestamp":null,"chart_url":"https://www.tradingview.com/script/Wz3MYMtD-1-Gamma-Indicator-VP/","is_public":true,"is_visible":true,"is_video":false,"is_education":false,"is_script":true,"is_picked":false,"is_hot":true,"is_reviewed":true,"is_platinum_broker_idea":false,"script_type":"indicator","script_access":1,"script_id_part":"PUB;a84257ba0d55416a9386285a46c1b25c","version":"1","script_package_id":null,"video_duration":"0","video_cam":false,"video_filename":null,"comments_count":0,"views_count":0,"symbol":{"name":"NASDAQ:AAPL","full_name":"NASDAQ:AAPL","short_name":"AAPL","exchange":"NASDAQ","type":"stock","logo":{"style":"single","logoid":"apple"},"logo_id":"apple","currency_logo_id":"country/US","base_currency_logo_id":null,"logo_urls":["https://s3-symbol-logo.tradingview.com/apple.svg"],"interval":"5","direction":0,"badge":{"label":"NASDAQ:AAPL","url":"/symbols/NASDAQ-AAPL/"}},"user":{"id":33543134,"username":"james063063","badges":[{"name":"pro:pro_premium","verbose_name":"Premium"}],"picture_url":"https://s3.tradingview.com/userpics/33543134-4bWQ.png","mid_picture_url":"https://s3.tradingview.com/userpics/33543134-4bWQ_mid.png","is_pro":true,"pro_plan":"pro_premium","is_broker":false,"broker_name":null,"broker_plan":null},"image":{"big":"https://s3.tradingview.com/w/Wz3MYMtD_big.png?v=1779978112","middle":"https://s3.tradingview.com/w/Wz3MYMtD_mid.png?v=1779978112","middle_webp":"https://s3.tradingview.com/w/Wz3MYMtD_mid.webp?v=1779978112","bg_color":"#ffffff"},"reputation":null,"actions":null,"is_liked":false,"is_favorite":false,"likes_count":13}]}}}}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Bad request.","value":{"ok":false,"error":{"code":"invalid_request","message":"The request could not be validated."}}}}}}},"401":{"description":"Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Invalid API key.","value":{"ok":false,"error":{"code":"unauthorized","message":"The API key is missing or invalid."}}}}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Rate limited.","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."}}}}}}},"502":{"description":"Origin error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"error":{"summary":"Origin error.","value":{"ok":false,"error":{"code":"lambda_error","message":"AWS origin fetcher returned an invalid response."}}}}}}}}}}},"x-tvfin-websocket-policy":"REST is hosted by tvfin; direct TradingView WebSocket access is outside the hosted REST API.","externalDocs":{"description":"TradingView source docs","url":"https://bluedoor.sh/apis/financial-data/sources/tvfin"}}