# SDKs Oficiais URL: /docs/sdks.mdx SDKs oficiais da brapi.dev para TypeScript/JavaScript e Python. Integre a API da B3 com tipos completos, retry automático e tratamento de erros inteligente. *** title: 'SDKs Oficiais' description: >- SDKs oficiais da brapi.dev para TypeScript/JavaScript e Python. Integre a API da B3 com tipos completos, retry automático e tratamento de erros inteligente. full: false keywords: brapi, sdk, typescript, python, npm, pypi, api client, developer tools openGraph: title: SDKs Oficiais - brapi.dev description: >- Bibliotecas oficiais para integração rápida e tipada com a API da B3 type: website locale: pt\_BR lastUpdated: '2025-10-12T20:10:00.000Z' lang: pt-BR ----------- Bibliotecas oficiais que facilitam a integração com a API da B3, oferecendo tipos completos, tratamento de erros automático e experiência de desenvolvimento otimizada. ## Por Que Usar Nossas SDKs? ### Antes (Requisições HTTP Manuais) ```typescript const response = await fetch( `https://brapi.dev/api/quote/PETR4?token=${token}` ); if (!response.ok) throw new Error(`HTTP ${response.status}`); const data = await response.json(); const price = data.results[0].regularMarketPrice; // Sem tipos 😢 ``` ### Depois (Com SDKs) ```typescript const quote = await client.quote.retrieve('PETR4'); const price = quote.results[0].regularMarketPrice; // ✅ Tipos completos! ``` **Benefícios:** * ✅ **60% menos código** * ✅ **Tipos completos** - IntelliSense e autocomplete * ✅ **Retry automático** - Tratamento inteligente de falhas * ✅ **Erros tipados** - Exceções específicas por status * ✅ **Sempre atualizado** - Sincronizado com a API *** ## SDKs Disponíveis ### TypeScript / JavaScript [![NPM version](https://img.shields.io/npm/v/brapi.svg?label=npm)](https://npmjs.org/package/brapi) [![Bundle size](https://img.shields.io/bundlephobia/minzip/brapi)](https://bundlephobia.com/package/brapi) SDK oficial para TypeScript e JavaScript com suporte a Node.js e navegador. #### Instalação ```bash npm install brapi # ou yarn add brapi # ou pnpm add brapi # ou bun add brapi ``` #### Exemplo Rápido ```typescript import Brapi from 'brapi'; const client = new Brapi({ apiKey: process.env.BRAPI_API_KEY, }); const quote = await client.quote.retrieve('PETR4'); console.log(quote.results[0].regularMarketPrice); ``` #### Características * ✅ Tipos TypeScript completos * ✅ Suporte Node.js e Browser * ✅ Tree-shakeable (bundle otimizado) * ✅ Integração Next.js, Express, etc. * ✅ Retry automático configurável **Links:** * 📚 [Documentação completa](/docs/sdks/typescript) * 📦 [NPM Package](https://www.npmjs.com/package/brapi) * 🔧 [GitHub Repository](https://github.com/brapi-dev/brapi-typescript) *** ### Python [![PyPI version](https://img.shields.io/pypi/v/brapi.svg?label=pypi)](https://pypi.org/project/brapi/) SDK oficial para Python 3.8+ com suporte síncrono e assíncrono. #### Instalação ```bash pip install brapi # Com suporte a aiohttp (opcional, melhor performance) pip install brapi[aiohttp] ``` #### Exemplo Rápido (Síncrono) ```python from brapi import Brapi client = Brapi(api_key="seu_token") quote = client.quote.retrieve(tickers="PETR4") print(quote.results[0].regular_market_price) ``` #### Exemplo Rápido (Assíncrono) ```python import asyncio from brapi import AsyncBrapi async def main(): async with AsyncBrapi(api_key="seu_token") as client: quote = await client.quote.retrieve(tickers="PETR4") print(quote.results[0].regular_market_price) asyncio.run(main()) ``` #### Características * ✅ Type hints completos * ✅ Cliente síncrono e assíncrono * ✅ Powered by httpx (HTTP/2) * ✅ Integração Flask, FastAPI, Pandas * ✅ Context managers **Links:** * 📚 [Documentação completa](/docs/sdks/python) * 📦 [PyPI Package](https://pypi.org/project/brapi/) * 🔧 [GitHub Repository](https://github.com/brapi-dev/brapi-python) *** ## Comparação de Features | Feature | TypeScript/JS | Python | | ---------------- | ------------- | ------------ | | Tipos completos | ✅ TypeScript | ✅ Type hints | | Autocomplete IDE | ✅ | ✅ | | Sync/Async | ✅ Async | ✅ Ambos | | Retry automático | ✅ | ✅ | | Erros tipados | ✅ | ✅ | | HTTP/2 | ✅ | ✅ | | Bundle size | 📦 Pequeno | N/A | | Python 3.8+ | N/A | ✅ | | Node.js/Browser | ✅ | N/A | *** ## Casos de Uso ### 1. Aplicações Web **Next.js / React:** ```typescript import Brapi from 'brapi'; // Server Component const client = new Brapi({ apiKey: process.env.BRAPI_API_KEY }); const quote = await client.quote.retrieve('PETR4'); ``` **FastAPI / Flask:** ```python from fastapi import FastAPI from brapi import AsyncBrapi app = FastAPI() client = AsyncBrapi(api_key="seu_token") @app.get("/quote/{ticker}") async def get_quote(ticker: str): quote = await client.quote.retrieve(tickers=ticker) return quote.results[0] ``` ### 2. Análise de Dados **Python com Pandas:** ```python import pandas as pd from brapi import Brapi client = Brapi(api_key="seu_token") # Buscar múltiplas cotações tickers = "PETR4,VALE3,ITUB4" quote = client.quote.retrieve(tickers=tickers) # Converter para DataFrame df = pd.DataFrame([ { 'symbol': r.symbol, 'price': r.regular_market_price, 'change': r.regular_market_change_percent } for r in quote.results ]) print(df) ``` ### 3. Scripts e Automação **Monitoramento de Preços:** ```python from brapi import Brapi import time client = Brapi(api_key="seu_token") while True: quote = client.quote.retrieve(tickers="PETR4") price = quote.results[0].regular_market_price print(f"PETR4: R$ {price:.2f}") time.sleep(60) # Atualiza a cada minuto ``` ### 4. APIs e Microsserviços **Express.js API:** ```typescript import express from 'express'; import Brapi from 'brapi'; const app = express(); const client = new Brapi({ apiKey: process.env.BRAPI_API_KEY }); app.get('/api/quote/:ticker', async (req, res) => { try { const quote = await client.quote.retrieve(req.params.ticker); res.json(quote); } catch (error) { res.status(500).json({ error: error.message }); } }); app.listen(3000); ``` ### 5. Dashboards e Visualizações **TypeScript com Chart.js:** ```typescript const client = new Brapi({ apiKey: process.env.BRAPI_API_KEY }); async function updateChart() { const quote = await client.quote.retrieve('PETR4,VALE3,ITUB4'); const labels = quote.results.map(r => r.symbol); const prices = quote.results.map(r => r.regularMarketPrice); // Atualizar gráfico com os dados chart.data.labels = labels; chart.data.datasets[0].data = prices; chart.update(); } ``` *** ## Recursos Suportados Ambas as SDKs suportam todos os endpoints da API: ### Mercado Brasileiro (B3) * ✅ **Cotações** - Ações, ETFs, FIIs, BDRs * ✅ **Dados fundamentalistas** - Balanços, DRE, indicadores * ✅ **Dividendos** - Histórico de proventos * ✅ **Histórico** - Preços históricos ### Criptomoedas * ✅ **Bitcoin, Ethereum, etc.** * ✅ **Lista de moedas disponíveis** ### Indicadores Econômicos * ✅ **Inflação** - IPCA, IGP-M, etc. * ✅ **Taxa de juros** - SELIC, CDI * ✅ **Câmbio** - USD, EUR, etc. *** ## Tratamento de Erros Ambas as SDKs lançam exceções específicas por tipo de erro: ### TypeScript ```typescript import Brapi from 'brapi'; try { const quote = await client.quote.retrieve('INVALID'); } catch (error) { if (error instanceof Brapi.NotFoundError) { console.log('Ticker não encontrado'); } else if (error instanceof Brapi.RateLimitError) { console.log('Limite de requisições atingido'); } else if (error instanceof Brapi.AuthenticationError) { console.log('Token inválido'); } } ``` ### Python ```python from brapi import Brapi, NotFoundError, RateLimitError try: quote = client.quote.retrieve(tickers="INVALID") except NotFoundError: print("Ticker não encontrado") except RateLimitError: print("Limite de requisições atingido") ``` *** ## Configuração Avançada ### Retry Automático ```typescript // TypeScript const client = new Brapi({ apiKey: process.env.BRAPI_API_KEY, maxRetries: 3, // Tenta até 3 vezes }); ``` ```python # Python client = Brapi( api_key="seu_token", max_retries=3, # Tenta até 3 vezes ) ``` ### Timeouts ```typescript // TypeScript const client = new Brapi({ apiKey: process.env.BRAPI_API_KEY, timeout: 10000, // 10 segundos }); ``` ```python # Python client = Brapi( api_key="seu_token", timeout=10.0, # 10 segundos ) ``` *** ## Gerado com Stainless Nossas SDKs são geradas automaticamente usando [Stainless](https://www.stainless.com/), garantindo: * ✅ Sempre sincronizadas com a API * ✅ Tipos precisos e atualizados * ✅ Documentação inline * ✅ Padrões de indústria * ✅ Testes automáticos *** ## Começar a Usar Escolha a SDK da sua linguagem: ### TypeScript / JavaScript ```bash npm install brapi ``` **[📚 Ver Documentação Completa →](/docs/sdks/typescript)** **Links:** * 📦 [NPM Package](https://www.npmjs.com/package/brapi) * 🔧 [GitHub Repository](https://github.com/brapi-dev/brapi-typescript) *** ### Python ```bash pip install brapi ``` **[📚 Ver Documentação Completa →](/docs/sdks/python)** **Links:** * 📦 [PyPI Package](https://pypi.org/project/brapi/) * 🔧 [GitHub Repository](https://github.com/brapi-dev/brapi-python) *** ## Futuras SDKs Estamos trabalhando em SDKs para: * 🔜 **Go** - Em desenvolvimento * 🔜 **PHP** - Planejado * 🔜 **Java** - Planejado * 🔜 **Ruby** - Planejado Interessado em contribuir ou sugerir uma SDK? [Abra uma issue](https://github.com/brapi-dev) no GitHub! *** ## Suporte e Comunidade * 💬 [GitHub Discussions](https://github.com/brapi-dev) * 🐛 [Reportar Bug](https://github.com/brapi-dev) * 📧 [Email de Suporte](mailto:support@brapi.dev) * 📚 [Documentação da API](/docs) *** ## Open Source Todas as nossas SDKs são **open source** e licenciadas sob MIT. Contribuições são muito bem-vindas! * ⭐ [Star no GitHub](https://github.com/brapi-dev) * 🤝 [Contribuir](https://github.com/brapi-dev) * 📖 [Changelog](https://github.com/brapi-dev)