# 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`. ```bash 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:** ```bash 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:** ```json { "phone": "string", // Numero de telefone (formato E.164: +5511999999999) "message": "string" // Mensagem a ser enviada (max 160 caracteres por segmento) } ``` **Response (Success - 200):** ```json { "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):** ```json { "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 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:** ```bash curl -X GET https://firemessageapi.juninhopo.com/sms/507f1f77bcf86cd799439011 \ -H "x-api-key: fm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ``` **Response (Success - 200):** ```json { "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):** ```json { "success": false, "error": "SMS not found" } ``` --- ## GET /sms Lista todos os SMS enviados pelo usuario (paginado). **Request:** ```bash 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):** ```json { "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) ```javascript 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) ```python 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 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 ```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