Documentação da Kassala SMS API

API RESTful para envio de SMS em Angola

Introdução

A Kassala SMS API permite que desenvolvedores integrem o envio de SMS em suas aplicações, exclusivamente para números de telefone nacionais de Angola (formato +244). A API utiliza uma interface JSON simples, com autenticação por chave de API criptografada, validação de domínio de origem e verificação de créditos do usuário.

URL Base: https://smsapi.chanceapp.ao/api

Autenticação

A autenticação é realizada por uma chave de API criptografada, fornecida no campo api_key do corpo da requisição. A chave é associada a um usuário registrado. Além disso, o domínio de origem da requisição (via cabeçalhos Origin ou Referer) deve estar autorizado no painel do usuário. Registre-se em smsapi.chanceapp.ao para obter sua chave.

Endpoints

Enviar SMS

Envia uma mensagem SMS para um número de telefone nacional de Angola.

Parâmetros da Requisição

Parâmetro Tipo Obrigatório Descrição
api_key String Sim Chave de API criptografada do usuário.
destinatario String Sim Número de telefone em formato E.164 (e.g., +244923000000). Apenas números angolanos são permitidos.
mensagem String Sim Conteúdo da mensagem (máximo de 160 caracteres). A abreviação do usuário será automaticamente adicionada.

Exemplo de Requisição

{
  "api_key": "sua_chave_api_criptografada",
  "destinatario": "+244923000000",
  "mensagem": "Olá, esta é uma mensagem de teste!"
}
            

Resposta

Sucesso (200 OK):

{
  "status": "success",
  "mensagem": "SMS enviado com sucesso."
}
            

Erro (401 Não Autorizado):

{
  "erro": "Chave de API inválida."
}
            

Erro (403 Proibido):

{
  "erro": "Requisição de origem não autorizada."
}
            

Erro (403 Proibido - Sem Créditos):

{
  "erro": "Sem créditos de SMS disponíveis."
}
            

Erro (400 Requisição Inválida):

{
  "status": "error",
  "mensagem": "Falha desconhecida ao enviar o SMS."
}
            

Notas Adicionais

Área de Teste

Teste a Kassala SMS API usando o simulador abaixo. Insira sua chave de API, número de destinatário angolano e mensagem para visualizar a resposta em tempo real. Certifique-se de que o domínio de origem está autorizado.

Exemplos de Integração

Abaixo estão exemplos de como integrar a Kassala SMS API em linguagens de programação populares.

PHP


function enviarSMS($apiKey, $recipient, $message)
{
    $url = 'https://smsapi.chanceapp.ao/api/enviar-sms';
    $payload = [
        'api_key' => $apiKey,
        'destinatario' => $recipient,
        'mensagem' => $message,
    ];
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'Accept: application/json']);
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($httpCode === 200) {
        return json_decode($response, true);
    } else {
        return ['status' => 'error', 'mensagem' => "Erro HTTP: $httpCode"];
    }
}
// Exemplo de uso
$apiKey = 'sua_chave_api_criptografada';
$recipient = '+244923000000';
$message = 'Olá, esta é uma mensagem de teste!';
$response = enviarSMS($apiKey, $recipient, $message);
echo json_encode($response, JSON_PRETTY_PRINT);

            

JavaScript (Node.js)

const fetch = require('node-fetch');
async function enviarSMS(apiKey, recipient, message) {
    const url = 'https://smsapi.chanceapp.ao/api/enviar-sms';
    const payload = {
        api_key: apiKey,
        destinatario: recipient,
        mensagem: message
    };
    try {
        const response = await fetch(url, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'Accept': 'application/json'
            },
            body: JSON.stringify(payload)
        });
        const data = await response.json();
        console.log(JSON.stringify(data, null, 2));
        return data;
    } catch (error) {
        console.error('Erro:', error.message);
        return { status: 'error', mensagem: error.message };
    }
}
// Exemplo de uso
const apiKey = 'sua_chave_api_criptografada';
const recipient = '+244923000000';
const message = 'Olá, esta é uma mensagem de teste!';
enviarSMS(apiKey, recipient, message);
            

Java

import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.google.gson.Gson;
public class KassalaSMS {
    public static class SMSPayload {
        public String api_key;
        public String destinatario;
        public String mensagem;
        public SMSPayload(String apiKey, String recipient, String message) {
            this.api_key = apiKey;
            this.destinatario = recipient;
            this.mensagem = message;
        }
    }
    public static void enviarSMS(String apiKey, String recipient, String message) throws Exception {
        String url = "https://smsapi.chanceapp.ao/api/enviar-sms";
        SMSPayload payload = new SMSPayload(apiKey, recipient, message);
        Gson gson = new Gson();
        String jsonPayload = gson.toJson(payload);
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .header("Content-Type", "application/json")
                .header("Accept", "application/json")
                .POST(HttpRequest.BodyPublishers.ofString(jsonPayload))
                .build();
        HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
    public static void main(String[] args) throws Exception {
        String apiKey = "sua_chave_api_criptografada";
        String recipient = "+244923000000";
        String message = "Olá, esta é uma mensagem de teste!";
        enviarSMS(apiKey, recipient, message);
    }
}
            

Python

import requests
import json
def enviar_sms(api_key, recipient, message):
    url = "https://smsapi.chanceapp.ao/api/enviar-sms"
    payload = {
        "api_key": api_key,
        "destinatario": recipient,
        "mensagem": message
    }
    headers = {
        "Content-Type": "application/json",
        "Accept": "application/json"
    }
    try:
        response = requests.post(url, json=payload, headers=headers)
        response.raise_for_status()
        print(json.dumps(response.json(), indent=2))
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"Erro: {e}")
        return {"status": "error", "mensagem": str(e)}
# Exemplo de uso
api_key = "sua_chave_api_criptografada"
recipient = "+244923000000"
message = "Olá, esta é uma mensagem de teste!"
enviar_sms(api_key, recipient, message)
            

Ruby

require 'net/http'
require 'json'
def enviar_sms(api_key, recipient, message)
  url = URI('https://smsapi.chanceapp.ao/api/enviar-sms')
  payload = {
    api_key: api_key,
    destinatario: recipient,
    mensagem: message
  }
  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  request = Net::HTTP::Post.new(url)
  request['Content-Type'] = 'application/json'
  request['Accept'] = 'application/json'
  request.body = payload.to_json
  begin
    response = http.request(request)
    puts JSON.pretty_generate(JSON.parse(response.body))
    JSON.parse(response.body)
  rescue StandardError => e
    puts "Erro: #{e.message}"
    { status: 'error', mensagem: e.message }
  end
end
# Exemplo de uso
api_key = 'sua_chave_api_criptografada'
recipient = '+244923000000'
message = 'Olá, esta é uma mensagem de teste!'
enviar_sms(api_key, recipient, message)
            

Boas Práticas

Suporte

Para assistência, entre em contato com sudomake.startup@gmail.com ou ligue para o Apoio a cliente.