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:

StatusErrorDescricao
401API key is requiredHeader x-api-key nao foi enviado
401Invalid API keyAPI key invalida ou expirada
400Phone and message are requiredCampos phone ou message nao foram enviados
400Invalid phone numberNumero de telefone em formato invalido
403Insufficient balanceSaldo insuficiente para enviar SMS
500Internal server errorErro interno do servidor

Status do SMS:

  • PENDING - SMS na fila aguardando envio
  • SENT - SMS enviado para a operadora
  • DELIVERED - SMS entregue ao destinatario
  • FAILED - 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:

ParametroTipoDefaultDescricao
pagenumber1Numero da pagina
limitnumber10Quantidade 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: