# Python (REST)

> Non esiste un SDK Python: chiama direttamente l'API REST con requests. Invia in POST un corpo JSON a /sms/sendSms con un token Bearer, oppure genera un client tipizzato dalla specifica OpenAPI 3.1 con openapi-generator.

- URL canonico: https://www.broadnet.me/it/developers/python
- Lingua: it
- Ultimo aggiornamento: 2026-10-21
- Editore: BroadNet (https://www.broadnet.me)

È possibile richiamare l'API REST di BroadNet da Python utilizzando le librerie requests o httpx. Non esiste un pacchetto BroadNet Python: l'unico SDK ufficiale è per TypeScript e Node.js, non per Python. Se si desidera un client Python tipizzato, è possibile generarne uno a partire dalle specifiche OpenAPI con openapi-generator; altrimenti, le semplici chiamate HTTP riportate di seguito sono tutto ciò che serve.

> **Mantenere l'URL di base nella configurazione** Gli esempi chiamano https://api.broadnet.me. Leggere l'URL di base e l'access token (BROADNET_TOKEN) dalle variabili d'ambiente, non dal codice. Le credenziali di test, e l'indirizzo a cui inviare il traffico di prova, arrivano con il tuo accesso di test: richiedilo su /signup e rispondiamo entro un giorno lavorativo.

## Gestione degli errori

Gli errori restituiscono un codice di stato HTTP e un corpo JSON ExceptionResponse (status, error, message, errorCode, requestUri). resp.raise_for_status() li trasforma in eccezioni. Riprova solo in caso di errori di rete e risposte 5xx, con un intervallo di tempo tra un tentativo e l'altro; una volta che una chiamata ha restituito un ID messaggio, l'invio è stato accettato, quindi non inviarlo di nuovo alla cieca.

## Requisiti

Qualsiasi versione Python 3 supportata. L'esempio sincrono utilizza requests e l'esempio asincrono utilizza httpx; installate quello che utilizzate.

## Esempi

### terminal

```bash
pip install requests httpx
```

Librerie HTTP standard. Non è richiesto alcun pacchetto 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 · il corpo della risposta è l'ID del messaggio.

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

Per liste di grandi dimensioni, utilizzare POST /sms/sendbulk con caricamento di un file anziché inviare più messaggi singolarmente.

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

## Correlati

- [Riferimento API](https://www.broadnet.me/it/developers/api-reference)
- [Guida rapida](https://www.broadnet.me/it/developers/quickstart)
- [webhook](https://www.broadnet.me/it/developers/webhooks)
