API
referência.
312 endpoints, especificação OpenAPI completa, idempotência em cada mutação e um contrato de tempo de atividade público. Não há caixas pretas.
"color:#22D3EE">curl "color:#22D3EE">-X "cor:#34D399;peso da fonte:600">POSTAR https://api.rozper.com/v2/calls\
"cor:#22D3EE">-H "Autorização: Portador $ROZPER_API_KEY" \
"cor:#22D3EE">-H "Tipo de conteúdo: aplicativo/json" \
"cor:#22D3EE">-d '{
"para": "+14155551234",
"de": "+12025550100",
"URL": "https://your.app/voice/answer"
}'{
"id": "call_01HXY7ZQ9V3J3X8K5N",
"status": "queued",
"to": "+14155551234",
"from": "+12025550100",
"created_at": "2026-05-12T14:23:01Z"
}Tokens ao portador.
Escopo. Rotativo.
Cada solicitação carrega uma chave de projeto como token de portador. As chaves têm escopo (leitura, gravação, cobrança), podem ser giradas sem tempo de inatividade e podem ser fixadas por IP no painel.
- Chaves por ambiente (teste/ao vivo)
- Credenciais de cliente OAuth 2.0 suportadas
- TLS mútuo disponível no Enterprise
# .env → never commit me
ROZPER_API_KEY=sk_live_8FzqQ...XW7p
# request
curl https://api.rozper.com/v2/account \
-H "Authorization: Bearer $ROZPER_API_KEY"
# 200 OK
{
"id": "acct_01HXY7ZQ9V3J3X8K5N",
"scopes": ["calls.write", "messages.write", "numbers.read"],
"rate_limit": { "limit": 1000, "remaining": 998, "reset": 1715520000 }
}Explore cada endpoint.
Criar uma chamada
Origine uma chamada PSTN de saída. Retorna imediatamente com um objeto de chamada na fila - ouça nos webhooks as alterações de estado.
tocordaobrigatórioNúmero de destino E.164.
fromcordaobrigatórioNúmero Rozper verificado ou alugado.
urlcordaEndpoint HTTPS que retorna instruções de voz quando a chamada é conectada.
recordbooleanoGrave ambas as pernas em seu armazenamento. Padrão falso.
timeoutinteiroTempo limite do toque em segundos. Padrão 60.
const call = await rozper.calls.create({
to: "+14155551234",
from: "+12025550100",
url: "https://your.app/voice/answer",
}){
"id": "call_01HXY7ZQ9V3J3X8K5N",
"object": "call",
"created_at": "2026-05-12T14:23:01Z"
}Erros previsíveis e legíveis por máquina.
Cada 4xx e 5xx retorna a mesma forma: um estável code, uma mensagem legível e um ID de solicitação que você pode colar no suporte.
{
"error": {
"code": "invalid_param",
"message": "to: must be E.164",
"request_id": "req_01HXY7…",
"param_errors": [
{ "param": "to", "reason": "format" }
]
}
}bad_requestCorpo da solicitação malformado ou campo obrigatório ausente.
unauthorizedChave de API ausente, expirada ou revogada.
forbiddenA chave não possui o escopo necessário para este recurso.
not_foundO ID do recurso não existe para esta conta.
conflictA chave de idempotência colide com uma carga útil diferente.
invalid_paramUm parâmetro falhou na validação. Inspecione param_errors[].
rate_limitedBackoff usando o cabeçalho Retry-After.
server_errorFomos notificados. Tente novamente chamadas idempotentes.
Assinado, repetido e protegido contra reprodução.
Cada evento é entregue com uma assinatura HMAC, um ID de evento exclusivo e um carimbo de data/hora UTC. Tentamos novamente com espera exponencial por até 24 horas.
import { verify } from "@rozper/sdk/webhooks"
app.post("/webhooks/rozper", (req, res) => {
const ok = verify({
payload: req.rawBody,
signature: req.header("Rozper-Signature"),
secret: process.env.ROZPER_WEBHOOK_SECRET,
})
if (!ok) return res.status(401).end()
const event = JSON.parse(req.rawBody)
switch (event.type) {
case "call.completed": /* … */
case "recording.ready": /* … */
}
res.json({ received: true })
})call.initiatedChamada de saída aceita pela operadora.
call.ringingO extremo está tocando.
call.answeredExtremo distante respondido (ou AMD detectada humana).
call.completedA chamada terminou. Inclui duração, faturamento e metadados de trecho.
recording.readyGravação de recurso carregado e URL assinado disponível.
message.deliveredRecibo de entrega da transportadora (quando suportado).
agent.handoffAgente de IA escalado para uma fila humana.
number.purchasedAquisição de número concluída.
Cada mudança, em inglês simples.
- 2026-05-10v2026.05
- façanhaOs agentes de voz agora oferecem suporte a chamadas de ferramentas com respostas de streaming.
- façanhaNovo endpoint /v2/numbers/port para envios programáticos de LNP.
- 2026-04-22v2026.04
- consertarO cache de idempotência agora respeita corretamente o TTL 24h em POST/chamadas.
- tarefaEndpoints v1 obsoletos removidos (anunciados em 2025-11).
- 2026-03-31v2026.03
- façanhaWebSocket media-streams beta já está disponível para todos.
- façanhaMensagens de modelo do WhatsApp adicionadas em /v2/messages.