XFINLAB

Inteligência de mercado financeiro via MCP — eventos de mercado, sentimento, indicadores técnicos e ferramentas de dados macro para agentes de IA. Plano gratuito disponível imediatamente.

Servidor MCP hospedado

npx add-mcp 'https://api.xfinlab.com/api/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

Inteligência de mercado real, estruturada para desenvolvedores

20+ endpoints JSON — eventos de mercado, sentimento FinBERT, debate multiagente com IA, inteligência de rede de empresas, fundamentos e contexto macro entre setores (energia, agricultura, imobiliário, cadeia de suprimentos, demanda do consumidor) — construídos sobre os mesmos dados reais e princípios antifabricação por trás do produto da própria XFINLAB. Chaves do plano gratuito são emitidas instantânea e automaticamente; Pro/Enterprise ainda são configuradas pessoalmente.

Início rápido

1

Obtenha uma chave de API gratuita

Emitida instantânea e automaticamente, sem esperar por um humano. Solicite uma abaixo →

2

Faça sua primeira chamada

Um endpoint, um cabeçalho. Substitua pela sua própria chave e ticker.

curl -H "X-API-Key: xfl_..." \ "https://api.xfinlab.com/api/intelligence/v1/sentiment?ticker=AAPL"

3

Veja um resultado real

Exemplo reduzido — sua resposta real também inclui sentimento por manchete.

{ "success": true, "data": { "ticker": "AAPL", "aggregate_sentiment": "neutral", "aggregate_score": 0.04, "headline_count": 8 } }

Prefere Python ou Node? Mesmo endpoint, uma chamada de método. Veja os SDKs oficiais →

Experimente ao vivo

Cole sua chave de API, escolha um endpoint e veja uma resposta real — aqui mesmo, sem precisar de código. Não tem uma? Obtenha uma chave gratuita ↓

Response will appear here.

Isso roda diretamente do seu navegador contra a API ao vivo. Sua chave é enviada apenas para a API da XFINLAB — nunca armazenada ou registrada por esta página.

Dezenove endpoints, uma chave de API

Toda resposta é JSON estruturado por IA — nunca texto bruto de artigos raspados. Ver especificação OpenAPI → Baixar coleção Postman →

Toda resposta autenticada inclui os cabeçalhos X-RateLimit-Limit e X-RateLimit-Remaining, para que você possa controlar o ritmo das requisições em vez de adivinhar a partir de um erro 429.

1x

GET /v1/events

Eventos

Manchetes recentes de mercado/empresas por ticker ou globalmente — título, fonte, horário de publicação e link. Sem resumos fabricados de artigos que não podemos reter integralmente.

Campos da resposta

data array — uma entrada por manchete

title string

source string — nome do publicador (ex.: GlobeNewswire, PR Newswire, ou um rótulo de fonte GDELT)

kind string — "company_announcement" ou "market_news"

published_at string|null — ISO 8601, null se o feed de origem não tinha data analisável

url string

tickers string[] — apenas no modo lote, quais símbolos solicitados este evento correspondeu

meta.count int

meta.ticker string|null — modo de ticker único ou sem ticker

meta.tickers string[] — modo lote, substitui meta.ticker

ticker\ também aceita uma lista separada por vírgulas, até 10 símbolos (ex.: "AAPL,MSFT,TSLA"), para consultas estilo watchlist — os resultados são mesclados e deduplicados entre todos os tickers solicitados. O peso da cota escala com o número de tickers solicitados.

1x

GET /v1/sentiment

Sentimento

Sentimento pontuado por FinBERT nas manchetes recentes de um ticker — rótulo/confiança por manchete, além de uma pontuação agregada. Reporta honestamente "indisponível" em vez de adivinhar quando o modelo está inacessível.

Campos da resposta

data.ticker string

data.average_score number|null — 0-100 de alta agregada; ausente quando nenhuma manchete correspondeu

data.results array — uma entrada por manchete

headline string

label string — "positive" | "neutral" | "negative"

confidence_pct number

score number

meta.articles_analyzed int, meta.source "finbert"

Quando zero manchetes são encontradas, a estrutura muda ligeiramente: articles_analyzed move-se para data (data.articles_analyzed) em vez de meta, e average_score é omitido completamente — vale tratar como um caso à parte no seu código cliente.

