# 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)


