Cree flujos de trabajo de comunicación de nivel de operador con nuestra API RESTful. JSON sobre HTTPS, autenticación de token de portador y webhooks en tiempo 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 las solicitudes se autentican con un token de portador en el Authorization encabezamiento. Genere claves desde la pestaña API de su consola Ajoxi: use AJX_LIVE_… para el tráfico de producción y AJX_TEST_… para caja de arena.
curl https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_XXXXX"Realice, enumere, transfiera y recupere llamadas de voz.
/v1/callsEnumere todas las llamadas con paginación del cursor y filtros de fecha.
/v1/callsInicie una nueva llamada saliente o active una campaña de marcador.
/v1/calls/{id}Recupere una única llamada por ID con metadatos completos.
/v1/calls/{id}/transferTransferir una llamada activa a otro agente o extensión.
Busque, aprovisione, transfiera y libere números de teléfono.
/v1/numbersBusque números locales, gratuitos o internacionales disponibles.
/v1/numbersProporcione un nuevo número en su cuenta.
/v1/numbers/{id}Actualice la configuración de enrutamiento, identificador de llamadas o SMS en un número.
/v1/numbers/{id}Liberar un número al grupo. Irreversible.
Envía y recibe SMS, MMS e historial de conversaciones.
/v1/messagesEnumere mensajes, filtre por dirección, canal o conversación.
/v1/messagesEnvía un SMS o MMS. Admite plantillas y archivos adjuntos multimedia.
Acceda a grabaciones de llamadas, transcripciones e información generada por IA.
/v1/recordingsEnumere grabaciones de llamadas con filtros de agente y fecha opcionales.
/v1/recordings/{id}Recupere una única grabación con transcripción y resumen de IA.
/v1/transcripts/{id}Obtenga la transcripción completa de una llamada o grabación.
Suscríbase a eventos de la plataforma en tiempo real.
/v1/webhooksEnumere las suscripciones de webhook configuradas.
/v1/webhooksSuscríbase a uno o más eventos (llamada.inicio, mensaje.recibido).
/v1/webhooks/{id}Eliminar una suscripción de webhook.
Cada respuesta de error devuelve JSON con un error.code y error.message. El código de estado HTTP coincide con la categoría.
Las cuentas estándar tienen un límite de 100 solicitudes por segundo por clave API. Los planes empresariales no tienen un límite fijo: escalamos junto con su tráfico. Cada respuesta incluye tres encabezados de límite de tasa:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1715800000Cuando se excede el límite, recibe una respuesta 429 con un Retry-After encabezado en segundos. Los clientes del SDK implementan automáticamente un retroceso exponencial en estos encabezados.
Los puntos finales de lista devuelven como máximo 50 elementos por página de forma predeterminada (configurable hasta 200 a través de ?limit=200). Cada respuesta incluye una next_cursor — pásalo de vuelta como ?cursor=… para recuperar la página siguiente. Cuando next_cursor es nulo, has llegado al final.
{
"data": [ ... ],
"next_cursor": "Y3Vyc29yX2FmMmI...",
"has_more": true
}Suscríbase a eventos de la plataforma a través de POST HTTPS firmados. Cada solicitud de webhook incluye un X-Ajoxi-Signature encabezado: verifíquelo como HMAC-SHA256 en el cuerpo de la solicitud sin formato utilizando su secreto de webhook.
call.startedSe activa cuando comienza a sonar una llamada entrante o saliente.call.answeredSe activa cuando un recepcionista humano o IA responde una llamada.call.completedSe dispara cuando finaliza una llamada. La carga útil incluye duración, URL de grabación y disposición final.message.receivedSe activa cuando llega un SMS o MMS entrante a un número aprovisionado.message.deliveredSe activa cuando el operador confirma la entrega de un mensaje saliente.recording.readySe activa cuando se procesa una grabación de llamada y está disponible para descargar.transcript.readySe activa cuando la transcripción de IA de una grabación ha terminado de procesarse.Las entregas fallidas se reintentan con un retraso exponencial de hasta 24 horas. Después del último intento, el evento se traslada a una cola de mensajes fallidos que puede reproducir desde la consola.
La versión estable actual es v1. Los cambios importantes se envían con un nuevo prefijo (/v2/, etc.) — nunca dentro de una versión existente. Las versiones obsoletas permanecen disponibles durante al menos 18 meses después del lanzamiento de una sucesora, con 6 meses de advertencia por correo electrónico antes de su vencimiento.
Los SDK propios están disponibles para Node.js, Python, Go y Ruby. Cada uno se envía con clientes escritos, lógica de reintento y un verifyWebhook() ayudante.
Todas las solicitudes utilizan autenticación de token de portador. Genere una clave API en la consola de Ajoxi y luego pásela como `Autorización: Portador AJX_LIVE_XXXXX` en cada solicitud. Utilice una clave `AJX_TEST_…` separada para el tráfico de la zona de pruebas: el entorno de prueba está aislado y nunca realiza llamadas reales.
Sí. Las llamadas realizadas con claves de modo de prueba se enrutan a través de nuestro simulador en lugar de la red del operador en vivo, lo que es perfecto para canalizaciones de CI y pruebas de carga. Las solicitudes en modo de prueba no se facturan contra su asignación de minutos y nunca suenan en un teléfono real.
100 solicitudes por segundo en el plan estándar, ilimitadas en el plan empresarial. Cada respuesta incluye encabezados "X-RateLimit-Limit", "X-RateLimit-Remaining" y "X-RateLimit-Reset" para que pueda controlar su tráfico con precisión. Cuando excede el límite, recibe un 429 con un valor "Reintentar después".
Cada solicitud de webhook incluye un encabezado "X-Ajoxi-Signature". Calcule HMAC-SHA256 sobre el cuerpo de la solicitud sin procesar utilizando su secreto de webhook, luego compare los dos valores en tiempo constante. Los clientes SDK (Node, Python, Go, Ruby) se entregan con un asistente `verifyWebhook()` que maneja esto por usted.
Nunca rompemos una versión API estable. Los cambios importantes se envían en una nueva ruta de versión (por ejemplo, `/v2/`). Las versiones obsoletas permanecen activas durante al menos 18 meses después del lanzamiento de una sucesora, y usted recibe al menos 6 meses de advertencias por correo electrónico antes de su vencimiento.
Actualmente no. La API es REST + JSON con eventos enviados por el servidor opcionales para puntos finales de transmisión como transcripciones en vivo. Si GraphQL desbloquea un flujo de trabajo específico para usted, presente una solicitud a través de su equipo de cuentas: hacemos un seguimiento de la demanda y priorizamos en consecuencia.
Active una clave de zona de pruebas, instale un SDK y realice su primera llamada programable antes del almuerzo.