ticker\ também aceita uma lista separada por vírgulas, até 10 símbolos. Requisições em lote retornam data.results\_by\_ticker\ (chaveado por símbolo) em vez da estrutura plana ticker/average_score/results acima, já que calcular a média do sentimento entre tickers não relacionados seria um número enganoso. O peso da cota escala com o número de tickers solicitados.

5x

GET /v1/debate

Debate de IA

Um debate de 4 chamadas Touro / Urso / Gestor de Risco / Árbitro fundamentado em dados técnicos reais para um ticker — sintetizado em um veredito único.

Campos da resposta

data.available bool — sempre true em um 200 (um 503 é levantado em vez disso se o motor de debate em si estiver inacessível)

data.arguments object|null — {bull, bear, risk_manager}, cada um uma string; null se o debate falhou no meio do caminho

data.verdict string|null

data.disclaimer string — presente apenas quando o debate foi concluído integralmente

data.error string|null — definido se uma chamada falhou no meio do debate

meta.ticker string

8x

GET /v1/intel/latest · /v1/intel/{ticker}

Feed de Inteligência de IA

Inteligência estruturada original, não notícias brutas: manchetes do mesmo evento agrupadas em clusters e depois enriquecidas com entidades, sentimento, sinais técnicos reais/análogos histórico, uma leitura não causal de co-movimento entre ativos e uma narrativa escrita por IA — cada número rastreável a um cálculo real, nunca uma pontuação de confiança fabricada. O endpoint que mais exige computação.

Campos da resposta

data array — uma entrada por cluster de evento, do mais recente ao mais antigo

id, title string

summary string|null — resumo factual gerado por IA; null se essa chamada de IA falhou

entities, affected_assets array<string> — tickers extraídos

sentiment string|null — "bullish"|"bearish"|"neutral"; sentiment_confidence number|null

importance number — heurística 0-100; source_count int

impact_score, confidence, probability number|null — leitura quantitativa, null enquanto quant_pending for true

risk_level string|null — "high"|"medium"|"low"; time_horizon string|null

quant_pending bool

event_chain array|null — possíveis candidatos de impacto downstream com estatísticas históricas de taxa de acerto; os campos por candidato variam (alguns carregam um error ou note em vez de estatísticas)

quant_signals object — per_asset é chaveado dinamicamente por ticker, os campos de cada valor variam conforme o que foi resolvido; veja uma resposta ao vivo em vez de uma lista fixa aqui

citations array — {title, link, source, published_at}

narrative string|null — parágrafo de resumo escrito por IA; narrative_lang string

generated_at string — ISO 8601

meta.count int; meta.ticker string apenas na variante /intel/{ticker}

A resposta mais dinâmica desta API — os campos quant_signals e event_chain dependem de quais dados foram resolvidos para cada cluster. Tudo que é anulável acima é genuinamente condicional, não um esquema fixo que você pode assumir que estará sempre totalmente preenchido.

3x

GET /v1/technical/{ticker}

Técnico e Estrutura de Mercado

Direção/confiança de confluência, tendência, MACD, volume, detecção de padrões de gráfico e estrutura de mercado (quebra de estrutura, mudança de caráter, varreduras de liquidez, fluxo de ordens, perfil de volume, pegada institucional) para qualquer ticker — o mesmo motor por trás da análise de gráficos da própria XFINLAB.

Campos da resposta

data.symbol, data.last_close, data.trend, data.rsi string|number|null

data.macd object — {macd_line, signal_line, histogram, trend}

data.support, data.resistance object|null — {level, touches}

data.indicators object — ema20/ema50/sma20/sma50/atr14, além de sub-objetos anuláveis para bollinger, obv, vwap, supertrend, ichimoku, donchian, keltner

data.confluence object — {score (-100..100), direction, confidence, confidence_pct, signals_counted, bullish_signals[], bearish_signals[]}

data.decision_levels object|null — {bias, entry, stop_loss, take_profits[], risk_reward, risk_pct}; null se a confluência não tem viés direcional claro

data.market_structure object|null — eventos de quebra de estrutura/mudança de caráter, pools de liquidez, fluxo de ordens, perfil de volume, pegada institucional; null se ainda não há dados de swing suficientes

data.patterns object — conjunto fixo de chaves de padrões de gráfico, cada uma "可能" (possível) ou "不可能" (não presente)

