# Como enviar SMS via código: Python, PHP, Node.js, Java, Go e C# com apenas uma chamada REST

> Enviar um SMS via código consiste num único POST HTTPS autenticado: um token Bearer, um corpo JSON com ID do remetente, número de destino, mensagem e tipo de mensagem, e o retorno de um ID de mensagem. Aqui está a mesma requisição em Python, PHP, Node.js, Java, Go e C#, além de tratamento de erros e orientações para produção.

- URL canônico: https://www.broadnet.me/pt/blog/send-sms-api-python-php-nodejs-java-csharp
- Idioma: pt
- Última atualização: 2026-10-20
- Editor: BroadNet (https://www.broadnet.me)

- Publicado em: 2026-09-28
- Autor: BroadNet Editorial Team

Para enviar um SMS via código, faça um POST HTTPS para https://api.broadnet.me/sms/sendSms com um cabeçalho Authorization: Bearer e um corpo JSON contendo senderId, destinationNumber, a mensagem e messageType. Uma chamada bem-sucedida devolve HTTP 200 com o ID da mensagem no corpo da resposta; o resultado da entrega chega posteriormente como um relatório de entrega (DLR) no seu webhook. Cada linguagem abaixo utiliza apenas a sua biblioteca HTTP padrão; a única SDK oficial é para TypeScript e Node.js.

## Principais conclusões

- Endpoint: POST https://api.broadnet.me/sms/sendSms, corpo JSON, token Bearer.
- Campos obrigatórios: senderId, destinationNumber (formato internacional sem o sinal de mais), mensagem, messageType (TEXT).
- Resposta: 200 com o ID da mensagem; guarde-o para conciliar com os relatórios de entrega.
- Erros: um token ausente ou inválido recebe um 401 do gateway; erros API devolvem status, error, message, errorCode e requestUri.
- Um SDK oficial: @broadnet/cpaas-sdk para TypeScript/Node.js; gere clientes para outras linguagens a partir da especificação OpenAPI.

## O que você precisa antes de enviar?

- Um token de acesso da sua conta BroadNet, mantido numa variável de ambiente (BROADNET_TOKEN abaixo), nunca no código-fonte ou numa aplicação móvel.
- Um ID do remetente permitido para o país de destino; alguns países exigem registo prévio.
- Um número de destino no formato internacional, por exemplo, 447700900123 (um número fictício do Reino Unido).

O acesso de teste é fornecido pelos nossos engenheiros: solicite-o e você receberá as credenciais de teste em até um dia útil, e a primeira mensagem de teste geralmente é enviada cerca de cinco minutos depois. O [quickstart](https://www.broadnet.me/developers/quickstart) orienta você sobre o processo.

## Como é a requisição?

Aqui está a requisição com cURL. Todos os exemplos abaixo enviam o mesmo corpo JSON.

```
curl -X POST https://api.broadnet.me/sms/sendSms \
  -H "Authorization: Bearer $BROADNET_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "senderId": "BroadNet",
    "destinationNumber": "447700900123",
    "message": "Your verification code is 482913",
    "messageType": "TEXT"
  }'

# 200 OK → response body is the message ID, e.g. 2603121407537573731
```

## Como enviar um SMS com Python?

Com a biblioteca requests, o argumento json= define o cabeçalho Content-Type para você.

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

## Como enviar um SMS com PHP?

A extensão curl do PHP é suficiente; não é necessário nenhum pacote.

```
<?php
$ch = curl_init("https://api.broadnet.me/sms/sendSms");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        "Authorization: Bearer " . getenv("BROADNET_TOKEN"),
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        "senderId"          => "BroadNet",
        "destinationNumber" => "447700900123",
        "message"           => "Your verification code is 482913",
        "messageType"       => "TEXT",
    ]),
]);

$messageId = curl_exec($ch);
echo $messageId;
```

## Como enviar um SMS com Node.js?

O Node.js 18 e versões posteriores possuem o fetch integrado:

```
// Node.js 18+ (fetch)
const res = await fetch("https://api.broadnet.me/sms/sendSms", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.BROADNET_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    senderId: "BroadNet",
    destinationNumber: "447700900123",
    message: "Your verification code is 482913",
    messageType: "TEXT",
  }),
});

console.log(await res.text()); // message ID
```

Ou use o SDK oficial TypeScript/Node.js, @broadnet/cpaas-sdk:

```
// npm install @broadnet/cpaas-sdk axios
import { Configuration, SMSSMSApi } from "@broadnet/cpaas-sdk";

const sms = new SMSSMSApi(
  new Configuration({
    basePath: "https://api.broadnet.me",
    accessToken: process.env.BROADNET_TOKEN!,
  }),
);

const res = await sms.smsSendsmsPost({
  sMSSmsRequest: {
    senderId: "BroadNet",
    destinationNumber: "447700900123",
    message: "Your verification code is 482913",
    messageType: "TEXT",
  },
});

console.log(res.data); // message ID
```

## Como enviar um SMS com Java?

O Java 11 e versões posteriores incluem java.net.http.HttpClient:

```
// Java 11+ — java.net.http is built in, nothing to install
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class SendSms {
    public static void main(String[] args) throws Exception {
        String json = "{"
            + "\"senderId\": \"BroadNet\", "
            + "\"destinationNumber\": \"447700900123\", "
            + "\"message\": \"Your verification code is 482913\", "
            + "\"messageType\": \"TEXT\""
            + "}";

        HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.broadnet.me/sms/sendSms"))
            .header("Authorization", "Bearer " + System.getenv("BROADNET_TOKEN"))
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpResponse<String> res = HttpClient.newHttpClient()
            .send(req, HttpResponse.BodyHandlers.ofString());

        System.out.println(res.statusCode() + " " + res.body()); // 200 + message ID
    }
}
```

## Como enviar um SMS com Go?

```
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	body := []byte(`{
		"senderId": "BroadNet",
		"destinationNumber": "447700900123",
		"message": "Your verification code is 482913",
		"messageType": "TEXT"
	}`)

	req, err := http.NewRequest(http.MethodPost, "https://api.broadnet.me/sms/sendSms", bytes.NewReader(body))
	if err != nil {
		panic(err)
	}
	req.Header.Set("Authorization", "Bearer "+os.Getenv("BROADNET_TOKEN"))
	req.Header.Set("Content-Type", "application/json")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	id, _ := io.ReadAll(res.Body)
	fmt.Println(res.StatusCode, string(id)) // 200 + message ID
}
```

## Como enviar um SMS com C# e .NET?

O .NET 6 e versões posteriores não precisam de pacote NuGet: HttpClient e System.Net.Http.Json já são integrados.

```
// .NET 6+ console app (Program.cs) — HttpClient is built in, no NuGet package
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Http.Json;

using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
    "Bearer", Environment.GetEnvironmentVariable("BROADNET_TOKEN"));

// PostAsJsonAsync sends Content-Type: application/json
var res = await http.PostAsJsonAsync("https://api.broadnet.me/sms/sendSms", new
{
    senderId = "BroadNet",
    destinationNumber = "447700900123",
    message = "Your verification code is 482913",
    messageType = "TEXT",
});

var id = await res.Content.ReadAsStringAsync();
Console.WriteLine($"{(int)res.StatusCode} {id}"); // 200 + message ID
```

## O que é devolvido e como tratar erros?

| Resposta | Significado | O que fazer |
|---|---|---|
| 200 + ID de mensagem | Aceito para entrega | Armazene o ID com o seu próprio registo; aguarde o DLR |
| 400 | Erro de validação ou campo ausente | Corrija a requisição; não tente novamente sem alterações |
| 401 | Token Bearer ausente ou inválido | Verifique o token e o cabeçalho Authorization |
| 500 | Erro inesperado no servidor | Tente novamente com backoff; verifique o status da mensagem antes de reenviar |

Um código 200 significa que a plataforma aceitou a mensagem, não que o dispositivo a recebeu. A entrega é informada pelo relatório de entrega; veja [o que é um DLR](https://www.broadnet.me/answers/what-is-dlr) e [relatórios de entrega SMS e códigos de erro](https://www.broadnet.me/blog/sms-delivery-receipts-dlr-error-codes). O API não possui cabeçalho de idempotência, portanto, guarde o ID da mensagem devolvida e verifique o status antes de reenviar para evitar duplicatas. A página de [códigos de erro](https://www.broadnet.me/developers/error-codes) lista os demais.

## Como deixá-lo pronto para produção?

- Mantenha o token no lado do servidor. Nunca chame o API SMS de um navegador ou aplicação móvel, onde o token pode ser extraído; em vez disso, chame o seu próprio backend.
- Envie mensagens longas com consciência: o GSM-7 comporta 160 caracteres por SMS, Unicode (UCS-2) 70, e textos mais longos são divididos em segmentos faturados. Veja [o limite de caracteres SMS](https://www.broadnet.me/answers/sms-character-limit-explained).
- Coloque envios em massa em fila e respeite o throughput da sua conta; leia sobre [limites de taxa](https://www.broadnet.me/developers/rate-limits).
- Receba relatórios de entrega via [webhook](https://www.broadnet.me/developers/webhooks) e armazene o status final.
- Valide os números no formato internacional primeiro; consulte a [validação de número de telefone E.164](https://www.broadnet.me/blog/e164-phone-number-validation-msisdn).

Para volumes muito altos ou uma infraestrutura de telecomunicações já existente, SMPP pode ser mais adequado que REST; veja [SMPP vs REST](https://www.broadnet.me/compare/sms-api-vs-smpp). A plataforma da BroadNet processa 30.000 SMS por segundo por nó.

## Perguntas frequentes

### Qual é a maneira mais simples de enviar um SMS via código?

Um POST HTTPS para um SMS API com um token de acesso e um corpo JSON. Com BroadNet, trata-se de um POST https://api.broadnet.me/sms/sendSms com senderId, destinationNumber, a mensagem e messageType.

### Existe um BroadNet SDK para Python, PHP ou Java?

Não. Existe um SDK @broadnet/cpaas-sdk oficial para TypeScript e Node.js. Outras linguagens chamam a REST API diretamente, como mostrado aqui, ou geram um cliente a partir da especificação OpenAPI.

### Em qual formato o número de telefone deve estar?

Formato internacional com o código do país, sem o sinal de mais ou espaços, por exemplo: 447700900123.

### Uma resposta 200 significa que o SMS foi entregue?

Não. Isso significa que a mensagem foi aceita. O relatório de entrega (DLR) informa se ela chegou ao dispositivo.

### Posso enviar SMS diretamente de um app Android ou iOS?

Não com segurança. Coloque a chamada API no seu servidor para que o token de acesso nunca seja enviado dentro do app, e faça com que o app chame o seu servidor.

### Onde encontro a referência completa da API?

Na [referência API](https://www.broadnet.me/developers/api-reference) e na [especificação OpenAPI](https://www.broadnet.me/developers/openapi).

Os exemplos de código são os que estão nas nossas páginas para desenvolvedores, verificados de acordo com a especificação OpenAPI publicada. Revisado em 28 de setembro de 2026. Consulte nossos [padrões editoriais](https://www.broadnet.me/about/editorial-standards).
