Guias
Receitas de integração
Frameworks e provedores de identidade
Já tens uma chave? Personaliza os exemplos temporariamente
Opcional. A chave ficará visível nos exemplos de código. Fica apenas na memória desta página: sem guardar nem enviar. Limpa-a antes de partilhar o ecrã ou capturas.
Os exemplos usam valores ilustrativos. Para enviar, cria uma conta e uma chave API e aguarda a aprovação do Sender ID.
$ Gerar ChaveReceitas de Integração
Liga a KambaSMS aos teus provedores de identidade, frameworks de backend e lojas virtuais em minutos com snippets prontos a usar.
Keycloak / Authelia (SSO & 2FA)
Dispara códigos OTP de segundo fator ou alertas de segurança para números +244 no login ou recuperação.
Configura o teu Keycloak SMS SPI ou webhook de notificação do Authelia para fazer POST na KambaSMS com o número de destino e o código de segurança:
curl -X POST https://api.kambasms.ao/messages/send \
-H "X-API-Key: ${KAMBASMS_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"to": "+244923000000",
"sender_id": "MINHAMARCA",
"text": "Código de segurança: 849201. Válido por 5 minutos."
}'Laravel (Notification Channel / Service)
Envio de SMS transacional ou OTP usando o cliente HTTP nativo e o sistema de filas do Laravel.
Define a tua KAMBASMS_API_KEY no .env e envia mensagens diretamente nas tuas notificações ou serviços:
use Illuminate\Support\Facades\Http;
// Envio rápido de SMS ou OTP transacional
$response = Http::withHeaders([
'X-API-Key' => config('services.kambasms.key'),
'Content-Type' => 'application/json',
])->post('https://api.kambasms.ao/messages/send', [
'to' => $user->phone, // Formato: +2449XXXXXXXX
'sender_id' => 'MINHAMARCA',
'text' => "Olá {$user->name}, a tua encomenda foi despachada com sucesso.",
'auto_gsm7' => true,
]);
if ($response->successful()) {
$messageId = $response->json('message_id');
}WordPress & WooCommerce
Notifica clientes automaticamente quando o estado da encomenda é alterado ou processado.
Adiciona este hook ao functions.php do teu tema ou num plugin personalizado para avisar compradores em Angola:
add_action('woocommerce_order_status_processing', function($order_id) {
$order = wc_get_order($order_id);
$phone = $order->get_billing_phone();
// Normaliza para +244 se necessário
if (!str_starts_with($phone, '+244')) {
$phone = '+244' . ltrim($phone, '0');
}
wp_remote_post('https://api.kambasms.ao/messages/send', [
'headers' => [
'X-API-Key' => getenv('KAMBASMS_API_KEY'),
'Content-Type' => 'application/json',
],
'body' => wp_json_encode([
'to' => $phone,
'sender_id' => 'MINHALOJA',
'text' => "Encomenda #{$order_id} confirmada. Estamos a preparar o envio.",
'auto_gsm7' => true,
]),
'timeout' => 10,
]);
});Node.js / TypeScript (Next.js, Express, NestJS)
Função assíncrona moderna usando fetch nativo com tratamento de erros e otimização GSM-7.
Snippet universal com suporte a X-API-Key e remoção automática de acentos:
export async function sendKambaSms(to: string, text: string, senderId = 'MINHAMARCA') {
const response = await fetch('https://api.kambasms.ao/messages/send', {
method: 'POST',
headers: {
'X-API-Key': process.env.KAMBASMS_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
to,
text,
sender_id: senderId,
auto_gsm7: true,
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'Falha ao enviar SMS');
}
return response.json();
}