data.data_points, data.period, data.interval

Barras de preço OHLC brutas são deliberadamente nunca incluídas nesta resposta — todo campo derivado de preço acima é um resultado computado, não o feed subjacente (veja Fontes de Dados abaixo). Campos com valores em string (trend, confluence.direction, rótulos de padrão, etc.) são localizados com base no parâmetro de consulta lang.

3x

POST /v1/stress-test

Teste de Estresse Monte Carlo

Uma simulação real de bootstrap histórico — reamostra os retornos diários reais de um símbolo milhares de vezes para reportar valores finais percentílicos e rebaixamentos (drawdowns) para um horizonte dado. Nunca um número estimado por LLM.

Campos da resposta

data.available true

data.symbol, data.horizon_days, data.n_simulations, data.n_real_observations, data.starting_amount

data.ending_value_p5 / p25 / p50 / p75 / p95 number — valores percentílicos finais da carteira

data.max_drawdown_p50_pct, data.max_drawdown_p5_pct number — valores negativos

data.method, data.note string — divulgação de metodologia, retornada literalmente, nunca removida

meta.symbol string

3x

GET /v1/regime-signal/{ticker}

Sinal Ciente de Regime

Regime causal atual de mercado para um ticker, além de qual combinação de sinais compostos teve historicamente o melhor desempenho nesse mesmo regime — respaldado por backtests reais validados por walk-forward, não uma escolha fabricada. Reporta honestamente "dados insuficientes ainda" para tickers ainda não cobertos pela varredura agendada.

Campos da resposta

data.current_regime object — {symbol, regime, as_of_date, note}

data.regime_used string — seu parâmetro de consulta regime se fornecido, senão current_regime.regime

data.available bool

data.best_candidate object — apenas quando available for true: {label, trade_count, win_rate_pct, avg_return_pct}

data.runner_up_candidates array — até 5, mesma forma que best_candidate, apenas quando available for true

data.reason string — presente apenas quando available for false

data.caveats array<string> — presente de qualquer forma, texto diferente

meta.ticker string

4x

GET /v1/forecast/{ticker}

Previsão Probabilística

Um gráfico de leque de caminhos de preço Urso/Base/Touro — o 10º/50º/90º percentil de um bootstrap real de retornos históricos, dia a dia, não apenas um valor final — além de uma verificação cruzada independente de probabilidade de alta validada por ML e uma leitura de regime de fluxo de capital/liquidez. Nunca uma divisão de probabilidade fixa fabricada.

Campos da resposta

data.available true

data.symbol, data.horizon_days, data.last_close

data.bear_path / base_path / bull_path number[] — um valor por dia de horizonte, 10º/50º/90º percentil entre as simulações

data.band_note string — declara o que os percentis significam (ex.: "80% dos resultados simulados ficam entre Urso e Touro") — sempre retornado literalmente, nunca removido

data.ml_cross_check object|null — {available, up_probability_pct, holdout_accuracy_pct, trained_at}; null quando ainda não existe modelo validado para este símbolo

data.capital_flow_context object|null — {score, direction}; null até o trabalho de atualização em segundo plano populá-lo

data.method, data.disclaimer string

meta.ticker, meta.horizon_days

horizon_days aceita 1-60 (parâmetro de consulta, padrão 5). Este endpoint nunca fabrica uma divisão fixa de probabilidade touro/base/urso — a band_note retornada explica a interpretação estatística honesta da faixa percentílica em vez disso.

3x

GET /v1/insider/{ticker}

Negociação de Insider

Transações de negociação de insider do Formulário 4 da SEC, referenciadas cruzadamente sob o próprio CIK EDGAR do emissor — não apenas o que o próprio emissor arquivou. Atividade não derivativa de mercado aberto dos arquivamentos mais recentes, com um resumo de compra/venda. Cache no servidor por 24h.

Campos da resposta

data.ticker, data.attribution string

data.transactions array — arquivamentos mais recentes, do mais novo ao mais antigo

insider_name, officer_title string|null

is_director, is_officer, is_ten_percent_owner bool

transaction_date, transaction_code, transaction_label string

shares, price_per_share, shares_owned_after number|null — doações/algumas concessões não têm preço

acquired_disposed "A"|"D" data.summary objeto — {buy_count, sell_count, net_shares, net_value_usd}; net_value_usd soma apenas linhas que tenham preço e quantidade de ações

