Plataforma moderna e robusta para integração de SMS em qualquer aplicativo
MozeSMS API v2.0 é uma plataforma moderna e robusta, permitindo a integração eficiente de qualquer aplicativo com o nosso sistema de envio de mensagens SMS.
A principal vantagem da nova versão é a simplicidade de implementação, maior segurança e novos recursos como Bulk SMS e OTP. A mensagem pode ter remetente (SenderID) personalizado com nome da empresa ou qualquer número de telefone autorizado.
Maior segurança com tokens de acesso
Até 1000 mensagens por requisição
Geração e verificação automática
Controle de remetentes autorizados
https://api.mozesms.com
Acesse my.mozesms.com e crie uma conta gratuita ou faça login.
Registre um nome ou número de remetente (SenderID) no painel para personalizar suas mensagens.
No painel de cliente, copie seu Bearer Token para autenticação na API v2.0.
A API v2.0 utiliza autenticação Bearer Token para maior segurança:
| Método | Bearer Token |
|---|---|
| Header | Authorization: Bearer SEU_TOKEN_AQUI |
| Formato | Todas as requisições e respostas em JSON |
| Segurança | Tokens únicos por cliente, gerados no painel |
| Parâmetro | Descrição |
|---|---|
phone |
Número do destinatário com código do país (ex: +258845888195) |
message |
Conteúdo da mensagem (máximo 1600 caracteres) |
sender_id |
SenderID/remetente (nome da empresa ou número autorizado) |
<?php
$curl = curl_init();
$data = json_encode([
'phone' => '+258845888195',
'message' => 'Olá! Esta é uma mensagem de teste da API v2.0',
'sender_id' => 'MozeSMS'
]);
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.mozesms.com/v2/sms/send',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer SEU_TOKEN_AQUI'
],
CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
echo "HTTP: $httpCode\n";
echo "Response: $response\n";
?>
curl -X POST https://api.mozesms.com/v2/sms/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-d '{
"phone": "+258845888195",
"message": "Olá! Esta é uma mensagem de teste",
"sender_id": "MozeSMS"
}'
import requests
import json
url = "https://api.mozesms.com/v2/sms/send"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer SEU_TOKEN_AQUI"
}
data = {
"phone": "+258845888195",
"message": "Olá! Esta é uma mensagem de teste",
"sender_id": "MozeSMS"
}
response = requests.post(url, headers=headers, json=data)
print(f"Status: {response.status_code}")
print(f"Response: {response.json()}")
const axios = require('axios');
const url = 'https://api.mozesms.com/v2/sms/send';
const headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer SEU_TOKEN_AQUI'
};
const data = {
phone: '+258845888195',
message: 'Olá! Esta é uma mensagem de teste',
sender_id: 'MozeSMS'
};
axios.post(url, data, { headers })
.then(response => {
console.log('Status:', response.status);
console.log('Response:', response.data);
})
.catch(error => {
console.error('Error:', error.response?.data || error.message);
});
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer SEU_TOKEN_AQUI");
var data = new
{
phone = "+258845888195",
message = "Olá! Esta é uma mensagem de teste",
sender_id = "MozeSMS"
};
var json = JsonConvert.SerializeObject(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(
"https://api.mozesms.com/v2/sms/send",
content
);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Status: {response.StatusCode}");
Console.WriteLine($"Response: {result}");
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.mozesms.com/v2/sms/send')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer SEU_TOKEN_AQUI'
request.body = {
phone: '+258845888195',
message: 'Olá! Esta é uma mensagem de teste',
sender_id: 'MozeSMS'
}.to_json
response = http.request(request)
puts "Status: #{response.code}"
puts "Response: #{response.body}"
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
url := "https://api.mozesms.com/v2/sms/send"
data := map[string]string{
"phone": "+258845888195",
"message": "Olá! Esta é uma mensagem de teste",
"sender_id": "MozeSMS",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer SEU_TOKEN_AQUI")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
import java.net.http.*;
import java.net.URI;
import com.google.gson.Gson;
import java.util.HashMap;
public class MozeSMS {
public static void main(String[] args) throws Exception {
String url = "https://api.mozesms.com/v2/sms/send";
HashMap<String, String> data = new HashMap<>();
data.put("phone", "+258845888195");
data.put("message", "Olá! Esta é uma mensagem de teste");
data.put("sender_id", "MozeSMS");
String json = new Gson().toJson(data);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer SEU_TOKEN_AQUI")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println("Status: " + response.statusCode());
System.out.println("Response: " + response.body());
}
}
{
"success": true,
"data": {
"sms_id": "SMS_1755034567_1234",
"phone": "+258845888195",
"message": "Olá! Esta é uma mensagem de teste.",
"sender_id": "MozeSMS",
"segments": 1,
"status": "sent",
"credits_used": 1,
"credits_remaining": 7890,
"timestamp": "2025-08-12T23:45:00+02:00"
}
}
Envie até 1000 mensagens em uma única requisição para máxima eficiência.
| Parâmetro | Descrição |
|---|---|
sender_id |
SenderID padrão para todas as mensagens |
messages |
Array de mensagens (máx: 1000 mensagens) |
messages[].phone |
Número do destinatário |
messages[].message |
Conteúdo da mensagem |
messages[].sender_id |
SenderID específico (opcional) |
<?php
$data = json_encode([
'sender_id' => 'MozeSMS',
'messages' => [
[
'phone' => '+258845888195',
'message' => 'Mensagem para cliente 1'
],
[
'phone' => '+258847123456',
'message' => 'Mensagem para cliente 2'
],
[
'phone' => '+258848555666',
'message' => 'Mensagem especial para cliente 3',
'sender_id' => 'PROMO'
]
]
]);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.mozesms.com/v2/sms/bulk',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer SEU_TOKEN_AQUI'
],
CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X POST https://api.mozesms.com/v2/sms/bulk \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-d '{
"sender_id": "MozeSMS",
"messages": [
{
"phone": "+258845888195",
"message": "Mensagem para cliente 1"
},
{
"phone": "+258847123456",
"message": "Mensagem para cliente 2"
}
]
}'
import requests
url = "https://api.mozesms.com/v2/sms/bulk"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer SEU_TOKEN_AQUI"
}
data = {
"sender_id": "MozeSMS",
"messages": [
{
"phone": "+258845888195",
"message": "Mensagem para cliente 1"
},
{
"phone": "+258847123456",
"message": "Mensagem para cliente 2"
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const axios = require('axios');
const url = 'https://api.mozesms.com/v2/sms/bulk';
const data = {
sender_id: 'MozeSMS',
messages: [
{
phone: '+258845888195',
message: 'Mensagem para cliente 1'
},
{
phone: '+258847123456',
message: 'Mensagem para cliente 2'
}
]
};
axios.post(url, data, {
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer SEU_TOKEN_AQUI'
}
})
.then(res => console.log(res.data))
.catch(err => console.error(err.response?.data));
using System.Net.Http;
using System.Text;
using Newtonsoft.Json;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer SEU_TOKEN_AQUI");
var data = new
{
sender_id = "MozeSMS",
messages = new[]
{
new { phone = "+258845888195", message = "Mensagem para cliente 1" },
new { phone = "+258847123456", message = "Mensagem para cliente 2" }
}
};
var json = JsonConvert.SerializeObject(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(
"https://api.mozesms.com/v2/sms/bulk",
content
);
Console.WriteLine(await response.Content.ReadAsStringAsync());
require 'net/http'
require 'json'
uri = URI('https://api.mozesms.com/v2/sms/bulk')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer SEU_TOKEN_AQUI'
request.body = {
sender_id: 'MozeSMS',
messages: [
{ phone: '+258845888195', message: 'Mensagem para cliente 1' },
{ phone: '+258847123456', message: 'Mensagem para cliente 2' }
]
}.to_json
response = http.request(request)
puts response.body
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.mozesms.com/v2/sms/bulk"
data := map[string]interface{}{
"sender_id": "MozeSMS",
"messages": []map[string]string{
{"phone": "+258845888195", "message": "Mensagem para cliente 1"},
{"phone": "+258847123456", "message": "Mensagem para cliente 2"},
},
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer SEU_TOKEN_AQUI")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
{
"success": true,
"data": {
"bulk_id": "BULK_1755034567_89012",
"total_messages": 2,
"successful_sends": 2,
"failed_sends": 0,
"total_segments": 2,
"credits_used": 2,
"credits_remaining": 7888,
"results": [...]
}
}
Gere e envie códigos OTP (One-Time Password) para autenticação de dois fatores.
| Parâmetro | Descrição |
|---|---|
phone |
Número do destinatário |
sender_id |
SenderID (opcional, padrão: MozeSMS) |
code_length |
Tamanho do código (4-8 dígitos, padrão: 6) |
expires_in |
Tempo de expiração em segundos (60-3600, padrão: 300) |
template |
Template da mensagem (use {code} para inserir o código) |
app_name |
Nome da aplicação (opcional) |
<?php
$data = json_encode([
'phone' => '+258845888195',
'sender_id' => 'MOZOTP',
'code_length' => 6,
'expires_in' => 300,
'template' => 'Seu código de verificação é: {code}',
'app_name' => 'MeuApp'
]);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.mozesms.com/v2/otp/send',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer SEU_TOKEN_AQUI'
],
CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X POST https://api.mozesms.com/v2/otp/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-d '{
"phone": "+258845888195",
"code_length": 6,
"expires_in": 300,
"template": "Seu código de verificação é: {code}"
}'
import requests
url = "https://api.mozesms.com/v2/otp/send"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer SEU_TOKEN_AQUI"
}
data = {
"phone": "+258845888195",
"code_length": 6,
"expires_in": 300,
"template": "Seu código de verificação é: {code}"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const axios = require('axios');
axios.post('https://api.mozesms.com/v2/otp/send', {
phone: '+258845888195',
code_length: 6,
expires_in: 300,
template: 'Seu código de verificação é: {code}'
}, {
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer SEU_TOKEN_AQUI'
}
})
.then(res => console.log(res.data))
.catch(err => console.error(err.response?.data));
using System.Net.Http;
using System.Text;
using Newtonsoft.Json;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer SEU_TOKEN_AQUI");
var data = new
{
phone = "+258845888195",
code_length = 6,
expires_in = 300,
template = "Seu código de verificação é: {code}"
};
var json = JsonConvert.SerializeObject(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(
"https://api.mozesms.com/v2/otp/send",
content
);
Console.WriteLine(await response.Content.ReadAsStringAsync());
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.mozesms.com/v2/otp/send"
data := map[string]interface{}{
"phone": "+258845888195",
"code_length": 6,
"expires_in": 300,
"template": "Seu código de verificação é: {code}",
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer SEU_TOKEN_AQUI")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
{
"success": true,
"data": {
"otp_id": "OTPID_1755034567_12345",
"sms_id": "OTP_1755034567_6789",
"phone": "+258845888195",
"code_length": 6,
"expires_in": 300,
"expires_at": "2025-08-12T23:50:00+02:00",
"status": "sent",
"credits_used": 1,
"credits_remaining": 7887
}
}
| Parâmetro | Descrição |
|---|---|
phone |
Número que recebeu o OTP |
code |
Código OTP a ser verificado |
otp_id |
ID do OTP retornado no endpoint /otp/send |
<?php
$data = json_encode([
'phone' => '+258845888195',
'code' => '123456',
'otp_id' => 'OTPID_1755034567_12345'
]);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.mozesms.com/v2/otp/verify',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer SEU_TOKEN_AQUI'
],
CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
curl -X POST https://api.mozesms.com/v2/otp/verify \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-d '{
"phone": "+258845888195",
"code": "123456",
"otp_id": "OTPID_1755034567_12345"
}'
import requests
url = "https://api.mozesms.com/v2/otp/verify"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer SEU_TOKEN_AQUI"
}
data = {
"phone": "+258845888195",
"code": "123456",
"otp_id": "OTPID_1755034567_12345"
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
if result.get('success'):
print("✓ Código verificado com sucesso!")
else:
print("✗ Código inválido ou expirado")
const axios = require('axios');
axios.post('https://api.mozesms.com/v2/otp/verify', {
phone: '+258845888195',
code: '123456',
otp_id: 'OTPID_1755034567_12345'
}, {
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer SEU_TOKEN_AQUI'
}
})
.then(res => {
if (res.data.success) {
console.log('✓ Código verificado com sucesso!');
}
})
.catch(err => console.error('✗ Código inválido ou expirado'));
using System.Net.Http;
using System.Text;
using Newtonsoft.Json;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer SEU_TOKEN_AQUI");
var data = new
{
phone = "+258845888195",
code = "123456",
otp_id = "OTPID_1755034567_12345"
};
var json = JsonConvert.SerializeObject(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(
"https://api.mozesms.com/v2/otp/verify",
content
);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
require 'net/http'
require 'json'
uri = URI('https://api.mozesms.com/v2/otp/verify')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer SEU_TOKEN_AQUI'
request.body = {
phone: '+258845888195',
code: '123456',
otp_id: 'OTPID_1755034567_12345'
}.to_json
response = http.request(request)
result = JSON.parse(response.body)
if result['success']
puts '✓ Código verificado com sucesso!'
else
puts '✗ Código inválido ou expirado'
end
A API v2.0 inclui validação rigorosa de SenderIDs para garantir que apenas remetentes autorizados sejam utilizados:
| Tipo de SenderID | Validação |
|---|---|
| Alfanumérico | Deve estar registrado com status ativo |
| Numérico | Permitido automaticamente (máximo 15 dígitos) |
| Comprimento | Máximo 11 caracteres para alfanumérico |
A API v2.0 utiliza códigos de status HTTP padrão e retorna respostas em formato JSON:
| Status HTTP | Código | Descrição |
|---|---|---|
| 200 | SUCCESS |
Requisição processada com sucesso |
| 400 | VALIDATION_ERROR |
Parâmetros obrigatórios em falta ou inválidos |
| 401 | UNAUTHORIZED |
Token de autenticação inválido ou em falta |
| 402 | INSUFFICIENT_CREDITS |
Saldo insuficiente para enviar SMS |
| 403 | SENDER_ID_NOT_ALLOWED |
SenderID não autorizado ou inativo |
| 404 | NOT_FOUND |
Endpoint não encontrado |
| 429 | RATE_LIMIT_EXCEEDED |
Limite de rate (OTP) excedido |
| 500 | INTERNAL_ERROR |
Erro interno do servidor |
{
"success": false,
"error": "SENDER_ID_NOT_ALLOWED",
"message": "SenderID alfanumérico não autorizado. Registe primeiro o SenderID no painel de cliente.",
"timestamp": "2025-08-12T23:45:00+02:00"
}
| Serviço | Limite |
|---|---|
| SMS Individual | Sem limite específico |
| Bulk SMS | Máximo 1000 mensagens por requisição |
| OTP Rate Limit | 1 OTP por minuto por número |
| Tamanho da Mensagem | Máximo 1600 caracteres |
| Segmentação | Automática (160 chars por segmento) |
| Custo | 1 crédito por segmento enviado |
Para suporte técnico ou dúvidas sobre a integração: