# SDK oficial Biziva — Python v0.1.0

Python3.9+; biblioteca padrão, sem dependências de execução. Instalação direta (não está no PyPI):

```sh
pip install https://api.biziva.com.br/sdk/v0.1.0/biziva_sdk-0.1.0-py3-none-any.whl
```

```python
import os
from biziva import Biziva,SANDBOX_URL
client=Biziva(os.environ['BIZIVA_API_KEY'],base_url=SANDBOX_URL)
result=client.text({'model':'biziva-validated','messages':[{'role':'user','content':'Olá'}]},
 idempotency_key='pedido-interno-0001')
print(result['choices'][0]['message']['content'])
```

Crie uma chave de teste em https://api.biziva.com.br/developers. Em produção, troque para uma chave real e omita base_url. Chaves entre ambientes são recusadas. Segredo fica em variável de ambiente no backend, nunca navegador/repositório.

Métodos: models(), balance() (usage:read), text(), images(), edit_image(JSON), create_video(), video(), video_content(), speech(), transcribe(audio_bytes,filename), embeddings(), job() e request(method,'/v1/...'). Respostas de áudio/download são bytes. Exemplo: open('audio.wav','wb').write(client.speech({...},idempotency_key='voz-pedido-0001')). Este cliente síncrono não oferece streaming/SSE ou WebSocket; use um cliente de protocolo apropriado para Realtime.

Cada mutação exige idempotency_key estável, armazenada por operação. Não há retries automáticos. BizivaError expõe status/code/request_id/idempotency_key/uncertain, sem imprimir a chave. Depois de erro incerto, consulte a requisição original antes de iniciar outra. Uma chave nova pode cobrar de novo. requests com corpo bytes aceitam content_type explícito para multipart; transcribe() monta multipart com biblioteca padrão.

Homologação usa fixtures e saldo virtual: não prova qualidade de modelos, banco, WhatsApp ou HostGator reais. Vídeo em homologação é metadadoJSON, não MP4. Não envie dados de pacientes/clientes. Pagamentos /v1/test/payments são virtuais/não pagáveis. Exemplos de produção consomem créditos reais conforme catálogo vigente.