meta.ticker string

Cobre apenas transações não derivativas (compra direta de ações no mercado aberto) — não inclui atividade de opções/RSU, nem um histórico completo de negociações. Retorna data:null com uma string de erro para tickers que não podem ser resolvidos para um CIK da EDGAR dos EUA.

2x

GET /v1/short-interest/{ticker}

Juros sobre Vendas a Descoberto

Relatório quinzenal de juros sobre vendas a descoberto de ações da FINRA — ações em posição vendida reportadas atual/anterior, volume médio diário, dias para cobertura e variação período a período. Proveniente do arquivo público genuinamente gratuito da FINRA, não da API de Consulta restrita a empresas membros.

Campos da resposta

data.ticker, data.issue_name, data.attribution string

data.settlement_date string — ISO 8601, a data de reporte quinzenal que este snapshot cobre

data.current_short_shares, data.previous_short_shares, data.avg_daily_volume número

data.days_to_cover, data.change_pct número

meta.ticker string

Uma resposta data:null\ para um ticker coberto é um resultado real e honesto de "não está atualmente em posição vendida em níveis reportáveis", não necessariamente um erro — verifique a string de erro acompanhante para distinguir os dois casos.

2x

GET /v1/energy/{ticker}

Fundamentos de Energia

Contexto de mercado físico da EIA para tickers ligados a energia — preço à vista do petróleo WTI, preço à vista do gás natural Henry Hub e estoques de gás natural trabalhando no Lower-48. Preenchido apenas para tickers com uma ligação real a petróleo/gás natural (atualmente USO, UNG).

Campos da resposta

data.matched_ticker, data.attribution string

data.series objeto — chaveado dinamicamente por série da EIA (ex.: wti_crude_spot_usd_bbl), cada valor ou null

label, unit, period string

value número

meta.ticker string

Retorna data:null para qualquer ticker sem uma ligação real a mercado físico — nunca uma leitura fabricada para um símbolo não relacionado. A cobertura hoje é USO (petróleo WTI) e UNG (Henry Hub + estoques).

2x

GET /v1/exchange/{ticker}

Comparação entre Exchanges

As estatísticas ao vivo de 24h do mesmo ticker de criptomoeda em duas exchanges spot reais — Binance e Coinbase — lado a lado. Preenchido apenas para os tickers de criptomoeda rastreados que ambas as plataformas cobrem.

Campos da resposta

data.binance, data.coinbase objeto|null — qualquer um pode ser independentemente null em caso de ausência específica de uma plataforma

ticker, last_price, price_change_pct_24h, high_24h, low_24h, volume_24h

binance_symbol string — apenas objeto Binance; coinbase_product_id string — apenas objeto Coinbase

quote_volume_24h número — Binance (real); quote_volume_24h_usd_est número + quote_volume_is_estimated: true — Coinbase (derivado, não um valor real por negociação)

meta.ticker string

Tanto binance quanto coinbase são null juntos apenas quando o ticker não é rastreado por nenhuma das plataformas — a resposta nunca mistura uma leitura real de uma exchange com uma fabricada da outra.

3x

GET /v1/fundamentals/{ticker}

Fundamentos da Empresa

Fatos mais recentes das demonstrações financeiras anuais (10-K) direto do XBRL da SEC — receita, lucro líquido, EPS diluído, ativos/passivos totais, fluxo de caixa operacional. Os primeiros dados reais de fundamentos nesta API. Cache no servidor por 24h.

Campos da resposta

data.ticker, data.cik, data.attribution string

data.facts objeto — chaveado dinamicamente (revenue, net_income, eps_diluted, total_assets, total_liabilities, operating_cash_flow), cada um presente apenas se esse conceito tiver um valor utilizável no 10-K

label, unit, end_date, form string

value número

meta.ticker string

Uma chave de conceito ausente significa que essa empresa nunca reportou essa tag XBRL específica em um 10-K — nunca um zero fabricado ou um placeholder null misturado com valores reais.

1x

GET /v1/vix-term-structure

Estrutura a Termo do VIX

Estrutura a termo do CBOE VIX9D/VIX/VIX3M/VIX6M, além de uma leitura de regime de contango/backwardation. Não é específico de ticker — um snapshot de todo o mercado por chamada.

Campos da resposta

