Crie fluxos de trabalho de comunicação de nível de operadora com nossa API RESTful. JSON sobre HTTPS, autenticação de token de portador e webhooks em tempo real.
curl -X POST https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_..." \
-H "Content-Type: application/json" \
-d '{ "to": "+14155551234", "from": "+14155550100", "ai_receptionist": true }'{
"id": "call_8f2a1b3c",
"status": "ringing",
"ai_handler": "receptionist_v2"
}Todas as solicitações são autenticadas com um token de portador no Authorization cabeçalho. Gere chaves na guia API do seu console Ajoxi - use AJX_LIVE_… para o tráfego de produção e AJX_TEST_… para caixa de areia.
curl https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_XXXXX"Faça, liste, transfira e recupere chamadas de voz.
/v1/callsListe todas as chamadas com paginação de cursor e filtros de data.
/v1/callsInicie uma nova chamada ou acione uma campanha de discador.
/v1/calls/{id}Recuperar uma única chamada por ID com metadados completos.
/v1/calls/{id}/transferTransferir uma chamada ativa para outro agente ou ramal.
Pesquise, provisione, faça a portabilidade e libere números de telefone.
/v1/numbersPesquise números locais, gratuitos ou internacionais disponíveis.
/v1/numbersForneça um novo número em sua conta.
/v1/numbers/{id}Atualize a configuração de roteamento, identificador de chamadas ou SMS em um número.
/v1/numbers/{id}Solte um número de volta para o pool. Irreversível.
Envie e receba SMS, MMS e histórico de conversas.
/v1/messagesListe mensagens, filtre por direção, canal ou conversa.
/v1/messagesEnvie um SMS ou MMS. Suporta anexos de mídia e modelos.
Acesse gravações de chamadas, transcrições e insights gerados por IA.
/v1/recordingsListe gravações de chamadas com filtros opcionais de data e agente.
/v1/recordings/{id}Recupere uma única gravação com transcrição e resumo de IA.
/v1/transcripts/{id}Recupere a transcrição completa de uma chamada ou gravação.
Inscreva-se em eventos da plataforma em tempo real.
/v1/webhooksListar assinaturas de webhook configuradas.
/v1/webhooksAssine um ou mais eventos (call.start, message.received).
/v1/webhooks/{id}Remova uma assinatura de webhook.
Cada resposta de erro retorna JSON com um error.code e error.message. O código de status HTTP corresponde à categoria.
As contas padrão têm um limite de 100 solicitações por segundo por chave de API. Os planos empresariais não têm limite fixo – nós escalamos junto com o seu tráfego. Cada resposta inclui três cabeçalhos de limite de taxa:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1715800000Quando o limite é excedido você recebe uma resposta 429 com um Retry-After cabeçalho em segundos. Os clientes SDK implementam automaticamente a espera exponencial nesses cabeçalhos.
Os endpoints de lista retornam no máximo 50 itens por página por padrão (configurável até 200 via ?limit=200). Cada resposta inclui um next_cursor - devolva-o como ?cursor=… para recuperar a próxima página. Quando next_cursor é nulo, você chegou ao fim.
{
"data": [ ... ],
"next_cursor": "Y3Vyc29yX2FmMmI...",
"has_more": true
}Assine eventos da plataforma por meio de POSTs HTTPS assinados. Cada solicitação de webhook inclui um X-Ajoxi-Signature cabeçalho – verifique-o como HMAC-SHA256 no corpo da solicitação bruta usando seu segredo do webhook.
call.startedDisparado quando uma chamada recebida ou efetuada começa a tocar.call.answeredDisparado quando uma chamada é atendida por uma recepcionista humana ou de IA.call.completedDisparado quando uma chamada termina. A carga útil inclui duração, URL de gravação e disposição final.message.receivedDisparado quando um SMS ou MMS de entrada chega a um número provisionado.message.deliveredDisparado quando uma mensagem de saída é confirmada como entregue pela operadora.recording.readyDisparado quando uma gravação de chamada é processada e disponível para download.transcript.readyDisparado quando a transcrição de IA de uma gravação termina o processamento.Novas tentativas de entregas com falha com espera exponencial por até 24 horas. Após a tentativa final, o evento é movido para uma fila de mensagens não entregues que você pode reproduzir no console.
A versão estável atual é v1. As alterações mais recentes são enviadas sob um novo prefixo (/v2/, etc.) — nunca dentro de uma versão existente. As versões obsoletas permanecem disponíveis por pelo menos 18 meses após o lançamento de uma sucessora, com 6 meses de aviso por e-mail antes do pôr do sol.
SDKs primários estão disponíveis para Node.js, Python, Go e Ruby. Cada um vem com clientes digitados, lógica de nova tentativa e um verifyWebhook() ajudante.
Todas as solicitações usam autenticação de token de portador. Gere uma chave API no console Ajoxi e passe-a como `Authorization: Bearer AJX_LIVE_XXXXX` em cada solicitação. Use uma chave `AJX_TEST_…` separada para tráfego de sandbox — o ambiente de teste é isolado e nunca faz chamadas reais.
Sim. As chamadas feitas com chaves em modo de teste são roteadas por meio de nosso simulador, em vez da rede da operadora ativa – perfeito para pipelines de CI e testes de carga. As solicitações no modo de teste não são cobradas do seu limite de minutos e nunca ligam para um telefone real.
100 solicitações por segundo no plano padrão, ilimitadas no plano empresarial. Cada resposta inclui os cabeçalhos `X-RateLimit-Limit`, `X-RateLimit-Remaining` e `X-RateLimit-Reset` para que você possa controlar o ritmo do seu tráfego com precisão. Ao exceder o limite, você recebe um 429 com um valor `Retry-After`.
Cada solicitação de webhook inclui um cabeçalho `X-Ajoxi-Signature`. Calcule HMAC-SHA256 no corpo da solicitação bruta usando seu segredo do webhook e compare os dois valores em tempo constante. Os clientes SDK (Node, Python, Go, Ruby) vêm com um auxiliar `verifyWebhook()` que cuida disso para você.
Nunca quebramos uma versão estável da API. As alterações mais recentes são enviadas sob um novo caminho de versão (por exemplo, `/v2/`). As versões obsoletas permanecem ativas por pelo menos 18 meses após o lançamento de uma sucessora, e você recebe pelo menos 6 meses de avisos por e-mail antes de qualquer desativação.
Atualmente não. A API é REST + JSON com eventos enviados pelo servidor opcionais para endpoints de streaming, como transcrições ao vivo. Se o GraphQL desbloquear um fluxo de trabalho específico para você, registre uma solicitação por meio de sua equipe de conta – rastreamos a demanda e priorizamos de acordo.
Crie uma chave sandbox, instale um SDK e faça sua primeira chamada programável antes do almoço.