# Python (REST)

> Python SDK не существует: вызывайте REST API напрямую с помощью requests. Отправьте POST-запросом JSON-тело на /sms/sendSms с токеном Bearer или сгенерируйте типизированный клиент по спецификации OpenAPI 3.1 с помощью openapi-generator.

- Канонический URL: https://www.broadnet.me/ru/developers/python
- Язык: ru
- Последнее обновление: 2026-10-21
- Издатель: BroadNet (https://www.broadnet.me)

Вызывайте REST API BroadNet из Python, используя библиотеки requests или httpx. Пакета BroadNet Python не существует: единственный официальный SDK предназначен для TypeScript и Node.js, а не Python. Если вам нужен типизированный клиент Python, сгенерируйте его из спецификации OpenAPI с помощью openapi-generator; в противном случае вам достаточно простых HTTP запросов, приведенных ниже.

> **Сохраняйте базовый URL в конфигурации** Примеры кода обращаются к https://api.broadnet.me. Считывайте базовый URL и токен доступа (BROADNET_TOKEN) из переменных окружения, а не из кода. Тестовые учётные данные и адрес для отправки тестового трафика вы получите вместе с тестовым доступом: запросите его на /signup, мы ответим в течение одного рабочего дня.

## Обработка ошибок

При возникновении ошибок возвращается код состояния HTTP и JSON тело ExceptionResponse (status, error, message, errorCode, requestUri). Метод resp.raise_for_status() преобразует их в исключения. Повторная попытка выполняется только при сетевых ошибках и ответах с кодом 5xx, с задержкой; как только вызов вернул идентификатор сообщения, отправка была принята, поэтому не следует отправлять запрос повторно вслепую.

## Требования

Любая поддерживаемая версия Python 3. В синхронном примере используется requests, а в асинхронном — httpx; установите ту, которую вы используете.

## Примеры

### terminal

```bash
pip install requests httpx
```

Простые HTTP библиотеки. Пакет 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 · Тело ответа содержит идентификатор сообщения.

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

Для больших списков используйте POST /sms/sendbulk с загрузкой файла вместо множества отдельных рассылок.

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

## См. также

- [Справочник API](https://www.broadnet.me/ru/developers/api-reference)
- [Быстрый старт](https://www.broadnet.me/ru/developers/quickstart)
- [Вебхуки](https://www.broadnet.me/ru/developers/webhooks)