data.attribution string

data.term_structure objeto — chaveado vix9d/vix/vix3m/vix6m, cada {label, date, close} ou null

data.structure "contango"|"backwardation"|"flat"|null

data.vix3m_minus_vix número|null

Backwardation (volatilidade de curto prazo precificada acima da de médio prazo) historicamente coincidiu com episódios de estresse no mercado — esta é uma leitura de regime, não uma previsão de preço.

2x

GET /v1/bank-health/{ticker}

Saúde Bancária

Saúde do Call Report do FDIC (ROA, ROE, ativos, patrimônio líquido, lucro líquido) para a subsidiária segurada líder de uma grande holding bancária. Cobre JPM, BAC, WFC, C, USB, PNC, TFC hoje.

Campos da resposta

data.ticker, data.attribution string

data.bank objeto — {cert, bank_name, report_date, asset, equity, net_income, roa, roe}

meta.ticker string

Reflete o Call Report da subsidiária bancária líder regulada, não as demonstrações financeiras GAAP consolidadas da ação da holding — use /v1/fundamentals para isso.

2x

GET /v1/agriculture/{ticker}

Preços Agrícolas

Dados da USDA de preços recebidos pelos agricultores para milho, trigo e soja — emparelha com CORN/WEAT/SOYB da mesma forma que /v1/energy emparelha com USO/UNG.

Campos da resposta

data.matched_ticker, data.attribution string

data.series objeto — uma chave, ex.: corn_price_received_usd_bu

label, unit, period string

value número

meta.ticker string

Retorna data:null para qualquer ticker sem uma ligação real a commodities. A cobertura é CORN, WEAT, SOYB hoje.

Pro

POST /v1/webhooks/subscribe · GET /v1/webhooks · DELETE /v1/webhooks/{id}

Webhooks (Notificações Push)

Seja notificado no momento em que um evento real acontece em vez de fazer polling. Três tipos de evento hoje: vix_regime_change (mudança de contango/backwardation em todo o mercado), new_13d_filing (por ticker, dispara quando a contagem de arquivamentos ativistas de um ticker monitorado aumenta) e opportunity_radar_shift (em todo o mercado, dispara quando a inclinação líquida de melhora/piora de uma indústria do Opportunity Radar muda). Todos os três são apoiados por trabalhos agendados diários de atualização, então a entrega é no mesmo dia, nunca uma alegação fabricada de "tempo real". Apenas para o nível Pro — uma chave do nível gratuito recebe um 403.

Campos da resposta

data.id número — o id da sua nova assinatura, usado para cancelar a assinatura

GET /webhooks retorna data.webhooks array — todas as assinaturas na sua própria chave, com fail_count / last_delivered_at / last_status_code

Payload entregue: {"event", "ticker", "data", "delivered_at"} POSTado para sua URL

Uma assinatura é desativada automaticamente após 5 falhas consecutivas de entrega (verifique GET /webhooks para fail_count) — reassine assim que seu endpoint voltar. A entrega é de melhor esforço e fire-and-forget: um receptor lento/morto nunca bloqueia ou tenta novamente indefinidamente.

2x

GET /v1/real-estate/{ticker}

Imóveis

Contexto do mercado imobiliário dos EUA do FRED — taxa fixa de hipoteca de 30 anos, índice de preços de imóveis Case-Shiller, início de construções, vendas de imóveis existentes. Preenchido apenas para tickers ligados a habitação (construtoras, REITs, um originador de hipotecas, ETFs do setor imobiliário).

Campos da resposta

data.matched_ticker, data.matched_name, data.attribution string

data.indicators objeto — chaveado dinamicamente (mortgage_rate_30y_pct, home_price_index, housing_starts_thousands, existing_home_sales_thousands), cada valor ou null

label, unit, date string

value número

meta.ticker string

Retorna data:null para qualquer ticker sem uma ligação real ao mercado imobiliário — nunca uma leitura fabricada para um símbolo não relacionado. Cobertura: DHI, LEN, PHM, NVR, TOL, KBH, MTH, O, SPG, PLD, PSA, AVB, EQR, RKT, VNQ, XHB, ITB hoje.

2x

GET /v1/supply-chain/{ticker}

Cadeia de Suprimentos

