FireMessage API - Documentation
API para envio de SMS em massa.
Base URL
https://firemessageapi.juninhopo.com
Autenticacao
Todas as requisicoes a API requerem uma API key que deve ser enviada no header x-api-key.
x-api-key: fm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Para obter sua API key, acesse o painel em https://firemessage.juninhopo.com apos fazer login.
Endpoints
POST /send-sms
Envia um SMS para um numero de telefone.
Request:
curl -X POST https://firemessageapi.juninhopo.com/send-sms \
-H "x-api-key: fm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"phone": "+5511999999999", "message": "Sua mensagem aqui"}'
Request Body:
{
"phone": "string", // Numero de telefone (formato E.164: +5511999999999)
"message": "string" // Mensagem a ser enviada (max 160 caracteres por segmento)
}
Response (Success - 200):
{
"success": true,
"message": "SMS created and queued for sending",
"data": {
"id": "507f1f77bcf86cd799439011",
"phone": "+5511999999999",
"message": "Sua mensagem aqui",
"status": "PENDING",
"createdAt": "2025-02-05T12:00:00.000Z"
}
}
Response (Error - 400/401/403/500):
{
"success": false,
"error": "Mensagem de erro descritiva"
}
Possiveis Erros:
| Status | Error | Descricao |
|---|---|---|
| 401 | API key is required | Header x-api-key nao foi enviado |
| 401 | Invalid API key | API key invalida ou expirada |
| 400 | Phone and message are required | Campos phone ou message nao foram enviados |
| 400 | Invalid phone number | Numero de telefone em formato invalido |
| 403 | Insufficient balance | Saldo insuficiente para enviar SMS |
| 500 | Internal server error | Erro interno do servidor |
Status do SMS:
PENDING- SMS na fila aguardando envioSENT- SMS enviado para a operadoraDELIVERED- SMS entregue ao destinatarioFAILED- Falha no envio do SMS
Custo:
Cada SMS enviado consome 1 credito do seu saldo.
GET /sms/:id
Consulta o status de um SMS enviado.
Request:
curl -X GET https://firemessageapi.juninhopo.com/sms/507f1f77bcf86cd799439011 \
-H "x-api-key: fm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Response (Success - 200):
{
"success": true,
"data": {
"id": "507f1f77bcf86cd799439011",
"phone": "+5511999999999",
"message": "Sua mensagem aqui",
"status": "DELIVERED",
"sentAt": "2025-02-05T12:00:05.000Z",
"deliveredAt": "2025-02-05T12:00:10.000Z",
"createdAt": "2025-02-05T12:00:00.000Z",
"updatedAt": "2025-02-05T12:00:10.000Z"
}
}
Response (Error - 404):
{
"success": false,
"error": "SMS not found"
}
GET /sms
Lista todos os SMS enviados pelo usuario (paginado).
Request:
curl -X GET "https://firemessageapi.juninhopo.com/sms?page=1&limit=10" \
-H "x-api-key: fm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Query Parameters:
| Parametro | Tipo | Default | Descricao |
|---|---|---|---|
| page | number | 1 | Numero da pagina |
| limit | number | 10 | Quantidade de itens por pagina |
Response (Success - 200):
{
"success": true,
"data": [
{
"id": "507f1f77bcf86cd799439011",
"phone": "+5511999999999",
"message": "Sua mensagem aqui",
"status": "DELIVERED",
"createdAt": "2025-02-05T12:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 100,
"totalPages": 10,
"hasNext": true,
"hasPrev": false
}
}
Exemplos de Uso
JavaScript (fetch)
const response = await fetch('https://firemessageapi.juninhopo.com/send-sms', {
method: 'POST',
headers: {
'x-api-key': 'fm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
phone: '+5511999999999',
message: 'Ola! Esta e uma mensagem de teste.'
})
});
const data = await response.json();
if (data.success) {
console.log('SMS enviado! ID:', data.data.id);
console.log('Status:', data.data.status);
} else {
console.error('Erro:', data.error);
}
Python (requests)
import requests
response = requests.post(
'https://firemessageapi.juninhopo.com/send-sms',
headers={
'x-api-key': 'fm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'Content-Type': 'application/json'
},
json={
'phone': '+5511999999999',
'message': 'Ola! Esta e uma mensagem de teste.'
}
)
data = response.json()
if data['success']:
print(f"SMS enviado! ID: {data['data']['id']}")
print(f"Status: {data['data']['status']}")
else:
print(f"Erro: {data['error']}")
PHP (cURL)
<?php
$ch = curl_init('https://firemessageapi.juninhopo.com/send-sms');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'x-api-key: fm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode([
'phone' => '+5511999999999',
'message' => 'Ola! Esta e uma mensagem de teste.'
])
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
if ($data['success']) {
echo "SMS enviado! ID: " . $data['data']['id'] . "\n";
echo "Status: " . $data['data']['status'] . "\n";
} else {
echo "Erro: " . $data['error'] . "\n";
}
curl_close($ch);
?>
Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
type SendSMSRequest struct {
Phone string `json:"phone"`
Message string `json:"message"`
}
type SendSMSResponse struct {
Success bool `json:"success"`
Message string `json:"message,omitempty"`
Data *struct {
ID string `json:"id"`
Phone string `json:"phone"`
Message string `json:"message"`
Status string `json:"status"`
CreatedAt string `json:"createdAt"`
} `json:"data,omitempty"`
Error *string `json:"error,omitempty"`
}
func main() {
reqBody, _ := json.Marshal(SendSMSRequest{
Phone: "+5511999999999",
Message: "Ola! Esta e uma mensagem de teste.",
})
req, _ := http.NewRequest("POST", "https://firemessageapi.juninhopo.com/send-sms", bytes.NewBuffer(reqBody))
req.Header.Set("x-api-key", "fm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var result SendSMSResponse
json.Unmarshal(body, &result)
if result.Success {
fmt.Printf("SMS enviado! ID: %s\n", result.Data.ID)
fmt.Printf("Status: %s\n", result.Data.Status)
} else {
fmt.Printf("Erro: %s\n", *result.Error)
}
}
Suporte
Para suporte tecnico ou duvidas sobre a API:
- Documentacao: https://firemessage.juninhopo.com/docs
- Discord: https://discord.gg/evcuJcUZMt