{"openapi":"3.1.0","info":{"title":"yfin API Reference","version":"0.1.0","description":"Yahoo Finance source API contract for bluedoor Financial Data.\n\nSource-native Yahoo Finance-backed routes for quotes, historical prices, options, screeners, and fundamentals.\n\nHosted market data API for quotes, historical prices, options chains, fundamentals, screeners, market calendars, symbol search, and research workflows.","x-bluedoor-source":{"source_id":"yfin","adapter_slug":"yahoo-finance","upstream":"finance.yahoo.com","docs_url":"https://bluedoor.sh/apis/financial-data/sources/yfin"}},"servers":[{"url":"https://api.yfin.dev","description":"Current source API host"},{"url":"https://api.bluedoor.sh/adapters/yahoo-finance","description":"bluedoor adapter namespace"}],"tags":[{"name":"Market Data","description":"Current quotes, market state, and broad market context."},{"name":"Prices","description":"Historical and compact time-series price data."},{"name":"Options","description":"Options expirations and chains."},{"name":"Fundamentals","description":"Company, fund, and financial metric data."},{"name":"Search","description":"Symbol search, lookup, and autocomplete."},{"name":"Discovery","description":"Screeners, sector data, industry data, and trending symbols."},{"name":"Calendar","description":"Date-based market events."},{"name":"Research","description":"Research-oriented symbol context and related instruments."},{"name":"Auth","description":"Email verification, API keys, and custom rate-limit requests."},{"name":"System","description":"Service metadata and advanced endpoints."}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Use Authorization: Bearer <api_key> for yfin API keys."},"yfinApiKey":{"type":"apiKey","in":"header","name":"X-Yfin-Key","description":"Alternative API key header."}},"schemas":{"GenericSuccessResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"description":"Endpoint-specific response data.","anyOf":[{"type":"object"},{"type":"array"},{"type":"string"},{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"null"}]}},"required":["meta","data"]},"HealthResponse":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"name":{"type":"string","description":"Service name."},"version":{"type":"string","description":"API version."},"shipped_rest_contracts":{"type":"integer","description":"Number of currently available REST contracts."}},"required":["ok","name","version","shipped_rest_contracts"]},"EndpointCatalogResponse":{"type":"object","properties":{"catalog_version":{"type":"string"},"endpoint_count":{"type":"integer"},"identity_policy":{"type":"object","properties":{"anonymous":{"type":"string"},"contact":{"type":"string"},"auth":{"type":"string"},"key":{"type":"string"},"limits":{"type":"string"}}},"routes":{"type":"object","description":"Map of public route names to public yfin paths.","additionalProperties":{"$ref":"#/components/schemas/EndpointCatalogRoute"}},"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/EndpointCatalogItem"}}},"required":["catalog_version","endpoint_count","identity_policy","routes","endpoints"]},"EndpointCatalogItem":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"methods":{"type":"array","items":{"type":"string","enum":["GET","POST"]}},"description":{"type":"string"}},"required":["name","path","methods","description"]},"EndpointCatalogRoute":{"type":"object","properties":{"path":{"type":"string"}},"required":["path"]},"ResponseMeta":{"type":"object","properties":{"provider":{"type":"string","example":"yahoo"},"generated_at":{"type":"string","format":"date-time","description":"Time the yfin response was generated."},"route":{"type":"string","description":"Public yfin route name."}},"required":["provider","generated_at","route"]},"FormattedValue":{"type":"object","properties":{"raw":{"description":"Raw value from the data provider.","anyOf":[{"type":"object"},{"type":"array"},{"type":"string"},{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"null"}]},"fmt":{"type":"string","description":"Display-formatted value."},"longFmt":{"type":"string","description":"Long display-formatted value when available."}}},"YahooError":{"type":"object","properties":{"code":{"type":"string"},"description":{"type":"string"}}},"AuthOtpRequest":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"],"additionalProperties":false},"AuthOtpResponse":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"email":{"type":"string","format":"email"},"expires_in_seconds":{"type":"integer","minimum":1},"delivery":{"type":"string","enum":["email"]},"message_id":{"type":"string"}},"required":["email","expires_in_seconds","delivery"]}},"required":["ok","data"]},"AuthVerifyRequest":{"type":"object","properties":{"email":{"type":"string","format":"email"},"code":{"type":"string","pattern":"^\\d{6}$"},"label":{"type":"string"},"expires_in_days":{"type":"integer","minimum":1,"maximum":365},"create_key":{"type":"boolean","default":true}},"required":["email","code"],"additionalProperties":false},"ApiKeyRecord":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string","format":"email"},"label":{"type":"string"},"created_at":{"type":"integer"},"expires_at":{"type":"integer"},"revoked_at":{"anyOf":[{"type":"integer"},{"type":"null"}]},"last_used_at":{"anyOf":[{"type":"integer"},{"type":"null"}]},"requests_per_minute":{"type":"integer"},"origin_per_minute":{"type":"integer"}},"required":["id","email","label","created_at","expires_at","revoked_at","last_used_at","requests_per_minute","origin_per_minute"]},"AuthVerifyResponse":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"email":{"type":"string","format":"email"},"management_token":{"type":"string"},"token_type":{"type":"string","enum":["Bearer"]},"management_expires_in_seconds":{"type":"integer","minimum":1},"api_key":{"type":"string"},"key":{"$ref":"#/components/schemas/ApiKeyRecord"}},"required":["email","management_token","token_type","management_expires_in_seconds"]}},"required":["ok","data"]},"AuthLimitRequest":{"type":"object","properties":{"requested_rps":{"type":"number","minimum":0},"use_case":{"type":"string","maxLength":500},"message":{"type":"string","maxLength":2000}},"additionalProperties":false},"AuthLimitRequestResponse":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"status":{"type":"string","enum":["received"]},"notification":{"type":"object","properties":{"mode":{"type":"string","enum":["email","email_failed","disabled"]}},"required":["mode"]},"message":{"type":"string"}},"required":["id","email","status","notification","message"]}},"required":["ok","data"]},"QuoteResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"quoteResponse":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/QuoteItem"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["quoteResponse"]}},"required":["meta","data"]},"QuoteItem":{"type":"object","properties":{"symbol":{"type":"string","description":"Ticker or instrument symbol."},"shortName":{"type":"string"},"longName":{"type":"string"},"quoteType":{"type":"string","description":"Provider quote type such as EQUITY, ETF, INDEX, CURRENCY, CRYPTOCURRENCY, or MUTUALFUND."},"typeDisp":{"type":"string"},"currency":{"type":"string"},"exchange":{"type":"string"},"fullExchangeName":{"type":"string"},"exchangeTimezoneName":{"type":"string"},"exchangeTimezoneShortName":{"type":"string"},"market":{"type":"string"},"marketState":{"type":"string"},"regularMarketTime":{"type":"integer"},"regularMarketPrice":{"type":"number"},"regularMarketChange":{"type":"number"},"regularMarketChangePercent":{"type":"number"},"regularMarketPreviousClose":{"type":"number"},"regularMarketOpen":{"type":"number"},"regularMarketDayHigh":{"type":"number"},"regularMarketDayLow":{"type":"number"},"regularMarketVolume":{"type":"integer"},"bid":{"type":"number"},"ask":{"type":"number"},"fiftyTwoWeekRange":{"type":"string"},"fiftyTwoWeekHigh":{"type":"number"},"fiftyTwoWeekLow":{"type":"number"},"trailingPE":{"type":"number"},"dividendRate":{"type":"number"},"epsTrailingTwelveMonths":{"type":"number"},"marketCap":{"type":"integer"},"language":{"type":"string"},"region":{"type":"string"},"quoteSourceName":{"type":"string"},"triggerable":{"type":"boolean"}},"required":["symbol","quoteType"]},"HistoryResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"chart":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/ChartResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["chart"]}},"required":["meta","data"]},"ChartResult":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ChartMeta"},"timestamp":{"type":"array","items":{"type":"integer"}},"indicators":{"$ref":"#/components/schemas/ChartIndicators"},"events":{"type":"object","description":"Corporate actions keyed by event type when actions=true.","additionalProperties":true}},"required":["meta","timestamp","indicators"]},"ChartMeta":{"type":"object","properties":{"currency":{"type":"string"},"symbol":{"type":"string"},"exchangeName":{"type":"string"},"fullExchangeName":{"type":"string"},"instrumentType":{"type":"string"},"firstTradeDate":{"type":"integer"},"regularMarketTime":{"type":"integer"},"hasPrePostMarketData":{"type":"boolean"},"gmtoffset":{"type":"integer"},"timezone":{"type":"string"},"exchangeTimezoneName":{"type":"string"},"regularMarketPrice":{"type":"number"},"chartPreviousClose":{"type":"number"},"previousClose":{"type":"number"},"scale":{"type":"integer"},"priceHint":{"type":"integer"},"range":{"type":"string"},"dataGranularity":{"type":"string"}}},"ChartIndicators":{"type":"object","properties":{"quote":{"type":"array","items":{"$ref":"#/components/schemas/ChartQuoteSeries"}},"adjclose":{"type":"array","items":{"$ref":"#/components/schemas/AdjustedCloseSeries"}}}},"ChartQuoteSeries":{"type":"object","properties":{"open":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"null"}]}},"high":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"null"}]}},"low":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"null"}]}},"close":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"null"}]}},"volume":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"null"}]}}}},"AdjustedCloseSeries":{"type":"object","properties":{"adjclose":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"null"}]}}}},"SparkResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"spark":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/SparkResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["spark"]}},"required":["meta","data"]},"SparkResult":{"type":"object","properties":{"symbol":{"type":"string"},"response":{"type":"array","items":{"$ref":"#/components/schemas/ChartResult"}}},"required":["symbol","response"]},"OptionsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"optionChain":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/OptionChainResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["optionChain"]}},"required":["meta","data"]},"OptionChainResult":{"type":"object","properties":{"underlyingSymbol":{"type":"string"},"expirationDates":{"type":"array","items":{"type":"integer"}},"strikes":{"type":"array","items":{"type":"number"}},"hasMiniOptions":{"type":"boolean"},"quote":{"$ref":"#/components/schemas/QuoteItem"},"options":{"type":"array","items":{"$ref":"#/components/schemas/OptionExpiration"}}},"required":["underlyingSymbol","expirationDates","strikes","quote","options"]},"OptionExpiration":{"type":"object","properties":{"expirationDate":{"type":"integer"},"hasMiniOptions":{"type":"boolean"},"calls":{"type":"array","items":{"$ref":"#/components/schemas/OptionContract"}},"puts":{"type":"array","items":{"$ref":"#/components/schemas/OptionContract"}}},"required":["expirationDate","calls","puts"]},"OptionContract":{"type":"object","properties":{"contractSymbol":{"type":"string"},"strike":{"type":"number"},"currency":{"type":"string"},"lastPrice":{"type":"number"},"change":{"type":"number"},"percentChange":{"type":"number"},"volume":{"type":"integer"},"openInterest":{"type":"integer"},"bid":{"type":"number"},"ask":{"type":"number"},"contractSize":{"type":"string"},"expiration":{"type":"integer"},"lastTradeDate":{"type":"integer"},"impliedVolatility":{"type":"number"},"inTheMoney":{"type":"boolean"}},"required":["contractSymbol","strike","expiration"]},"FundamentalsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"quoteSummary":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/QuoteSummaryResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["quoteSummary"]}},"required":["meta","data"]},"QuoteSummaryResult":{"type":"object","properties":{"price":{"$ref":"#/components/schemas/QuotePriceModule"},"summaryDetail":{"$ref":"#/components/schemas/SummaryDetailModule"},"financialData":{"$ref":"#/components/schemas/FinancialDataModule"},"assetProfile":{"$ref":"#/components/schemas/AssetProfileModule"},"calendarEvents":{"$ref":"#/components/schemas/CalendarEventsModule"},"defaultKeyStatistics":{"type":"object","additionalProperties":true},"incomeStatementHistory":{"type":"object","additionalProperties":true},"balanceSheetHistory":{"type":"object","additionalProperties":true},"cashflowStatementHistory":{"type":"object","additionalProperties":true},"fundProfile":{"type":"object","additionalProperties":true}}},"QuotePriceModule":{"type":"object","properties":{"symbol":{"type":"string"},"shortName":{"type":"string"},"longName":{"type":"string"},"currency":{"type":"string"},"quoteType":{"type":"string"},"exchangeName":{"type":"string"},"exchange":{"type":"string"},"regularMarketPrice":{"$ref":"#/components/schemas/FormattedValue"},"regularMarketChange":{"$ref":"#/components/schemas/FormattedValue"},"regularMarketChangePercent":{"$ref":"#/components/schemas/FormattedValue"},"marketCap":{"$ref":"#/components/schemas/FormattedValue"}}},"SummaryDetailModule":{"type":"object","properties":{"previousClose":{"$ref":"#/components/schemas/FormattedValue"},"regularMarketOpen":{"$ref":"#/components/schemas/FormattedValue"},"dayLow":{"$ref":"#/components/schemas/FormattedValue"},"dayHigh":{"$ref":"#/components/schemas/FormattedValue"},"dividendRate":{"$ref":"#/components/schemas/FormattedValue"},"dividendYield":{"$ref":"#/components/schemas/FormattedValue"},"volume":{"$ref":"#/components/schemas/FormattedValue"},"marketCap":{"$ref":"#/components/schemas/FormattedValue"},"beta":{"$ref":"#/components/schemas/FormattedValue"},"trailingPE":{"$ref":"#/components/schemas/FormattedValue"}}},"FinancialDataModule":{"type":"object","properties":{"currentPrice":{"$ref":"#/components/schemas/FormattedValue"},"targetHighPrice":{"$ref":"#/components/schemas/FormattedValue"},"targetLowPrice":{"$ref":"#/components/schemas/FormattedValue"},"targetMeanPrice":{"$ref":"#/components/schemas/FormattedValue"},"recommendationMean":{"$ref":"#/components/schemas/FormattedValue"},"recommendationKey":{"type":"string"},"totalCash":{"$ref":"#/components/schemas/FormattedValue"},"totalDebt":{"$ref":"#/components/schemas/FormattedValue"},"revenueGrowth":{"$ref":"#/components/schemas/FormattedValue"},"grossMargins":{"$ref":"#/components/schemas/FormattedValue"}}},"AssetProfileModule":{"type":"object","properties":{"address1":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"country":{"type":"string"},"website":{"type":"string"},"industry":{"type":"string"},"sector":{"type":"string"},"longBusinessSummary":{"type":"string"},"fullTimeEmployees":{"type":"integer"},"companyOfficers":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"CalendarEventsModule":{"type":"object","properties":{"earnings":{"type":"object","additionalProperties":true},"dividendDate":{"$ref":"#/components/schemas/FormattedValue"},"exDividendDate":{"$ref":"#/components/schemas/FormattedValue"}}},"TimeseriesResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"timeseries":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["timeseries"]}},"required":["meta","data"]},"TimeSeriesResult":{"type":"object","properties":{"meta":{"type":"object","properties":{"symbol":{"type":"array","items":{"type":"string"}},"type":{"type":"array","items":{"type":"string"}}}},"timestamp":{"type":"array","items":{"type":"integer"}},"trailingPegRatio":{"type":"array","items":{"$ref":"#/components/schemas/FinancialMetricPoint"}},"annualTotalRevenue":{"type":"array","items":{"$ref":"#/components/schemas/FinancialMetricPoint"}},"quarterlyTotalRevenue":{"type":"array","items":{"$ref":"#/components/schemas/FinancialMetricPoint"}},"quarterlyNetIncome":{"type":"array","items":{"$ref":"#/components/schemas/FinancialMetricPoint"}}},"required":["meta"]},"FinancialMetricPoint":{"type":"object","properties":{"asOfDate":{"type":"string","format":"date"},"periodType":{"type":"string"},"currencyCode":{"type":"string"},"reportedValue":{"$ref":"#/components/schemas/FormattedValue"}}},"QuoteTypeResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"quoteType":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/QuoteTypeItem"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["quoteType"]}},"required":["meta","data"]},"QuoteTypeItem":{"type":"object","properties":{"symbol":{"type":"string"},"quoteType":{"type":"string"},"exchange":{"type":"string"},"shortName":{"type":"string"},"longName":{"type":"string"},"messageBoardId":{"type":"string"},"exchangeTimezoneName":{"type":"string"},"exchangeTimezoneShortName":{"type":"string"},"gmtOffSetMilliseconds":{"type":"integer"},"market":{"type":"string"},"isEsgPopulated":{"type":"boolean"},"hasSelerityEarnings":{"type":"boolean"},"selerityIsGaap":{"type":"boolean"}},"required":["symbol","quoteType"]},"RatingsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"dir":{"$ref":"#/components/schemas/RatingBlock"},"mm":{"$ref":"#/components/schemas/RatingBlock"},"pt":{"$ref":"#/components/schemas/RatingBlock"},"fin_score":{"$ref":"#/components/schemas/RatingBlock"}}}},"required":["meta","data"]},"RatingBlock":{"type":"object","properties":{"analyst":{"type":"string"},"ticker":{"type":"string"},"uuid":{"type":"string"},"datapoints":{"type":"integer"},"rating_current":{"anyOf":[{"$ref":"#/components/schemas/FormattedValue"},{"type":"null"}]},"rating_sentiment":{"anyOf":[{"$ref":"#/components/schemas/FormattedValue"},{"type":"null"}]},"pt_current":{"anyOf":[{"$ref":"#/components/schemas/FormattedValue"},{"type":"null"}]},"score":{"anyOf":[{"$ref":"#/components/schemas/FormattedValue"},{"type":"null"}]}}},"RecommendationsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"finance":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/RecommendationResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["finance"]}},"required":["meta","data"]},"RecommendationResult":{"type":"object","properties":{"symbol":{"type":"string"},"recommendedSymbols":{"type":"array","items":{"$ref":"#/components/schemas/RecommendedSymbol"}}},"required":["symbol","recommendedSymbols"]},"RecommendedSymbol":{"type":"object","properties":{"symbol":{"type":"string"},"score":{"type":"number"}},"required":["symbol"]},"InsightsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"finance":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/InsightResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["finance"]}},"required":["meta","data"]},"InsightResult":{"type":"object","properties":{"symbol":{"type":"string"},"instrumentInfo":{"type":"object","properties":{"technicalEvents":{"type":"object","additionalProperties":true},"keyTechnicals":{"type":"object","additionalProperties":true},"valuation":{"type":"object","additionalProperties":true}}},"companySnapshot":{"type":"object","additionalProperties":true},"recommendation":{"type":"object","additionalProperties":true},"events":{"type":"array","items":{"type":"object","additionalProperties":true}},"reports":{"type":"array","items":{"type":"object","additionalProperties":true}},"sigDevs":{"type":"array","items":{"type":"object","additionalProperties":true}},"secReports":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["symbol"]},"PriceInsightsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"finance":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/PriceInsightsResultMap"},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["finance"]}},"required":["meta","data"]},"PriceInsightsResultMap":{"type":"object","description":"Object keyed by requested symbol. Each value contains price-insight fields for that symbol.","additionalProperties":{"$ref":"#/components/schemas/PriceInsightItem"}},"PriceInsightItem":{"type":"object","properties":{"newsFirstParty":{"type":"boolean"},"newsThirdParty":{"type":"boolean"},"aiAnalysis":{"type":"object","additionalProperties":true},"analystRating":{"type":"object","additionalProperties":true},"hasPriceAnomaly":{"type":"boolean"}}},"SearchResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"explains":{"type":"array","items":{"type":"object","additionalProperties":true}},"count":{"type":"integer"},"quotes":{"type":"array","items":{"$ref":"#/components/schemas/SearchQuote"}},"news":{"type":"array","items":{"$ref":"#/components/schemas/SearchNewsItem"}},"nav":{"type":"array","items":{"type":"object","additionalProperties":true}},"lists":{"type":"array","items":{"type":"object","additionalProperties":true}},"researchReports":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["count","quotes"]}},"required":["meta","data"]},"SearchQuote":{"type":"object","properties":{"symbol":{"type":"string"},"shortname":{"type":"string"},"longname":{"type":"string"},"exchange":{"type":"string"},"exchDisp":{"type":"string"},"quoteType":{"type":"string"},"typeDisp":{"type":"string"},"sector":{"type":"string"},"industry":{"type":"string"},"score":{"type":"number"}},"required":["symbol"]},"SearchNewsItem":{"type":"object","properties":{"uuid":{"type":"string"},"title":{"type":"string"},"publisher":{"type":"string"},"link":{"type":"string"},"providerPublishTime":{"type":"integer"},"type":{"type":"string"},"relatedTickers":{"type":"array","items":{"type":"string"}}}},"LookupResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"finance":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/LookupResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["finance"]}},"required":["meta","data"]},"LookupResult":{"type":"object","properties":{"start":{"type":"integer"},"count":{"type":"integer"},"total":{"type":"integer"},"documents":{"type":"array","items":{"$ref":"#/components/schemas/LookupDocument"}},"lookupTotals":{"type":"object","description":"Counts by provider result category.","additionalProperties":{"type":"integer"}}},"required":["documents"]},"LookupDocument":{"type":"object","properties":{"symbol":{"type":"string"},"shortName":{"type":"string"},"longName":{"type":"string"},"quoteType":{"type":"string"},"exchange":{"type":"string"},"industry":{"type":"string"},"sector":{"type":"string"}},"required":["symbol"]},"AutocompleteResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"ResultSet":{"type":"object","properties":{"Query":{"type":"string"},"Result":{"type":"array","items":{"$ref":"#/components/schemas/AutocompleteResult"}}},"required":["Query","Result"]}},"required":["ResultSet"]}},"required":["meta","data"]},"AutocompleteResult":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"},"exch":{"type":"string"},"type":{"type":"string"},"exchDisp":{"type":"string"},"typeDisp":{"type":"string"}},"required":["symbol","name"]},"TrendingResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"finance":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/TrendingResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["finance"]}},"required":["meta","data"]},"TrendingResult":{"type":"object","properties":{"count":{"type":"integer"},"quotes":{"type":"array","items":{"$ref":"#/components/schemas/TrendingQuote"}},"jobTimestamp":{"type":"integer"},"startInterval":{"type":"integer"}},"required":["quotes"]},"TrendingQuote":{"type":"object","properties":{"symbol":{"type":"string"},"shortName":{"type":"string"},"longName":{"type":"string"},"quoteType":{"type":"string"}},"required":["symbol"]},"MarketSummaryResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"marketSummaryResponse":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/MarketSummaryItem"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["marketSummaryResponse"]}},"required":["meta","data"]},"MarketSummaryItem":{"type":"object","properties":{"fullExchangeName":{"type":"string"},"symbol":{"type":"string","description":"Market summary symbol such as ^GSPC, ^DJI, ^IXIC, or a futures/currency symbol."},"gmtOffSetMilliseconds":{"type":"integer"},"language":{"type":"string"},"region":{"type":"string"},"quoteType":{"type":"string"},"typeDisp":{"type":"string"},"tradeable":{"type":"boolean"},"exchangeTimezoneName":{"type":"string"},"exchangeTimezoneShortName":{"type":"string"},"hasPrePostMarketData":{"type":"boolean"},"marketState":{"type":"string"},"market":{"type":"string"},"quoteSourceName":{"type":"string"},"priceHint":{"type":"integer"},"exchange":{"type":"string"},"sourceInterval":{"type":"integer"},"exchangeDataDelayedBy":{"type":"integer"},"firstTradeDateMilliseconds":{"type":"integer"},"shortName":{"type":"string"},"longName":{"type":"string"},"regularMarketTime":{"$ref":"#/components/schemas/FormattedValue"},"regularMarketPrice":{"$ref":"#/components/schemas/FormattedValue"},"regularMarketChange":{"$ref":"#/components/schemas/FormattedValue"},"regularMarketChangePercent":{"$ref":"#/components/schemas/FormattedValue"},"regularMarketPreviousClose":{"$ref":"#/components/schemas/FormattedValue"},"cryptoTradeable":{"type":"boolean"}},"required":["symbol","quoteType","regularMarketPrice"]},"MarketTimeResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"finance":{"type":"object","properties":{"version":{"type":"string"},"lang":{"type":"string"},"meta":{"type":"array","items":{"$ref":"#/components/schemas/MarketTimeMeta"}}},"required":["meta"]}},"required":["finance"]}},"required":["meta","data"]},"MarketTimeMeta":{"type":"object","properties":{"status":{"type":"string"},"name":{"type":"string"},"marketTimes":{"type":"array","items":{"$ref":"#/components/schemas/MarketTimeGroup"}}}},"MarketTimeGroup":{"type":"object","properties":{"type":{"type":"string"},"marketTime":{"type":"array","items":{"$ref":"#/components/schemas/MarketTimeSession"}}}},"MarketTimeSession":{"type":"object","properties":{"timezone":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"gmtoffset":{"type":"integer"}}},"CalendarResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"finance":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/CalendarResult"},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["finance"]}},"required":["meta","data"]},"CalendarResult":{"type":"object","properties":{"earnings":{"type":"array","items":{"$ref":"#/components/schemas/CalendarEventGroup"}},"dividends":{"type":"array","items":{"$ref":"#/components/schemas/CalendarEventGroup"}},"splits":{"type":"array","items":{"$ref":"#/components/schemas/CalendarEventGroup"}},"ipo":{"type":"array","items":{"$ref":"#/components/schemas/CalendarEventGroup"}},"economicEvents":{"type":"array","items":{"$ref":"#/components/schemas/CalendarEventGroup"}}}},"CalendarEventGroup":{"type":"object","properties":{"timestamp":{"type":"integer"},"timestampString":{"type":"string"},"timezone":{"type":"string"},"count":{"type":"integer"},"totalCount":{"type":"integer"},"records":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"ScreenerResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"finance":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/ScreenerResult"}},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["finance"]}},"required":["meta","data"]},"ScreenerResult":{"type":"object","properties":{"start":{"type":"integer"},"count":{"type":"integer"},"total":{"type":"integer"},"quotes":{"type":"array","items":{"$ref":"#/components/schemas/QuoteItem"}},"useRecords":{"type":"boolean"}},"required":["quotes"]},"ScreenerDiscoverResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"finance":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/ScreenerDiscoverResult"},"error":{"anyOf":[{"$ref":"#/components/schemas/YahooError"},{"type":"null"}]}},"required":["result","error"]}},"required":["finance"]}},"required":["meta","data"]},"ScreenerDiscoverResult":{"type":"object","properties":{"sections":{"type":"array","items":{"$ref":"#/components/schemas/ScreenerSection"}},"quotes":{"type":"array","items":{"$ref":"#/components/schemas/QuoteItem"}}}},"ScreenerSection":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"screeners":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"}}}}}},"SectorsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SectorData"}},"required":["data"]}},"required":["meta","data"]},"IndustriesResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMeta"},"data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/IndustryData"}},"required":["data"]}},"required":["meta","data"]},"SectorData":{"type":"object","properties":{"name":{"type":"string"},"symbol":{"type":"string"},"key":{"type":"string"},"overview":{"$ref":"#/components/schemas/SectorOverview"},"performance":{"$ref":"#/components/schemas/SectorPerformance"},"performanceOverviewBenchmark":{"type":"object","additionalProperties":true},"topCompanies":{"type":"array","items":{"$ref":"#/components/schemas/SectorCompany"}},"topETFs":{"type":"array","items":{"$ref":"#/components/schemas/FundSummary"}},"topMutualFunds":{"type":"array","items":{"$ref":"#/components/schemas/FundSummary"}},"industries":{"type":"array","items":{"$ref":"#/components/schemas/IndustrySummary"}},"researchReports":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["name","key","overview"]},"IndustryData":{"type":"object","properties":{"name":{"type":"string"},"symbol":{"type":"string"},"key":{"type":"string"},"sectorName":{"type":"string"},"sectorKey":{"type":"string"},"overview":{"$ref":"#/components/schemas/SectorOverview"},"performance":{"$ref":"#/components/schemas/SectorPerformance"},"performanceOverviewBenchmark":{"type":"object","additionalProperties":true},"topCompanies":{"type":"array","items":{"$ref":"#/components/schemas/SectorCompany"}},"topPerformingCompanies":{"type":"array","items":{"$ref":"#/components/schemas/SectorCompany"}},"topGrowthCompanies":{"type":"array","items":{"$ref":"#/components/schemas/SectorCompany"}},"researchReports":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["name","key","sectorName","overview"]},"SectorOverview":{"type":"object","properties":{"companiesCount":{"type":"integer"},"industriesCount":{"type":"integer"},"marketCap":{"$ref":"#/components/schemas/FormattedValue"},"employeeCount":{"$ref":"#/components/schemas/FormattedValue"},"marketWeight":{"$ref":"#/components/schemas/FormattedValue"},"messageBoardId":{"type":"string"},"description":{"type":"string"}}},"SectorPerformance":{"type":"object","properties":{"day":{"$ref":"#/components/schemas/FormattedValue"},"ytd":{"$ref":"#/components/schemas/FormattedValue"},"oneYear":{"$ref":"#/components/schemas/FormattedValue"},"threeYear":{"$ref":"#/components/schemas/FormattedValue"},"fiveYear":{"$ref":"#/components/schemas/FormattedValue"}}},"SectorCompany":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"},"marketCap":{"$ref":"#/components/schemas/FormattedValue"},"regularMarketPrice":{"$ref":"#/components/schemas/FormattedValue"},"regularMarketChangePercent":{"$ref":"#/components/schemas/FormattedValue"}},"required":["symbol"]},"FundSummary":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"}},"required":["symbol"]},"IndustrySummary":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"}},"required":["key","name"]},"ScreenerRequest":{"type":"object","properties":{"size":{"type":"integer","description":"Maximum number of matching securities to return."},"offset":{"type":"integer","description":"Zero-based result offset."},"sortField":{"type":"string","description":"Provider sort field, for example intradaymarketcap."},"sortType":{"type":"string","enum":["ASC","DESC"]},"quoteType":{"type":"string","description":"Security type to screen, for example EQUITY or ETF."},"query":{"type":"object","description":"Provider screener query object for custom filters.","additionalProperties":true},"userId":{"type":"string"},"userIdType":{"type":"string"}}},"ErrorDetail":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable error message."}},"additionalProperties":false},"ErrorResponse":{"type":"object","required":["ok","error"],"properties":{"ok":{"type":"boolean","const":false},"error":{"$ref":"#/components/schemas/ErrorDetail"},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods when the error code is method_not_allowed."},"meta":{"type":"object","additionalProperties":true,"description":"Response metadata when available."}},"additionalProperties":true},"RateLimitResponse":{"type":"object","required":["ok","error","rate_limit"],"properties":{"ok":{"type":"boolean","const":false},"error":{"$ref":"#/components/schemas/ErrorDetail"},"rate_limit":{"type":"object","required":["tier","retry_after_seconds","upgrade"],"properties":{"tier":{"type":"string","description":"Active request tier, such as anonymous, auth, or key."},"retry_after_seconds":{"type":"integer","minimum":1},"upgrade":{"type":"object","description":"Machine-readable upgrade guidance for the current tier.","additionalProperties":true}},"additionalProperties":true}},"additionalProperties":false}}},"paths":{"/v1/health":{"get":{"tags":["System"],"operationId":"getHealth","summary":"Service health.","description":"Returns basic yfin service status and the number of currently shipped REST endpoints.","responses":{"200":{"description":"Health response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"name":"yfin","version":"0.1.0","shipped_rest_contracts":45}}}}}}}}},"/v1/endpoints":{"get":{"tags":["System"],"operationId":"listEndpoints","summary":"Endpoint Catalog","description":"Returns the machine-readable catalog of supported yfin endpoints. Use this for tool discovery, code generation, and agents that need to inspect available routes programmatically.","responses":{"200":{"description":"Endpoint catalog.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointCatalogResponse"},"examples":{"success":{"summary":"Success","value":{"catalog_version":"0.1.0","endpoint_count":22,"identity_policy":{"anonymous":"Works without setup with IP-based request limits.","contact":"Optional X-Yfin-Contact is accepted for support and abuse analysis, but does not authenticate requests.","auth":"Create API keys by requesting an email code at /v1/auth/otp and verifying it at /v1/auth/verify.","key":"Send Authorization: Bearer <api_key> or X-Yfin-Key for higher free limits.","limits":"When key-tier limits are too low, email sam@yfin.dev or POST /v1/auth/limits/requests. Programmatic requests are limited to 1 per minute per API key."},"routes":{"quote":{"path":"/v1/quote"},"history":{"path":"/v1/history"},"options":{"path":"/v1/options"}},"endpoints":[{"name":"quote","path":"/v1/quote","methods":["GET"],"description":"Returns current quote data for one or more symbols."}]}}}}}}}}},"/v1/auth/otp":{"post":{"tags":["Auth"],"operationId":"requestAuthOtp","summary":"Request Email Verification Code","description":"Sends a short-lived verification code to an email address. Use this before creating yfin API keys.","requestBody":{"required":true,"description":"Email address to verify.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthOtpRequest"},"examples":{"default":{"summary":"Request","value":{"email":"developer@example.com"}}}}}},"responses":{"202":{"description":"Verification code accepted for delivery.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthOtpResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"email":"developer@example.com","expires_in_seconds":600,"delivery":"email","message_id":"<message-id@yfin.dev>"}}}}}}},"400":{"description":"Invalid email or JSON body.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"A valid email is required.","value":{"ok":false,"error":{"code":"bad_request","message":"A valid email is required."}}}}}}},"403":{"description":"Email is not eligible for API key access.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"email_not_eligible":{"summary":"This email is not eligible for API key access. Use another email or contact support.","value":{"ok":false,"error":{"code":"email_not_eligible","message":"This email is not eligible for API key access. Use another email or contact support."}}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"503":{"description":"Auth storage or email delivery is unavailable.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"auth_not_configured":{"summary":"API key authentication is not configured.","value":{"ok":false,"error":{"code":"auth_not_configured","message":"API key authentication is not configured."}}},"email_delivery_failed":{"summary":"Could not send verification email. Retry shortly.","value":{"ok":false,"error":{"code":"email_delivery_failed","message":"Could not send verification email. Retry shortly."}}}}}}}}}},"/v1/auth/verify":{"post":{"tags":["Auth"],"operationId":"verifyAuthOtp","summary":"Verify Email Code","description":"Verifies the email code and returns a short-lived management token. By default, it also creates an API key.","requestBody":{"required":true,"description":"Verification code and optional key settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthVerifyRequest"},"examples":{"default":{"summary":"Request","value":{"email":"developer@example.com","code":"123456","label":"agent","expires_in_days":90}}}}}},"responses":{"200":{"description":"Email verified.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthVerifyResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"email":"developer@example.com","management_token":"yfin_mgmt_...","token_type":"Bearer","management_expires_in_seconds":900,"api_key":"yfin_live_...","key":{"id":"0123456789abcdef01234567","email":"developer@example.com","label":"agent","created_at":1779897600,"expires_at":1787673600,"revoked_at":null,"last_used_at":null,"requests_per_minute":30000,"origin_per_minute":3000}}}}}}}},"400":{"description":"Invalid or expired verification code.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"A valid email and 6-digit code are required.","value":{"ok":false,"error":{"code":"bad_request","message":"A valid email and 6-digit code are required."}}},"invalid_code":{"summary":"Verification code is invalid or expired.","value":{"ok":false,"error":{"code":"invalid_code","message":"Verification code is invalid or expired."}}}}}}},"403":{"description":"Email is not eligible for API key access.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"email_not_eligible":{"summary":"This email is not eligible for API key access. Use another email or contact support.","value":{"ok":false,"error":{"code":"email_not_eligible","message":"This email is not eligible for API key access. Use another email or contact support."}}}}}}},"429":{"description":"Too many verification attempts.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"too_many_attempts":{"summary":"Too many verification attempts. Request a new code.","value":{"ok":false,"error":{"code":"too_many_attempts","message":"Too many verification attempts. Request a new code."}}}}}}},"503":{"description":"Auth storage is unavailable.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"auth_not_configured":{"summary":"API key authentication is not configured.","value":{"ok":false,"error":{"code":"auth_not_configured","message":"API key authentication is not configured."}}}}}}}}}},"/v1/auth/limits/requests":{"post":{"tags":["Auth"],"operationId":"requestCustomRateLimit","summary":"Request Custom Rate Limits","description":"Submits a custom RPS request for the authenticated API key. This is intended for agents and automated workflows and is limited to 1 request per minute per API key.","security":[{"bearerAuth":[]},{"yfinApiKey":[]}],"parameters":[{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"requestBody":{"required":true,"description":"Requested custom rate limits and use case.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthLimitRequest"},"examples":{"default":{"summary":"Request","value":{"requested_rps":25,"use_case":"production agent workload","message":"Short description of traffic pattern and data needed."}}}}}},"responses":{"202":{"description":"Custom rate-limit request received.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthLimitRequestResponse"},"examples":{"success":{"summary":"Success","value":{"ok":true,"data":{"id":"5c3b56b0-2f1a-4a11-9ac1-a751f9c99416","email":"developer@example.com","status":"received","notification":{"mode":"email"},"message":"Custom rate-limit request received. You can also email sam@yfin.dev."}}}}}}},"400":{"description":"Invalid JSON body.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid JSON body.","value":{"ok":false,"error":{"code":"bad_request","message":"Invalid JSON body."}}}}}}},"401":{"description":"API key is missing or inactive.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"api_key_required":{"summary":"API key is required to request custom rate limits.","value":{"ok":false,"error":{"code":"api_key_required","message":"API key is required to request custom rate limits."}}},"api_key_inactive":{"summary":"API key is no longer active. Create or rotate a key to continue.","value":{"ok":false,"error":{"code":"api_key_inactive","message":"API key is no longer active. Create or rotate a key to continue."}}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"503":{"description":"Auth storage is unavailable.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"auth_not_configured":{"summary":"API key authentication is not configured.","value":{"ok":false,"error":{"code":"auth_not_configured","message":"API key authentication is not configured."}}}}}}}}}},"/v1/autocomplete":{"get":{"tags":["Search"],"operationId":"getAutocomplete","summary":"Autocomplete Symbols","description":"Returns symbol and company suggestions for a partial query.\n\nUse this for search boxes, command palettes, and agents that need to turn incomplete user text into likely ticker symbols before requesting quotes or history.\n\nTypical output includes matching symbols, company names, exchanges, instrument types, and regions when available.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Search text such as a company name, fund name, index name, or partial ticker. Alias: query."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Autocomplete Symbols response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutocompleteResponse"},"examples":{"success":{"summary":"Autocomplete success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"autocomplete"},"data":{"ResultSet":{"Query":"apple","Result":[{"symbol":"AAPL","name":"Apple Inc.","exch":"NMS","type":"S","exchDisp":"NASDAQ","typeDisp":"Equity"}]}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"autocomplete requires q= or query=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/calendar":{"get":{"tags":["Calendar"],"operationId":"getCalendar","summary":"Calendar Events","description":"Returns market calendar event datasets such as earnings, dividends, splits, IPOs, and economic events.\n\nUse this for earnings calendars, dividend calendars, event timelines, and agents that need date-based market context.\n\nPass modules and date-window parameters to narrow the event set.","parameters":[{"name":"modules","in":"query","required":false,"schema":{"type":"string"},"description":"Calendar datasets to request, for example earnings, dividends, splits, ipo, economicEvents, or price."},{"name":"startDate","in":"query","required":false,"schema":{"type":"string"},"description":"Start of the event window as epoch milliseconds."},{"name":"endDate","in":"query","required":false,"schema":{"type":"string"},"description":"End of the event window as epoch milliseconds."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Calendar Events response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarResponse"},"examples":{"success":{"summary":"Calendar success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"calendar"},"data":{"finance":{"result":{"earnings":[{"timestamp":1777939200,"timestampString":"2026-05-04","timezone":"America/New_York","count":1,"totalCount":1,"records":[{"ticker":"AAPL","companyShortName":"Apple Inc.","epsEstimate":null}]}]},"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"Invalid request parameters."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/fundamentals":{"get":{"tags":["Fundamentals"],"operationId":"getFundamentals","summary":"Fundamentals","description":"Returns company, ETF, or fund fundamentals from selected quote summary modules.\n\nUse this for company profiles, valuation screens, financial statement summaries, fund holdings, earnings context, and research agents.\n\nPass modules to choose the data families you need, such as price, summaryDetail, financialData, assetProfile, calendarEvents, incomeStatementHistory, balanceSheetHistory, cashflowStatementHistory, or fundProfile when supported.","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string"},"description":"Ticker, index, ETF, fund, currency, or crypto symbol to request, for example AAPL, ^GSPC, SPY, or BTC-USD."},{"name":"modules","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated quoteSummary modules to include, for example price,summaryDetail,financialData,assetProfile,calendarEvents."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Fundamentals response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundamentalsResponse"},"examples":{"success":{"summary":"Fundamentals success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"fundamentals"},"data":{"quoteSummary":{"result":[{"price":{"symbol":"AAPL","shortName":"Apple Inc.","longName":"Apple Inc.","currency":"USD","quoteType":"EQUITY","regularMarketPrice":{"raw":198.53,"fmt":"198.53"}},"summaryDetail":{"marketCap":{"raw":2960000000000,"fmt":"2.96T","longFmt":"2,960,000,000,000"},"trailingPE":{"raw":30.7,"fmt":"30.70"},"dividendYield":{"raw":0.0051,"fmt":"0.51%"}},"financialData":{"currentPrice":{"raw":198.53,"fmt":"198.53"},"targetMeanPrice":{"raw":232.14,"fmt":"232.14"},"recommendationKey":"buy"},"assetProfile":{"sector":"Technology","industry":"Consumer Electronics","website":"https://www.apple.com","longBusinessSummary":"Apple designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and services."}}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"fundamentals requires symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/history":{"get":{"tags":["Prices"],"operationId":"getHistory","summary":"Historical Prices","description":"Returns historical chart data for one symbol, including timestamps, OHLC prices, volume, adjusted close, and optional corporate actions when available.\n\nUse this for price charts, return calculations, backtests, volatility features, technical indicators, and model inputs that need time-series price data.\n\nChoose a range and interval, or pass start and end dates for a custom window.","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string"},"description":"Ticker, index, ETF, fund, currency, or crypto symbol to request, for example AAPL, ^GSPC, SPY, or BTC-USD."},{"name":"range","in":"query","required":false,"schema":{"type":"string"},"description":"Relative chart window, for example 1d, 5d, 1mo, 6mo, 1y, 5y, or max."},{"name":"interval","in":"query","required":false,"schema":{"type":"string"},"description":"Candle interval for each returned OHLC bar, for example 1d, 1h, 15m, 5m, or 1m."},{"name":"start","in":"query","required":false,"schema":{"type":"string"},"description":"Start of a custom chart window as YYYY-MM-DD or epoch seconds. Use with end instead of range when you need exact dates."},{"name":"end","in":"query","required":false,"schema":{"type":"string"},"description":"End of a custom chart window as YYYY-MM-DD or epoch seconds. Use with start instead of range when you need exact dates."},{"name":"includePrePost","in":"query","required":false,"schema":{"type":"boolean"},"description":"Include pre-market and post-market bars when the exchange and interval support them."},{"name":"events","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated event types to include, for example div,splits,capitalGains."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Historical Prices response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoryResponse"},"examples":{"success":{"summary":"History success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"history"},"data":{"chart":{"result":[{"meta":{"currency":"USD","symbol":"AAPL","exchangeName":"NMS","fullExchangeName":"NasdaqGS","instrumentType":"EQUITY","firstTradeDate":345479400,"regularMarketTime":1777939200,"hasPrePostMarketData":true,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":198.53,"chartPreviousClose":197.29,"priceHint":2,"range":"5d","dataGranularity":"1d"},"timestamp":[1777593600,1777680000],"indicators":{"quote":[{"open":[196.12,197.83],"high":[199.24,200.64],"low":[195.77,196.9],"close":[197.29,198.53],"volume":[45123456,51234567]}],"adjclose":[{"adjclose":[197.29,198.53]}]}}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"history requires symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/industries":{"get":{"tags":["Discovery"],"operationId":"getIndustries","summary":"Industry Data","description":"Returns reference and market data for an industry slug.\n\nUse this to build industry pages, compare companies within an industry, and help agents move from a sector theme to a narrower peer group.","parameters":[{"name":"industry","in":"query","required":true,"schema":{"type":"string"},"description":"Industry slug such as software-infrastructure, semiconductors, or banks-regional. Alias: slug."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Industry Data response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndustriesResponse"},"examples":{"success":{"summary":"Industries success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"industries"},"data":{"data":{"name":"Software - Infrastructure","symbol":"^YH1040","key":"software-infrastructure","sectorName":"Technology","sectorKey":"technology","overview":{"companiesCount":128,"marketCap":{"raw":5400000000000,"fmt":"5.4T","longFmt":"5,400,000,000,000"},"marketWeight":{"raw":0.092,"fmt":"9.2%"},"description":"Infrastructure software companies, including cloud, security, database, and developer tooling businesses."},"performance":{"day":{"raw":0.009,"fmt":"0.90%"},"ytd":{"raw":0.062,"fmt":"6.20%"},"oneYear":{"raw":0.187,"fmt":"18.70%"}},"topCompanies":[{"symbol":"MSFT","name":"Microsoft Corporation","marketCap":{"raw":3210000000000,"fmt":"3.21T","longFmt":"3,210,000,000,000"}}],"topPerformingCompanies":[{"symbol":"NOW","name":"ServiceNow, Inc."}],"topGrowthCompanies":[{"symbol":"NET","name":"Cloudflare, Inc."}],"researchReports":[]}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"industries requires industry= or slug=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/insights":{"get":{"tags":["Research"],"operationId":"getInsights","summary":"Symbol Insights","description":"Returns research-oriented insight data for one or more symbols.\n\nUse this when an app or agent needs richer context around a ticker, such as company snapshots, research signals, technical events, valuation context, or related market narrative when available.","parameters":[{"name":"symbols","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated symbols to request in one call, for example AAPL,MSFT,NVDA."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Symbol Insights response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightsResponse"},"examples":{"success":{"summary":"Insights success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"insights"},"data":{"finance":{"result":[{"symbol":"AAPL","instrumentInfo":{"keyTechnicals":{"provider":"Trading Central","support":190.12,"resistance":205.48},"valuation":{"color":0,"description":"Fair Value"}},"companySnapshot":{"sectorInfo":"Technology","company":{"innovativeness":0.92,"hiring":0.44}},"recommendation":{"targetPrice":232.14,"provider":"Argus Research"},"events":[],"reports":[],"sigDevs":[],"secReports":[]}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"insights requires symbols= or symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/lookup":{"get":{"tags":["Search"],"operationId":"getLookup","summary":"Symbol Lookup","description":"Returns symbol lookup results for a company name, fund name, index name, or ticker-like query.\n\nUse this when a user or agent has natural-language text and needs a structured list of candidate instruments with symbol, exchange, and quote type metadata.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Search text such as a company name, fund name, index name, or partial ticker. Alias: query."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Symbol Lookup response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupResponse"},"examples":{"success":{"summary":"Lookup success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"lookup"},"data":{"finance":{"result":[{"start":0,"count":1,"total":1,"documents":[{"symbol":"AAPL","shortName":"Apple Inc.","quoteType":"EQUITY","exchange":"NMS","industry":"Consumer Electronics"}],"lookupTotals":{"equity":1}}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"lookup requires q= or query=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/market_summary":{"get":{"tags":["Market Data"],"operationId":"getMarketSummary","summary":"Market Summary","description":"Returns broad market snapshot data such as major indexes, futures, currencies, and other regional market movers when available.\n\nUse this for market overview pages, opening dashboards, daily summaries, and agents that need current market context before drilling into individual symbols.","parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region code for market data, sessions, or discovery metadata, for example US."},{"name":"lang","in":"query","required":false,"schema":{"type":"string"},"description":"Locale used for provider display text, for example en-US."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Market Summary response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketSummaryResponse"},"examples":{"success":{"summary":"Market Summary success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"market_summary"},"data":{"marketSummaryResponse":{"result":[{"fullExchangeName":"SNP","symbol":"^GSPC","gmtOffSetMilliseconds":-14400000,"language":"en-US","region":"US","quoteType":"INDEX","typeDisp":"Index","tradeable":false,"exchangeTimezoneName":"America/New_York","exchangeTimezoneShortName":"EDT","hasPrePostMarketData":false,"marketState":"REGULAR","market":"us_market","quoteSourceName":"Delayed Quote","priceHint":2,"exchange":"SNP","sourceInterval":15,"exchangeDataDelayedBy":15,"firstTradeDateMilliseconds":-1325583000000,"shortName":"S&P 500","longName":"S&P 500","regularMarketTime":{"raw":1777939200,"fmt":"3:00PM EDT"},"regularMarketPrice":{"raw":6123.45,"fmt":"6,123.45"},"regularMarketChange":{"raw":38.42,"fmt":"38.42"},"regularMarketChangePercent":{"raw":0.63,"fmt":"0.63%"},"regularMarketPreviousClose":{"raw":6085.03,"fmt":"6,085.03"}}],"marketCategoryLongName":null,"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"Invalid request parameters."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/market_time":{"get":{"tags":["Market Data"],"operationId":"getMarketTime","summary":"Market Time","description":"Returns market clock and trading-session metadata.\n\nUse this to determine whether a market is open, closed, pre-market, or post-market, and to align dashboards or agents with the relevant exchange timezone.","parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region code for market data, sessions, or discovery metadata, for example US."},{"name":"lang","in":"query","required":false,"schema":{"type":"string"},"description":"Locale used for provider display text, for example en-US."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Market Time response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketTimeResponse"},"examples":{"success":{"summary":"Market Time success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"market_time"},"data":{"finance":{"version":"1.0","lang":"en-US","meta":[{"status":"open","name":"us","marketTimes":[{"type":"regular","marketTime":[{"timezone":"America/New_York","start":"2026-05-04T09:30:00-04:00","end":"2026-05-04T16:00:00-04:00","gmtoffset":-14400}]}]}]}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"Invalid request parameters."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/options":{"get":{"tags":["Options"],"operationId":"getOptions","summary":"Options Chains","description":"Returns option expiration dates and call/put chains for one symbol.\n\nUse this for option-chain tables, expiration pickers, strike selection, implied volatility analysis, open-interest views, and derivatives research agents.\n\nPass date to request a specific expiration.","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string"},"description":"Ticker, index, ETF, fund, currency, or crypto symbol to request, for example AAPL, ^GSPC, SPY, or BTC-USD."},{"name":"date","in":"query","required":false,"schema":{"type":"string"},"description":"Option expiration to request as YYYY-MM-DD or epoch seconds. Omit it to receive the nearest chain plus available expiration dates."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Options Chains response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptionsResponse"},"examples":{"success":{"summary":"Options success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"options"},"data":{"optionChain":{"result":[{"underlyingSymbol":"AAPL","expirationDates":[1778803200],"strikes":[190,195,200],"hasMiniOptions":false,"quote":{"language":"en-US","region":"US","quoteType":"EQUITY","typeDisp":"Equity","quoteSourceName":"Nasdaq Real Time Price","triggerable":true,"currency":"USD","exchange":"NMS","fullExchangeName":"NasdaqGS","exchangeTimezoneName":"America/New_York","exchangeTimezoneShortName":"EDT","market":"us_market","marketState":"REGULAR","regularMarketTime":1777939200,"regularMarketPrice":198.53,"regularMarketChange":1.24,"regularMarketChangePercent":0.63,"regularMarketPreviousClose":197.29,"regularMarketOpen":197.83,"regularMarketDayHigh":200.63,"regularMarketDayLow":196.73,"regularMarketVolume":51234567,"bid":198.5,"ask":198.56,"fiftyTwoWeekRange":"164.08 - 237.49","fiftyTwoWeekHigh":237.49,"fiftyTwoWeekLow":164.08,"trailingPE":30.7,"dividendRate":1.04,"epsTrailingTwelveMonths":6.46,"marketCap":2960000000000,"shortName":"Apple Inc.","longName":"Apple Inc.","symbol":"AAPL"},"options":[{"expirationDate":1778803200,"hasMiniOptions":false,"calls":[{"contractSymbol":"AAPL260515C00200000","strike":200,"currency":"USD","lastPrice":6.3,"change":0.42,"percentChange":7.14,"volume":1842,"openInterest":12455,"bid":6.2,"ask":6.45,"contractSize":"REGULAR","expiration":1778803200,"lastTradeDate":1777939200,"impliedVolatility":0.271,"inTheMoney":true}],"puts":[{"contractSymbol":"AAPL260515P00200000","strike":200,"currency":"USD","lastPrice":6.3,"change":0.42,"percentChange":7.14,"volume":1842,"openInterest":12455,"bid":6.2,"ask":6.45,"contractSize":"REGULAR","expiration":1778803200,"lastTradeDate":1777939200,"impliedVolatility":0.271,"inTheMoney":false}]}]}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"options requires symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/price_insights":{"get":{"tags":["Research"],"operationId":"getPriceInsights","summary":"Price Insights","description":"Returns price-focused insight data for one or more symbols.\n\nUse this for valuation context, price movement summaries, support/resistance-style research, and agents that need a higher-level read on recent price behavior when available.","parameters":[{"name":"symbols","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated symbols to request in one call, for example AAPL,MSFT,NVDA."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Price Insights response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceInsightsResponse"},"examples":{"success":{"summary":"Price Insights success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"price_insights"},"data":{"finance":{"result":{"AAPL":{"newsFirstParty":true,"newsThirdParty":true,"aiAnalysis":{"summary":"Recent price action is within the expected range."},"analystRating":{"targetPrice":232.14,"rating":"Buy"},"hasPriceAnomaly":false}},"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"price_insights requires symbols= or symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/quote":{"get":{"tags":["Market Data"],"operationId":"getQuote","summary":"Quotes","description":"Returns current quote data for one or more symbols.\n\nUse this for watchlists, symbol snapshots, portfolio views, market dashboards, and agents that need latest price, change, currency, exchange, market state, quote type, and related quote fields when available.","parameters":[{"name":"symbols","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated symbols to request in one call, for example AAPL,MSFT,NVDA."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Quotes response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteResponse"},"examples":{"success":{"summary":"Quote success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"data":{"quoteResponse":{"result":[{"language":"en-US","region":"US","quoteType":"EQUITY","typeDisp":"Equity","quoteSourceName":"Nasdaq Real Time Price","triggerable":true,"currency":"USD","exchange":"NMS","fullExchangeName":"NasdaqGS","exchangeTimezoneName":"America/New_York","exchangeTimezoneShortName":"EDT","market":"us_market","marketState":"REGULAR","regularMarketTime":1777939200,"regularMarketPrice":198.53,"regularMarketChange":1.24,"regularMarketChangePercent":0.63,"regularMarketPreviousClose":197.29,"regularMarketOpen":197.83,"regularMarketDayHigh":200.63,"regularMarketDayLow":196.73,"regularMarketVolume":51234567,"bid":198.5,"ask":198.56,"fiftyTwoWeekRange":"164.08 - 237.49","fiftyTwoWeekHigh":237.49,"fiftyTwoWeekLow":164.08,"trailingPE":30.7,"dividendRate":1.04,"epsTrailingTwelveMonths":6.46,"marketCap":2960000000000,"shortName":"Apple Inc.","longName":"Apple Inc.","symbol":"AAPL"},{"language":"en-US","region":"US","quoteType":"EQUITY","typeDisp":"Equity","quoteSourceName":"Nasdaq Real Time Price","triggerable":true,"currency":"USD","exchange":"NMS","fullExchangeName":"NasdaqGS","exchangeTimezoneName":"America/New_York","exchangeTimezoneShortName":"EDT","market":"us_market","marketState":"REGULAR","regularMarketTime":1777939200,"regularMarketPrice":432.18,"regularMarketChange":1.24,"regularMarketChangePercent":0.63,"regularMarketPreviousClose":430.94,"regularMarketOpen":431.48,"regularMarketDayHigh":434.28000000000003,"regularMarketDayLow":430.38,"regularMarketVolume":51234567,"bid":432.15000000000003,"ask":432.21,"fiftyTwoWeekRange":"164.08 - 237.49","fiftyTwoWeekHigh":237.49,"fiftyTwoWeekLow":164.08,"trailingPE":30.7,"dividendRate":1.04,"epsTrailingTwelveMonths":6.46,"marketCap":2960000000000,"shortName":"Microsoft Corporation","longName":"Microsoft Corporation","symbol":"MSFT"}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"quote requires symbols= or symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/quote_type":{"get":{"tags":["Market Data"],"operationId":"getQuoteType","summary":"Quote Type","description":"Returns instrument classification and exchange metadata for one symbol.\n\nUse this to distinguish equities, ETFs, mutual funds, indexes, currencies, crypto pairs, and other quote types before choosing which downstream endpoint to call.","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string"},"description":"Ticker, index, ETF, fund, currency, or crypto symbol to request, for example AAPL, ^GSPC, SPY, or BTC-USD."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Quote Type response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteTypeResponse"},"examples":{"success":{"summary":"Quote Type success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote_type"},"data":{"quoteType":{"result":[{"symbol":"AAPL","quoteType":"EQUITY","exchange":"NMS","shortName":"Apple Inc.","longName":"Apple Inc.","market":"us_market","exchangeTimezoneName":"America/New_York"}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"quote_type requires symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/ratings":{"get":{"tags":["Research"],"operationId":"getRatings","summary":"Analyst Ratings","description":"Returns analyst-rating-oriented data for one symbol when available.\n\nUse this for research pages, ticker summaries, and agents that need rating context as one input among broader fundamentals and market data.","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string"},"description":"Ticker, index, ETF, fund, currency, or crypto symbol to request, for example AAPL, ^GSPC, SPY, or BTC-USD."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Analyst Ratings response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatingsResponse"},"examples":{"success":{"summary":"Ratings success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"ratings"},"data":{"dir":{"analyst":"Example Research","ticker":"AAPL","uuid":"dir-aapl","datapoints":42,"rating_current":{"raw":1.8,"fmt":"Buy"},"pt_current":null},"mm":{"analyst":"Example Research","ticker":"AAPL","uuid":"mm-aapl","datapoints":42,"rating_current":{"raw":1.8,"fmt":"Buy"},"pt_current":null},"pt":{"analyst":"Example Research","ticker":"AAPL","uuid":"pt-aapl","datapoints":42,"rating_current":null,"pt_current":{"raw":232.14,"fmt":"232.14"}},"fin_score":{"analyst":"Example Research","ticker":"AAPL","uuid":"fin_score-aapl","datapoints":42,"rating_current":{"raw":1.8,"fmt":"Buy"},"pt_current":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"ratings requires symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/recommendations":{"get":{"tags":["Research"],"operationId":"getRecommendations","summary":"Related Symbols","description":"Returns symbols related to a given ticker.\n\nUse this for peer discovery, comparable-company lists, recommendation widgets, and agents that need to expand from one ticker to nearby instruments.","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string"},"description":"Ticker, index, ETF, fund, currency, or crypto symbol to request, for example AAPL, ^GSPC, SPY, or BTC-USD."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Related Symbols response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationsResponse"},"examples":{"success":{"summary":"Recommendations success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"recommendations"},"data":{"finance":{"result":[{"symbol":"AAPL","recommendedSymbols":[{"symbol":"MSFT","score":0.281},{"symbol":"NVDA","score":0.236}]}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"recommendations requires symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/screener":{"get":{"tags":["Discovery"],"operationId":"getScreener","summary":"Screen Securities","description":"Runs a securities screener and returns matching instruments.\n\nUse this for equity, ETF, or fund discovery workflows such as largest market cap, most active, region filters, quote type filters, or custom criteria supplied in a JSON screener body.\n\nGET uses the default screen. POST accepts a screener JSON body for custom filters.","parameters":[{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Screen Securities response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenerResponse"},"examples":{"success":{"summary":"Screener success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"screener"},"data":{"finance":{"result":[{"start":0,"count":2,"total":2,"quotes":[{"language":"en-US","region":"US","quoteType":"EQUITY","typeDisp":"Equity","quoteSourceName":"Nasdaq Real Time Price","triggerable":true,"currency":"USD","exchange":"NMS","fullExchangeName":"NasdaqGS","exchangeTimezoneName":"America/New_York","exchangeTimezoneShortName":"EDT","market":"us_market","marketState":"REGULAR","regularMarketTime":1777939200,"regularMarketPrice":198.53,"regularMarketChange":1.24,"regularMarketChangePercent":0.63,"regularMarketPreviousClose":197.29,"regularMarketOpen":197.83,"regularMarketDayHigh":200.63,"regularMarketDayLow":196.73,"regularMarketVolume":51234567,"bid":198.5,"ask":198.56,"fiftyTwoWeekRange":"164.08 - 237.49","fiftyTwoWeekHigh":237.49,"fiftyTwoWeekLow":164.08,"trailingPE":30.7,"dividendRate":1.04,"epsTrailingTwelveMonths":6.46,"marketCap":2960000000000,"shortName":"Apple Inc.","longName":"Apple Inc.","symbol":"AAPL"},{"language":"en-US","region":"US","quoteType":"EQUITY","typeDisp":"Equity","quoteSourceName":"Nasdaq Real Time Price","triggerable":true,"currency":"USD","exchange":"NMS","fullExchangeName":"NasdaqGS","exchangeTimezoneName":"America/New_York","exchangeTimezoneShortName":"EDT","market":"us_market","marketState":"REGULAR","regularMarketTime":1777939200,"regularMarketPrice":432.18,"regularMarketChange":1.24,"regularMarketChangePercent":0.63,"regularMarketPreviousClose":430.94,"regularMarketOpen":431.48,"regularMarketDayHigh":434.28000000000003,"regularMarketDayLow":430.38,"regularMarketVolume":51234567,"bid":432.15000000000003,"ask":432.21,"fiftyTwoWeekRange":"164.08 - 237.49","fiftyTwoWeekHigh":237.49,"fiftyTwoWeekLow":164.08,"trailingPE":30.7,"dividendRate":1.04,"epsTrailingTwelveMonths":6.46,"marketCap":2960000000000,"shortName":"Microsoft Corporation","longName":"Microsoft Corporation","symbol":"MSFT"}],"useRecords":false}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"Invalid request parameters."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}},"post":{"tags":["Discovery"],"operationId":"postScreener","summary":"Screen Securities","description":"Runs a securities screener and returns matching instruments.\n\nUse this for equity, ETF, or fund discovery workflows such as largest market cap, most active, region filters, quote type filters, or custom criteria supplied in a JSON screener body.\n\nGET uses the default screen. POST accepts a screener JSON body for custom filters.","parameters":[{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Screen Securities response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenerResponse"},"examples":{"success":{"summary":"Screener success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"screener"},"data":{"finance":{"result":[{"start":0,"count":2,"total":2,"quotes":[{"language":"en-US","region":"US","quoteType":"EQUITY","typeDisp":"Equity","quoteSourceName":"Nasdaq Real Time Price","triggerable":true,"currency":"USD","exchange":"NMS","fullExchangeName":"NasdaqGS","exchangeTimezoneName":"America/New_York","exchangeTimezoneShortName":"EDT","market":"us_market","marketState":"REGULAR","regularMarketTime":1777939200,"regularMarketPrice":198.53,"regularMarketChange":1.24,"regularMarketChangePercent":0.63,"regularMarketPreviousClose":197.29,"regularMarketOpen":197.83,"regularMarketDayHigh":200.63,"regularMarketDayLow":196.73,"regularMarketVolume":51234567,"bid":198.5,"ask":198.56,"fiftyTwoWeekRange":"164.08 - 237.49","fiftyTwoWeekHigh":237.49,"fiftyTwoWeekLow":164.08,"trailingPE":30.7,"dividendRate":1.04,"epsTrailingTwelveMonths":6.46,"marketCap":2960000000000,"shortName":"Apple Inc.","longName":"Apple Inc.","symbol":"AAPL"},{"language":"en-US","region":"US","quoteType":"EQUITY","typeDisp":"Equity","quoteSourceName":"Nasdaq Real Time Price","triggerable":true,"currency":"USD","exchange":"NMS","fullExchangeName":"NasdaqGS","exchangeTimezoneName":"America/New_York","exchangeTimezoneShortName":"EDT","market":"us_market","marketState":"REGULAR","regularMarketTime":1777939200,"regularMarketPrice":432.18,"regularMarketChange":1.24,"regularMarketChangePercent":0.63,"regularMarketPreviousClose":430.94,"regularMarketOpen":431.48,"regularMarketDayHigh":434.28000000000003,"regularMarketDayLow":430.38,"regularMarketVolume":51234567,"bid":432.15000000000003,"ask":432.21,"fiftyTwoWeekRange":"164.08 - 237.49","fiftyTwoWeekHigh":237.49,"fiftyTwoWeekLow":164.08,"trailingPE":30.7,"dividendRate":1.04,"epsTrailingTwelveMonths":6.46,"marketCap":2960000000000,"shortName":"Microsoft Corporation","longName":"Microsoft Corporation","symbol":"MSFT"}],"useRecords":false}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"Invalid request parameters."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}},"requestBody":{"required":false,"description":"Screener definition. Use this when the built-in GET screen is not specific enough and you want to supply filters, sorting, size, or offset.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenerRequest"},"examples":{"large_cap_equities":{"summary":"Large-cap US equities","value":{"size":25,"offset":0,"sortField":"intradaymarketcap","sortType":"DESC","quoteType":"EQUITY","query":{"operator":"AND","operands":[{"operator":"eq","operands":["region","us"]},{"operator":"gt","operands":["intradaymarketcap",10000000000]}]}}}}}}}}},"/v1/screener_discover":{"get":{"tags":["Discovery"],"operationId":"getScreenerDiscover","summary":"Discover Screeners","description":"Returns available screener discovery metadata.\n\nUse this to discover supported screeners and modules before building a custom screener experience or agent workflow.","parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region code for market data, sessions, or discovery metadata, for example US."},{"name":"lang","in":"query","required":false,"schema":{"type":"string"},"description":"Locale used for provider display text, for example en-US."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Discover Screeners response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenerDiscoverResponse"},"examples":{"success":{"summary":"Screener Discover success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"screener_discover"},"data":{"finance":{"result":{"sections":[{"id":"most_actives","title":"Most Actives","screeners":[{"id":"most_actives","title":"Most Actives"}]}],"quotes":[{"language":"en-US","region":"US","quoteType":"EQUITY","typeDisp":"Equity","quoteSourceName":"Nasdaq Real Time Price","triggerable":true,"currency":"USD","exchange":"NMS","fullExchangeName":"NasdaqGS","exchangeTimezoneName":"America/New_York","exchangeTimezoneShortName":"EDT","market":"us_market","marketState":"REGULAR","regularMarketTime":1777939200,"regularMarketPrice":198.53,"regularMarketChange":1.24,"regularMarketChangePercent":0.63,"regularMarketPreviousClose":197.29,"regularMarketOpen":197.83,"regularMarketDayHigh":200.63,"regularMarketDayLow":196.73,"regularMarketVolume":51234567,"bid":198.5,"ask":198.56,"fiftyTwoWeekRange":"164.08 - 237.49","fiftyTwoWeekHigh":237.49,"fiftyTwoWeekLow":164.08,"trailingPE":30.7,"dividendRate":1.04,"epsTrailingTwelveMonths":6.46,"marketCap":2960000000000,"shortName":"Apple Inc.","longName":"Apple Inc.","symbol":"AAPL"}]},"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"Invalid request parameters."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/search":{"get":{"tags":["Search"],"operationId":"getSearch","summary":"Search","description":"Returns finance search results for a text query.\n\nUse this for full search experiences where the user may be looking for symbols, companies, funds, quotes, or related finance content.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Search text such as a company name, fund name, index name, or partial ticker. Alias: query."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Search response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"},"examples":{"success":{"summary":"Search success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"search"},"data":{"count":1,"quotes":[{"symbol":"AAPL","shortname":"Apple Inc.","longname":"Apple Inc.","exchange":"NMS","quoteType":"EQUITY","typeDisp":"Equity","score":152394}],"news":[{"uuid":"example-news-id","title":"Apple shares move with broader technology stocks","publisher":"Yahoo Finance","link":"https://finance.yahoo.com","providerPublishTime":1777939200,"type":"STORY","relatedTickers":["AAPL"]}],"explains":[],"nav":[],"lists":[],"researchReports":[]}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"search requires q= or query=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/sectors":{"get":{"tags":["Discovery"],"operationId":"getSectors","summary":"Sector Data","description":"Returns reference and market data for a sector slug.\n\nUse this to build sector pages, navigate industry groups, compare sector-level activity, or help agents map a broad market theme to investable groups.","parameters":[{"name":"sector","in":"query","required":true,"schema":{"type":"string"},"description":"Sector slug such as technology, healthcare, or financial-services. Alias: slug."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Sector Data response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SectorsResponse"},"examples":{"success":{"summary":"Sectors success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"sectors"},"data":{"data":{"name":"Technology","symbol":"^YH101","key":"technology","overview":{"companiesCount":814,"industriesCount":12,"marketCap":{"raw":18500000000000,"fmt":"18.5T","longFmt":"18,500,000,000,000"},"marketWeight":{"raw":0.316,"fmt":"31.6%"},"description":"Companies that develop software, hardware, semiconductors, and technology services."},"performance":{"day":{"raw":0.012,"fmt":"1.20%"},"ytd":{"raw":0.087,"fmt":"8.70%"},"oneYear":{"raw":0.215,"fmt":"21.50%"}},"topCompanies":[{"symbol":"AAPL","name":"Apple Inc.","marketCap":{"raw":2960000000000,"fmt":"2.96T","longFmt":"2,960,000,000,000"}}],"topETFs":[{"symbol":"XLK","name":"Technology Select Sector SPDR Fund"}],"topMutualFunds":[],"industries":[{"key":"software-infrastructure","name":"Software - Infrastructure","symbol":"^YH1040"}],"researchReports":[]}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"sectors requires sector= or slug=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/spark":{"get":{"tags":["Prices"],"operationId":"getSpark","summary":"Compact Price Series","description":"Returns lightweight recent price series for one or more symbols.\n\nUse this for small charts, watchlists, overview pages, and agents that need quick price movement data without the full historical chart payload.","parameters":[{"name":"symbols","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated symbols to request in one call, for example AAPL,MSFT,NVDA."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Compact Price Series response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SparkResponse"},"examples":{"success":{"summary":"Spark success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"spark"},"data":{"spark":{"result":[{"symbol":"AAPL","response":[{"meta":{"currency":"USD","symbol":"AAPL","exchangeName":"NMS","fullExchangeName":"NasdaqGS","instrumentType":"EQUITY","firstTradeDate":345479400,"regularMarketTime":1777939200,"hasPrePostMarketData":true,"gmtoffset":-14400,"timezone":"EDT","exchangeTimezoneName":"America/New_York","regularMarketPrice":198.53,"chartPreviousClose":197.29,"priceHint":2,"range":"5d","dataGranularity":"1d"},"timestamp":[1777593600,1777680000],"indicators":{"quote":[{"open":[196.12,197.83],"high":[199.24,200.64],"low":[195.77,196.9],"close":[197.29,198.53],"volume":[45123456,51234567]}],"adjclose":[{"adjclose":[197.29,198.53]}]}}]}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"spark requires symbols= or symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/timeseries":{"get":{"tags":["Fundamentals"],"operationId":"getTimeseries","summary":"Fundamental Time Series","description":"Returns time-series fundamentals for one symbol.\n\nUse this for historical financial metrics, trend analysis, factor models, and research agents that need fundamentals across reporting periods.","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string"},"description":"Ticker, index, ETF, fund, currency, or crypto symbol to request, for example AAPL, ^GSPC, SPY, or BTC-USD."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Fundamental Time Series response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeseriesResponse"},"examples":{"success":{"summary":"Timeseries success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"timeseries"},"data":{"timeseries":{"result":[{"meta":{"symbol":["AAPL"],"type":["trailingPegRatio"]},"timestamp":[1711929600,1714521600],"trailingPegRatio":[{"asOfDate":"2024-03-31","periodType":"TTM","reportedValue":{"raw":2.35,"fmt":"2.35"}}]}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"timeseries requires symbol=."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}},"/v1/trending":{"get":{"tags":["Discovery"],"operationId":"getTrending","summary":"Trending Symbols","description":"Returns symbols currently trending for a region.\n\nUse this for discovery surfaces, market-mover modules, alerting ideas, and agents that need a starting set of active tickers.","parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Region code used by the provider trend list, for example US."},{"name":"X-Yfin-Contact","in":"header","required":false,"schema":{"type":"string"},"description":"Optional contact value for support and abuse analysis. This does not authenticate the request or raise request limits."},{"name":"X-Yfin-Key","in":"header","required":false,"schema":{"type":"string"},"description":"API key created through the email verification flow. Authorization: Bearer is also supported."}],"responses":{"200":{"description":"Trending Symbols response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendingResponse"},"examples":{"success":{"summary":"Trending success","value":{"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"trending"},"data":{"finance":{"result":[{"count":2,"quotes":[{"symbol":"AAPL"},{"symbol":"NVDA"}],"jobTimestamp":1777939200000,"startInterval":202605041500}],"error":null}}}}}}}},"400":{"description":"Invalid request parameters.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"bad_request":{"summary":"Invalid request","value":{"ok":false,"error":{"code":"bad_request","message":"Invalid request parameters."}}}}}}},"404":{"description":"Unknown route or endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"not_found":{"summary":"Unknown route","value":{"ok":false,"error":{"code":"not_found","message":"Unknown yfin route."}}},"endpoint_not_found":{"summary":"Unknown endpoint ID","value":{"ok":false,"error":{"code":"endpoint_not_found","message":"Endpoint is not in the endpoint catalog."}}}}}}},"405":{"description":"HTTP method is not allowed for this endpoint.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"method_not_allowed":{"summary":"Method not allowed","value":{"ok":false,"error":{"code":"method_not_allowed","message":"POST is not allowed for this endpoint."},"allow":["GET"]}}}}}},"429":{"description":"Request limit exceeded. Retry-After is included.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"},"examples":{"rate_limited":{"summary":"Request limit exceeded","value":{"ok":false,"error":{"code":"rate_limited","message":"Request limit exceeded."},"rate_limit":{"tier":"anonymous","retry_after_seconds":42,"upgrade":{"message":"Verify an email to create an API key with higher free limits.","request_otp":"/v1/auth/otp","verify_otp":"/v1/auth/verify","api_key_header":"Authorization: Bearer <api_key>"}}}}}}}},"502":{"description":"The data request could not be completed.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"data_request_failed":{"summary":"Data request failed","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.075Z","route":"quote"},"error":{"code":"data_request_failed","message":"The service could not complete the request. Retry shortly."}}}}}}},"503":{"description":"The service is temporarily unavailable or busy.","headers":{"x-yfin-error-code":{"description":"Stable yfin error code.","schema":{"type":"string"}},"x-yfin-error-message":{"description":"Short human-readable error message.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"service_busy":{"summary":"Service busy","value":{"ok":false,"error":{"code":"service_busy","message":"The service is temporarily busy. Retry shortly."}}},"data_service_unavailable":{"summary":"Data service unavailable","value":{"ok":false,"meta":{"provider":"yahoo","generated_at":"2026-05-04T19:10:01.073Z","route":"quote"},"error":{"code":"data_service_unavailable","message":"The service is temporarily unavailable. Retry shortly."}}}}}}}}}}},"externalDocs":{"description":"Yahoo Finance source docs","url":"https://bluedoor.sh/apis/financial-data/sources/yfin"}}