Contexto de manufatura/cadeia de suprimentos dos EUA do FRED — razão estoque/vendas, novos pedidos de manufatura, pedidos de bens duráveis, produção industrial, emprego na manufatura. Preenchido apenas para tickers ligados a frete/logística (transportadoras, ferrovias, ETFs de transporte).

Campos da resposta

data.matched_ticker, data.matched_name, data.attribution string

data.indicators objeto — chaveado dinamicamente (inventory_sales_ratio, manufacturing_new_orders_musd, durable_goods_orders_musd, industrial_production_manufacturing_index, manufacturing_employment_thousands), cada valor ou null

label, unit, date string

value número

meta.ticker string

Retorna data:null para qualquer ticker sem uma ligação real a frete/logística — nunca uma leitura fabricada para um símbolo não relacionado. Cobertura: FDX, UPS, XPO, JBHT, CHRW, ODFL, GXO, EXPD, CSX, UNP, NSC, IYT, XTN hoje.

2x

GET /v1/consumer-demand/{ticker}

Demanda do Consumidor

Contexto de gastos do consumidor dos EUA do FRED — vendas no varejo, despesas de consumo pessoal, consumo de bens duráveis. Não são dados de interesse de busca do Google Trends — não existe uma API oficialmente licenciada e segura para uso comercial de tendências de busca; dados reais de gastos são o proxy mais confiável. Preenchido apenas para tickers ligados a gastos do consumidor (grandes varejistas, e-commerce, ETFs de consumo discricionário).

Campos da resposta

data.matched_ticker, data.matched_name, data.attribution string

data.indicators objeto — chaveado dinamicamente (retail_sales_total_musd, retail_sales_goods_only_musd, personal_consumption_expenditures_busd, durable_goods_consumption_busd), cada valor ou null

label, unit, date string

value número

meta.ticker string

Retorna data:null para qualquer ticker sem uma ligação real a gastos do consumidor — nunca uma leitura fabricada para um símbolo não relacionado. Cobertura: WMT, TGT, COST, HD, LOW, AMZN, BBY, TJX, ROST, XRT, XLY hoje.

6x

GET /v1/opportunity-radar

Radar de Oportunidades

Snapshot global (sem ticker) em imóveis, cadeia de suprimentos, demanda do consumidor, energia e agricultura, além de um pano de fundo macro dos EUA — a variação percentual real de cada indicador (mais recente vs. mais antiga de suas observações anteriores) e rótulo de melhora/piora. Sem pontuação fabricada entre indústrias: as indústrias nunca são classificadas ou combinadas umas contra as outras.

Campos da resposta

data.as_of, data.attribution, data.methodology_note string

data.macro_backdrop.indicators objeto — fed_funds_rate_pct, unemployment_pct, yield_curve_10y2y_pct, jobless_claims_initial (apenas direção, sem rótulo de melhora)

data.industries objeto — real_estate, supply_chain, consumer_demand, energy, agriculture, cada um com label, indicators, indicators_available, improving_count, worsening_count, flat_count, summary string

cada indicador: label, unit, latest_date, latest_value, compare_date, compare_value, pct_change, direction (up/down/flat), improving (true/false/null)

5 indústrias, cada uma gated independentemente na chave de sua própria fonte de dados (FRED_API_KEY para imóveis/cadeia de suprimentos/demanda do consumidor, EIA_API_KEY para energia, USDA_NASS_API_KEY para agricultura). Uma indústria cuja chave não está configurada ainda aparece com um objeto de indicadores vazio e um resumo honesto de "não configurado" — nunca derruba o resto da resposta e nunca fabrica uma leitura placeholder.

3x

GET /v1/consumer-safety/{ticker}

Segurança do Consumidor (openFDA)

Contexto de recalls de alimentos/medicamentos/dispositivos regulados pela FDA e eventos adversos alimentares (CAERS), últimos 12 meses, via openFDA. Nenhuma chave de API necessária no lado do próprio openFDA. Preenchido apenas para tickers com uma ligação real de palavra-chave de marca/fabricante.

Campos da resposta

data.matched_ticker, data.matched_keywords array, data.attribution, data.lookback_days número

data.datasets objeto — food_recalls, drug_recalls, device_recalls, food_adverse_events, cada um com count, recent array, fetch_error boolean

itens de recall: recall_number, date, status, classification, recalling_firm, product_description, reason_for_recall

