stream_url1 pernaO áudio entra e sai de um WebSocket seu, em tempo real. É o caminho do agente de voz.
A perna telefônica para software que precisa falar com pessoas.
Crédito de cortesia. Sem mensalidade.
curl -X POST https://api.callface.ai/v1/calls \
-H "Authorization: Bearer cf_test_..." \
-d '{
"to": "+5511987654321",
"stream_url": "wss://meu-agente.app/voz"
}'{
"call_id": "call_9f2c…",
"status": "queued"
}Por que confiar na rede
Roteamento e mídia operados por nós, em datacenter no Brasil — não é wrapper sobre plataforma estrangeira. A mesma malha de voz que atende a plataforma atende a API.
Em construçãoInterconexão direta com mais de 20 operadoras, sem revenda de trunk. É a rota que está sendo construída, não a de hoje.
Já roda em produção para



Uma chamada, uma terminação
Cada chamada declara exatamente uma. É a única decisão de arquitetura que você precisa tomar.
stream_url1 pernaO áudio entra e sai de um WebSocket seu, em tempo real. É o caminho do agente de voz.
connect_to2 pernasA plataforma liga para o destino e, quando alguém atende, faz a ponte com um número seu. Sem você operar a originação.
O que a rede de operadoras permite
Toda chamada já sai com identificação atribuída pelo DDD do destino — sem você comprar, alugar ou gerenciar numeração. Não há campo para escolher: quem responde pela numeração perante a operadora somos nós, e por isso é a plataforma que decide qual sai.
Número que a pessoa reconhece é atendido. Número estranho não é.
HTTP puro em qualquer linguagem. Em Node.js, com tipos.
import { Callface } from "@callface/node";
const callface = new Callface({ apiKey: process.env.CALLFACE_API_KEY });
const call = await callface.calls.create({
to: "+5511987654321",
streamUrl: "wss://meu-agente.app/voz",
});
console.log(call.callId, call.status);Ciclo de vida
Resposta em milissegundos com status queued. O desfecho chega depois no seu endpoint, em call.ended, assinado com HMAC.
POST https://meu-app.com/webhooks/callface
callface-signature: t=1756650131,v1=9f2c…{
"type": "call.ended",
"event_id": "evt_4b1e…",
"data": {
"call_id": "call_9f2c…",
"status": "answered",
"billable_seconds": 47,
"ended_at": "2026-09-11T14:22:11Z"
}
}Atribuída pelo DDD do destino, sem você gerenciar numeração.
HMAC em todo call.ended, verificação em 10 linhas.
O plano de controle inteiro roda sem sair para a rede telefônica.
Reserva na originação, liquidação pelo tempo falado.
stream_urlA perna telefônica para o seu cérebro.
Liga, confirma, cai no calendário.
Chamada com identificação que a pessoa atende.
Liga assim que o lead entra, enquanto ele lembra de ter preenchido o formulário.
Liga para o destino e passa para um humano só quando atende.
connect_toConta por e-mail, chave de teste e crédito de cortesia. Sem cartão.
Não. A conta abre por e-mail e já vem com crédito de cortesia.
Crédito pré-pago em reais, cobrado por segundo falado. Chamada não atendida não custa nada.
R$ 0,08 por minuto. A medição é por segundo, então você paga pelo tempo que a chamada durou de fato — não pelo minuto arredondado.
Como destino da ponte, sim: em connect_to a plataforma liga para o cliente e conecta com um número seu. Como identificador de chamador, não — quem responde pela numeração perante a operadora somos nós, então é a plataforma que escolhe qual sai, pelo DDD do destino.
É nossa. Asterisk, roteamento e mídia operados por nós — já em produção antes de existir agente de voz.
Sim, para todo o país.