> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bunny.build/llms.txt
> Use this file to discover all available pages before exploring further.

# SDKs

> SDKs oficiais Bunny para Python, TypeScript, Java e Go

<Tip>
  **Acelere sua integração com nossos SDKs**: Nossas bibliotecas oficiais facilitam as chamadas à API Bunny, com retries, tratamento de limite de taxa e erros tipados.
</Tip>

## <Icon icon="code" type="solid" /> O que são os SDKs Bunny?

Os SDKs Bunny são bibliotecas cliente que encapsulam a API. Eles oferecem:

* **Interface simples**: `client.temporary_email.check()`, `client.ip_classify.check()`, `client.translate()` e mais
* **Retries e backoff**: Retentativas automáticas em erros de rede e rate limit
* **Erros tipados**: Exceções para autenticação, validação, rate limit, etc.
* **Validação de entrada**: Verificações no cliente antes de chamar a API

<Card title="Benefícios de usar nossos SDKs" icon="star" horizontal>
  - **Menos boilerplate**: Não é preciso gerenciar headers, JSON ou lógica de retry manualmente
  - **Tipagem**: Tipos completos em TypeScript, Python, Java e Go
  - **Tratamento de erros**: Exceções tipadas (ex.: `RateLimitError`, `ValidationError`)
  - **Opções consistentes**: Mesma URL base, timeout e retries em todas as linguagens
</Card>

## <Icon icon="boxes-stacked" type="solid" /> SDKs disponíveis

<Tabs>
  <Tab title="Backend">
    <CardGroup cols={2}>
      <Card title="Python" icon="python" color="#366B98" href="https://github.com/bunny-build/sdk-python">
        SDK oficial para Python 3.8+, com httpx e pydantic.
      </Card>

      <Card title="TypeScript / Node.js" icon="node-js" color="#68A063" href="https://github.com/bunny-build/sdk-typescript">
        SDK oficial para Node.js e TypeScript, ESM e CommonJS.
      </Card>

      <Card title="Java" icon="java" color="#E76F00" href="https://github.com/bunny-build/sdk-java">
        SDK oficial para Java 11+, Maven/Gradle, padrão builder.
      </Card>

      <Card title="Go" icon="golang" color="#00ADD8" href="https://github.com/bunny-build/sdk-go">
        SDK oficial para Go, stdlib net/http, suporte a context.
      </Card>

      <Card title="PHP" icon="php" color="#7A86B8" href="https://github.com/bunny-build/sdk-php">
        SDK oficial para PHP 8.1+, Composer, cliente HTTP PSR-18.
      </Card>
    </CardGroup>
  </Tab>
</Tabs>

## <Icon icon="terminal" type="solid" /> Exemplos de uso

<CodeGroup>
  ```python Python theme={null}
  from bunnybuild import BunnyClient

  client = BunnyClient("bun_sua_chave_api")

  # Verificar e-mail temporário
  result = client.temporary_email.check("user@tempmail.com")
  if result.is_disposable:
      print("Domínio descartável:", result.domain)

  # Classificar IP
  result = client.ip_classify.check("8.8.8.8")
  print("Classificação:", result.classification)

  # Traduzir
  result = client.translate(text="Hello world", from_lang="en", to="pt")
  print("Traduzido:", result.translated_text)
  ```

  ```javascript JavaScript / TypeScript theme={null}
  import { BunnyClient } from 'bunnybuild';

  const client = new BunnyClient('bun_sua_chave_api');

  const emailResult = await client.temporaryEmail.check('user@tempmail.com');
  if (emailResult.isDisposable) console.log('Descartável:', emailResult.domain);

  const ipResult = await client.ipClassify.check('8.8.8.8');
  console.log('Classificação:', ipResult.classification);

  const translation = await client.translate({ text: 'Hello world', from: 'en', to: 'pt' });
  console.log('Traduzido:', translation.translatedText);
  ```

  ```java Java theme={null}
  BunnyClient client = BunnyClient.builder()
      .apiKey("bun_sua_chave_api")
      .build();

  TemporaryEmailResult emailResult = client.getTemporaryEmail().check("user@tempmail.com");
  if (emailResult.isDisposable()) { /* ... */ }

  IpClassifyResult ipResult = client.getIpClassify().check("8.8.8.8");
  ipResult.getClassification();
  ```

  ```go Go theme={null}
  client, _ := bunnybuild.NewClient("bun_sua_chave_api")
  ctx := context.Background()

  emailResult, _ := client.TemporaryEmail().Check(ctx, "user@tempmail.com")
  if emailResult.IsDisposable { /* ... */ }

  ipResult, _ := client.IpClassify().Check(ctx, "8.8.8.8")
  ipResult.Classification
  ```
</CodeGroup>

## <Icon icon="question-circle" type="solid" /> Perguntas frequentes

<Accordion title="Onde está o código-fonte dos SDKs?">
  Cada SDK fica em seu próprio repositório GitHub na organização `bunny-build`: `sdk-python`, `sdk-typescript`, `sdk-java`, `sdk-go`, `sdk-php`. Você pode instalar pelo gerenciador de pacotes ou compilar a partir do código.
</Accordion>

<Accordion title="Os SDKs suportam retries e rate limit?">
  Sim. Todos os SDKs fazem retry em erros de rede e em respostas 429/5xx com backoff exponencial e interpretam os headers de rate limit. Você também pode definir um callback para atualizações de rate limit.
</Accordion>

<Accordion title="E se minha linguagem não for suportada?">
  Você pode chamar a API diretamente via HTTP. Veja a [Referência da API](/pt-BR/api-reference/introduction) para todos os 13 endpoints, headers e formatos de requisição/resposta.
</Accordion>