itens de eventos adversos: report_number, date, product_brand, reactions, outcomes Per o próprio aviso da openFDA: a existência de um relatório não é prova de causalidade, e esses dados não devem ser usados para estimar incidência ou risco. Retorna data:null para qualquer ticker sem uma ligação real de marca/fabricante.

2x

GET /v1/product-recalls/{ticker}

Recalls de Produtos (CPSC)

Contexto de recalls de produtos de consumo geral da CPSC (brinquedos, eletrodomésticos, móveis, eletrônicos, ferramentas), últimos 12 meses. Escopo mais amplo que as categorias reguladas pela FDA do Consumer Safety. Nenhuma chave de API necessária. Somente preenchido para tickers com uma ligação real de palavra-chave de fabricante.

Campos da resposta

data.matched_ticker, data.matched_keywords array, data.attribution, data.lookback_days number, data.count number, data.fetch_error boolean

data.recent array -- recall_id, recall_number, date, title, product_name, manufacturer, hazard, remedy, url

O próprio backend ao vivo da CPSC tem mostrado problemas intermitentes de confiabilidade — reportados honestamente como fetch_error:true no corpo da resposta, nunca uma leitura fabricada de zero recalls. Retorna data:null para qualquer ticker sem uma ligação real de fabricante.

2x

GET /v1/recall-search?keyword=

Busca de Recalls por Marca/Produto (CPSC)

Busca de texto livre em recalls da CPSC por nome de marca ou produto — para vendedores de e-commerce verificando sua própria linha de produtos, não restrita à lista pré-mapeada de ~24 tickers de grandes empresas públicas do Product Recalls. Combine com um webhook recall_match de nível Pro (abaixo) para ser notificado no momento em que um novo recall corresponder à sua palavra-chave, em vez de consultar este endpoint você mesmo.

Campos da resposta

data.keyword, data.attribution, data.lookback_days number, data.count number, data.fetch_error boolean

data.recent array -- recall_id, recall_number, date, title, product_name, manufacturer, hazard, remedy, url

Mesma fonte CPSC ao vivo do Product Recalls, mesma postura de honestidade — fetch_error:true em uma falha real upstream, nunca uma leitura fabricada de zero recalls. Uma palavra-chave vazia retorna count:0 em vez de um erro.

De onde vêm os dados

Cada fonte abaixo é licenciada para redistribuição comercial — verificada diretamente contra os termos publicados de cada provedor, não presumida.

Notícias e eventos

Monitoramento global de notícias do GDELT (domínio público, 100+ idiomas, uso comercial ilimitado) além dos fios oficiais de comunicados de imprensa de empresas (GlobeNewswire, PR Newswire). Nenhum feed neste pipeline carrega uma restrição de uso pessoal/não comercial.

Dados de preços dos EUA

Símbolos listados nos EUA: feed licenciado da Alpaca Markets. Permite explicitamente redistribuição comercial — sem scrapers não oficiais neste caminho.

Taiwan e outros mercados

Símbolos listados em Taiwan: a API oficial de dados abertos da própria Taiwan Stock Exchange — totalmente licenciada para redistribuição comercial, mesmo padrão do feed dos EUA. Símbolos de Hong Kong e outros não-EUA, não-Taiwan atualmente usam uma fonte fallback de melhor esforço enquanto avaliamos um provedor licenciado — divulgado aqui, não escondido. E independentemente da fonte, nenhum endpoint reexporta barras de preço brutas: todo campo derivado de preço (tendência, RSI, suporte/resistência, estrutura de mercado) é um resultado calculado, não o feed subjacente.

A cobertura da Ásia-Pacífico é uma lacuna amplamente relatada na maioria das APIs de dados financeiros voltadas para desenvolvedores. O feed de Taiwan da XFINLAB é uma conexão real de bolsa oficialmente licenciada — não uma fonte raspada ou de melhor esforço fingindo ser outra coisa.

SDKs oficiais

Wrappers finos, sem mágica — um método por endpoint, o mesmo JSON que você obteria de uma chamada HTTP bruta. Ainda não no PyPI/npm (ainda não há desenvolvedores pagantes para justificar essa sobrecarga de manutenção) — instale direto do repositório por enquanto.

pip install "git+https://github.com/lnanology/Xfinlab.git#subdirectory=sdk/python"

