Créez des flux de communication de niveau opérateur avec notre API RESTful. JSON sur HTTPS, authentification par jeton Bearer et webhooks en temps réel.
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"
}Toutes les demandes sont authentifiées avec un jeton Bearer dans le Authorization en-tête. Générez des clés depuis l'onglet API de votre console Ajoxi - utilisez AJX_LIVE_… pour le trafic de production et AJX_TEST_… pour bac à sable.
curl https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_XXXXX"Passez, répertoriez, transférez et récupérez des appels vocaux.
/v1/callsRépertoriez tous les appels avec la pagination du curseur et les filtres de date.
/v1/callsInitiez un nouvel appel sortant ou déclenchez une campagne de numérotation.
/v1/calls/{id}Récupérez un seul appel par ID avec des métadonnées complètes.
/v1/calls/{id}/transferTransférer un appel actif vers un autre agent ou poste.
Recherchez, provisionnez, transférez et libérez des numéros de téléphone.
/v1/numbersRecherchez les numéros locaux, gratuits ou internationaux disponibles.
/v1/numbersAjoutez un nouveau numéro à votre compte.
/v1/numbers/{id}Mettez à jour la configuration du routage, de l’identification de l’appelant ou des SMS sur un numéro.
/v1/numbers/{id}Remettez un numéro dans la piscine. Irréversible.
Envoyez et recevez des SMS, MMS et historique des conversations.
/v1/messagesRépertoriez les messages, filtrez par direction, canal ou conversation.
/v1/messagesEnvoyez un SMS ou un MMS. Prend en charge les pièces jointes multimédias et les modèles.
Accédez aux enregistrements d'appels, aux transcriptions et aux informations générées par l'IA.
/v1/recordingsRépertoriez les enregistrements d’appels avec des filtres de date et d’agent facultatifs.
/v1/recordings/{id}Récupérez un seul enregistrement avec transcription et résumé IA.
/v1/transcripts/{id}Récupérez la transcription complète d’un appel ou d’un enregistrement.
Abonnez-vous aux événements de la plateforme en temps réel.
/v1/webhooksRépertoriez les abonnements aux webhooks configurés.
/v1/webhooksAbonnez-vous à un ou plusieurs événements (call.start, message.received).
/v1/webhooks/{id}Supprimez un abonnement webhook.
Chaque réponse d'erreur renvoie JSON avec un error.code et error.message. Le code d'état HTTP correspond à la catégorie.
Les comptes standard sont limités à 100 requêtes par seconde et par clé API. Les forfaits Entreprise n'ont pas de plafond fixe : nous évoluons en fonction de votre trafic. Chaque réponse comprend trois en-têtes de limite de débit :
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1715800000Lorsque la limite est dépassée, vous recevez une réponse 429 avec un Retry-After en-tête en quelques secondes. Les clients SDK implémentent automatiquement une interruption exponentielle par rapport à ces en-têtes.
Les points de terminaison de liste renvoient au maximum 50 éléments par page par défaut (configurable jusqu'à 200 via ?limit=200). Chaque réponse comprend un next_cursor - renvoie-le comme ?cursor=… pour récupérer la page suivante. Quand next_cursor est nul, vous avez atteint la fin.
{
"data": [ ... ],
"next_cursor": "Y3Vyc29yX2FmMmI...",
"has_more": true
}Abonnez-vous aux événements de la plateforme via des POST HTTPS signés. Chaque demande de webhook comprend un X-Ajoxi-Signature en-tête : vérifiez-le comme HMAC-SHA256 sur le corps brut de la requête à l'aide de votre secret de webhook.
call.startedDéclenché lorsqu'un appel entrant ou sortant commence à sonner.call.answeredDéclenché lorsqu'un appel est répondu par un réceptionniste humain ou IA.call.completedLancé à la fin d'un appel. La charge utile comprend la durée, l’URL d’enregistrement et la disposition finale.message.receivedDéclenché lorsqu'un SMS ou MMS entrant arrive à un numéro provisionné.message.deliveredDéclenché lorsqu'un message sortant est confirmé par le transporteur.recording.readyDéclenché lorsqu'un enregistrement d'appel est traité et disponible en téléchargement.transcript.readyDéclenché lorsque la transcription AI d'un enregistrement a terminé le traitement.Les livraisons ayant échoué, réessayez avec un délai exponentiel pouvant aller jusqu'à 24 heures. Après la dernière tentative, l'événement est déplacé vers une file d'attente de lettres mortes que vous pouvez rejouer depuis la console.
La version stable actuelle est v1. Les modifications majeures sont expédiées sous un nouveau préfixe (/v2/, etc.) — jamais dans une version existante. Les versions obsolètes restent disponibles pendant au moins 18 mois après la livraison d'un successeur, avec 6 mois d'avertissement par e-mail avant l'expiration.
Des SDK propriétaires sont disponibles pour Node.js, Python, Go et Ruby. Chacun est livré avec des clients typés, une logique de nouvelle tentative et un verifyWebhook() auxiliaire.
Toutes les demandes utilisent l'authentification par jeton du porteur. Générez une clé API dans la console Ajoxi, puis transmettez-la comme « Autorisation : Bearer AJX_LIVE_XXXXX » à chaque requête. Utilisez une clé `AJX_TEST_…` distincte pour le trafic sandbox : l'environnement de test est isolé et ne passe jamais de vrais appels.
Oui. Les appels passés avec les touches de mode test sont acheminés via notre simulateur au lieu du réseau d'opérateur en direct, ce qui est parfait pour les pipelines CI et les tests de charge. Les demandes en mode test ne sont pas facturées sur votre allocation de minutes et ne sonnent jamais sur un vrai téléphone.
100 requêtes par seconde sur le forfait standard, illimité en entreprise. Chaque réponse comprend les en-têtes « X-RateLimit-Limit », « X-RateLimit-Remaining » et « X-RateLimit-Reset » afin que vous puissiez réguler votre trafic avec précision. Lorsque vous dépassez la limite, vous recevez un 429 avec une valeur « Réessayer-après ».
Chaque requête de webhook inclut un en-tête « X-Ajoxi-Signature ». Calculez HMAC-SHA256 sur le corps brut de la requête à l'aide de votre secret webhook, puis comparez les deux valeurs en temps constant. Les clients SDK (Node, Python, Go, Ruby) sont livrés avec un assistant `verifyWebhook()` qui gère cela pour vous.
Nous ne cassons jamais une version stable de l'API. Les modifications majeures sont livrées sous un nouveau chemin de version (par exemple `/v2/`). Les versions obsolètes restent actives pendant au moins 18 mois après l'expédition d'un successeur, et vous recevez au moins 6 mois d'avertissements par courrier électronique avant toute cessation d'activité.
Pas actuellement. L'API est REST + JSON avec des événements facultatifs envoyés par le serveur pour les points de terminaison de streaming tels que les transcriptions en direct. Si GraphQL débloque un flux de travail spécifique pour vous, déposez une demande auprès de votre équipe de compte – nous suivons la demande et priorisons en conséquence.
Lancez une clé sandbox, installez un SDK et passez votre premier appel programmable avant le déjeuner.