BroadNet
O JornalEngenharia
Engenharia

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.

9 min de leitura
Engenharia · Edição 28
9 min de leitura

ara 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 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.

snippet
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ê.

snippet
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.

snippet
<?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:

snippet
// 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:

snippet
// 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:

snippet
// 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?

snippet
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.

snippet
// .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?

RespostaSignificadoO que fazer
200 + ID de mensagemAceito para entregaArmazene o ID com o seu próprio registo; aguarde o DLR
400Erro de validação ou campo ausenteCorrija a requisição; não tente novamente sem alterações
401Token Bearer ausente ou inválidoVerifique o token e o cabeçalho Authorization
500Erro inesperado no servidorTente 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 e relatórios de entrega SMS e códigos de erro. 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 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.
  • Coloque envios em massa em fila e respeite o throughput da sua conta; leia sobre limites de taxa.
  • Receba relatórios de entrega via webhook e armazene o status final.
  • Valide os números no formato internacional primeiro; consulte a validação de número de telefone E.164.

Para volumes muito altos ou uma infraestrutura de telecomunicações já existente, SMPP pode ser mais adequado que REST; veja SMPP vs REST. 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 e na especificação 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.

Isso foi útil?

Como escrevemos e revemos os conteúdos

Escrito por

Equipa Editorial da BroadNet

A Equipa Editorial publica o blog da BroadNet. Os artigos são escritos com as equipas da BroadNet de assuntos regulatórios, produto, engenharia, pesquisa de mercado e soluções para operadoras, e revisados segundo os nossos padrões editoriais.

O jornal, por e-mail

Um ensaio por mês. Nada mais.

Assine e enviaremos o próximo conteúdo — sobre engenharia, regulamentação ou indústria — no mesmo dia em que for publicado. Sem campanhas de e-mail marketing, sem propaganda de produtos, sem partilha com terceiros. Cancele a assinatura com um clique.

Enviamos um e-mail por mês. Cancele quando quiser. Veja nossa política de privacidade.

O que você vai receber
  • Texto longo, não isca para cliques
    De seis a onze minutos de escrita concentrada sobre um único tópico.
  • Escrito por operadores
    Engenheiros, responsáveis pela área regulatória e redação de produtos, tudo feito internamente.
  • Consciente da região
    Uma visão sobre reguladores, operadores e mix de canais com base na região MENA.
  • Uma vez por mês
    Sem campanhas de gotejamento. Um ensaio quando houver apenas um para partilhar.
Pare de ler. Comece a enviar.

A maior parte do que escrevemos aprendemos na prática.

Se você se identificou com este texto, provavelmente deveríamos conversar. Traga o seu caso de uso, os volumes, os mercados — e nós apresentaremos encaminhamento, preços e um cliente de referência para você contactar.

$ curl -X POST https://api.broadnet.me/sms/sendSms