from xfinlab_intelligence import XfinlabClient client = XfinlabClient(api_key="xfl_...") client.sentiment("AAPL")

npm install "github:lnanology/Xfinlab#path:sdk/js"

const { XfinlabClient } = require('xfinlab-intelligence'); const client = new XfinlabClient('xfl_...'); await client.sentiment('AAPL');

Nenhum SDK necessário — todo endpoint é JSON simples sobre HTTPS.

curl -H "X-API-Key: xfl_..." \ "https://api.xfinlab.com/api/intelligence/v1/sentiment?ticker=AAPL"

Servidor MCP — para agentes de IA e Claude

Os mesmos 7 endpoints acima, expostos como ferramentas do Model Context Protocol — para que um agente de IA (Claude, ou qualquer cliente compatível com MCP) possa chamá-los diretamente em vez de você escrever a cola HTTP você mesmo.

A maioria dos servidores MCP não diz nada sobre a qualidade dos dados por trás de suas chamadas de ferramenta. Este diz, publicamente — veja o status ao vivo de cada fonte de dados subjacente em xfinlab.com/trust.html.

Endpoint HTTP streamable: https://api.xfinlab.com/api/mcp

{ "mcpServers": { "xfinlab": { "url": "https://api.xfinlab.com/api/mcp", "headers": { "X-API-Key": "xfl_..." } } } }

Prefere JSON-RPC bruto? Um GET para a mesma URL retorna uma página de informações legível por humanos; toda chamada de ferramenta é um único POST sem estado — sem handshake de sessão além do método padrão "initialize" do MCP.

get_market_events

Manchetes recentes de mercado/empresa, opcionalmente filtradas por ticker.

get_sentiment

Pontuação de sentimento FinBERT para as manchetes recentes de um ticker.

get_technical_analysis

Direção de confluência, tendência, MACD, volume, padrões e sinais de estrutura de mercado a partir de dados OHLC reais.

get_intelligence_feed

Inteligência de eventos agrupada e estruturada por IA com um resumo narrativo — nunca um sinal direcional de negociação ou estimativa de probabilidade.

get_global_market_map

Instantâneo macro + notícias + sentimento entre regiões em 10 regiões (EUA, Europa, Japão, Coreia, China, HK, Taiwan, Sudeste Asiático, Oriente Médio, América Latina).

Autenticação e cota são idênticas à API REST acima — mesma X-API-Key, mesmo nível gratuito, mesmo limite diário ponderado. Sem carona gratuita separada via MCP.

Changelog

O que foi lançado, cronologicamente. Ver como JSON →

Roadmap

O que vem a seguir — nada aqui é promessa de data de lançamento, apenas o que está realmente sendo considerado. Ver como JSON →

Planos

O nível gratuito é instantâneo e automatizado. Pro/Enterprise ainda são configurados pessoalmente — os preços abaixo são com os quais estamos lançando e podem ser ajustados com base no feedback dos primeiros desenvolvedores reais que o usarem.

Free

$0

Para avaliar a API e prototipar.

  • ✓ 200 chamadas ponderadas / dia
  • ✓ Endpoints de Eventos + Sentimento
  • ✕ Endpoint AI Debate
  • ✕ Endpoint AI Intelligence Feed
  • ✕ Suporte prioritário

Enterprise

Personalizado

Para maior volume ou necessidades dedicadas.

  • ✓ Chamadas ilimitadas
  • ✓ Todos os 4 endpoints, incl. AI Debate + AI Intelligence Feed
  • ✓ White-label: JSON limpo sem marca XFINLAB, além de widgets de incorporação totalmente sem marca (badge removido)
  • ✓ Suporte dedicado
  • ✓ SLA sob solicitação

Todo endpoint acima retorna JSON simples sem marca XFINLAB — seguro para revender sob seu próprio nome de produto. Chaves Pro/Enterprise também podem reestilizar os widgets de incorporação gratuitos (cores, logotipo, co-brand ou badge totalmente removido) — peça para configurarmos assim que você tiver uma chave.

Obtenha uma Chave de API

Escolha Free abaixo e sua chave será enviada por e-mail instantaneamente — sem espera. Escolha Pro ou Enterprise e entraremos em contato pessoalmente com preços adequados.

XFINLAB Intelligence API on LaunchNestFeatured on DevHub XFINLAB Intelligence API — Verified by KittyLaunch