# Python (REST)

> Não existe SDK de Python: chame a API REST diretamente com requests. Envie via POST um corpo JSON para /sms/sendSms com um token Bearer, ou gere um cliente tipado a partir da especificação OpenAPI 3.1 com openapi-generator.

- URL canônico: https://www.broadnet.me/pt/developers/python
- Idioma: pt
- Última atualização: 2026-10-21
- Editor: BroadNet (https://www.broadnet.me)

Chame a API REST da BroadNet a partir do Python usando as bibliotecas requests ou httpx. Não existe um pacote Python BroadNet: o único SDK oficial é para TypeScript e Node.js, não para Python. Se você deseja um cliente Python tipado, gere um a partir da especificação OpenAPI com openapi-generator; caso contrário, as chamadas HTTP simples abaixo são tudo o que você precisa.

> **Mantenha a URL base na configuração** Os exemplos chamam o https://api.broadnet.me. Leia a URL base e o token de acesso (BROADNET_TOKEN) a partir de variáveis de ambiente, não do código. As credenciais de teste, e para onde enviar o tráfego de teste, vêm com o seu acesso de teste: solicite-o em /signup e respondemos em até um dia útil.

## Tratamento de erros

Os erros devolvem um código de status HTTP e um corpo JSON de ExceptionResponse (status, error, message, errorCode, requestUri). resp.raise_for_status() os transforma em exceções. Tente novamente apenas em caso de erros de rede e respostas 5xx, com um intervalo de espera (backoff); uma vez que uma chamada tenha devolvido um ID de mensagem, o envio foi aceito, portanto, não o reenvie indiscriminadamente.

## Requisitos

Qualquer versão compatível Python 3. O exemplo síncrono usa requests e o exemplo assíncrono usa httpx; instale aquele que você utiliza.

## Exemplos

### terminal

```bash
pip install requests httpx
```

Bibliotecas HTTP simples. Não é necessário o pacote BroadNet.

### send.py

```python
import os, requests

r = requests.post(
    "https://api.broadnet.me/sms/sendSms",
    headers={"Authorization": f"Bearer {os.environ['BROADNET_TOKEN']}"},
    json={
        "senderId": "BroadNet",
        "destinationNumber": "447700900123",
        "message": "Your verification code is 482913",
        "messageType": "TEXT",
    },
)

print(r.status_code, r.text)  # message ID
```

200 OK · o corpo da resposta é o ID da mensagem.

### async.py

```python
import asyncio
import os

import httpx

URL = "https://api.broadnet.me/sms/sendSms"
HEADERS = {"Authorization": f"Bearer {os.environ['BROADNET_TOKEN']}"}

async def send(client: httpx.AsyncClient, number: str, text: str) -> str:
    resp = await client.post(
        URL,
        headers=HEADERS,
        json={
            "senderId": "BroadNet",
            "destinationNumber": number,
            "message": text,
            "messageType": "TEXT",
        },
    )
    resp.raise_for_status()
    return resp.text  # message ID

async def main() -> None:
    recipients = ["447700900123", "447700900124", "447700900125"]
    async with httpx.AsyncClient(timeout=10) as client:
        ids = await asyncio.gather(
            *(send(client, n, "Your code is 482913") for n in recipients)
        )
    print(ids)

if __name__ == "__main__":
    asyncio.run(main())
```

Para listas grandes, use POST /sms/sendbulk com upload de ficheiro em vez de vários envios individuais.

### terminal

```bash
# Optional: generate a typed Python client from the OpenAPI spec
curl -O https://www.broadnet.me/developers/openapi.yaml
npx @openapitools/openapi-generator-cli generate \
  -i openapi.yaml -g python -o broadnet-python
```

## Relacionados

- [Referência da API](https://www.broadnet.me/pt/developers/api-reference)
- [Início rápido](https://www.broadnet.me/pt/developers/quickstart)
- [Webhooks](https://www.broadnet.me/pt/developers/webhooks)
