aethexDocs

Référence API

API Numéros de téléphone

Enregistrez et gérez les numéros de téléphone que votre compte utilise pour la voix entrante et sortante. Les numéros peuvent être associés à un compte Twilio (provider: "twilio") ou à un trunk SIP détenu par le tenant (provider: "sip"). Pour Twilio, l'enregistrement valide le numéro auprès de votre compte connecté et configure l'URL de voix quand agent_id est défini. Pour SIP, créez ou onboardez d'abord le trunk avec la référence API SIP Trunks, puis enregistrez ici des numéros supplémentaires si nécessaire. Les règles de routage (messagerie vocale / transfert / raccrochage) sont attachées indépendamment et s'appliquent lorsqu'aucun agent ne répond. Les lectures utilisent phone_numbers:read ; la création, la mise à jour et la suppression utilisent phone_numbers:write.

URL de base
https://api.aethexai.com/api/v1
Endpoints
8
Portées
phone_numbers:readphone_numbers:write
GET/phone-numbers

Tous les numéros de téléphone enregistrés sur votre compte, du plus récent au plus ancien.

Lister les numéros de téléphone

Retourne tous les numéros de téléphone non libérés, du plus récent au plus ancien. Les numéros de téléphone Twilio et SIP apparaissent dans la même liste ; utilisez le champ provider pour les distinguer.

Chemin & Requête

2
  • offsetintegeroptionnel

    Nombre de résultats à ignorer. Par défaut 0, minimum 0.

  • limitintegeroptionnel

    Résultats maximum par page. Par défaut 50, plage 1–1000.

POST/phone-numbers/twilio/register

Enregistrer un numéro Twilio sur votre compte et (optionnellement) le pointer vers un agent.

Enregistrer un numéro Twilio

Connecte un numéro Twilio existant à votre compte Aethex. Passez le twilio_account_id obtenu depuis POST /twilio-accounts. Quand agent_id est fourni, l'URL de voix est également configurée sur Twilio pour les appels entrants.

Corps de la requête

4
  • phone_numberstringrequis

    Numéro de téléphone E.164 à enregistrer (ex. +14155551234). Doit exister sur le compte Twilio fourni.

  • twilio_account_idstringrequis

    UUID retourné par POST /twilio-accounts pour le compte Twilio qui possède ce numéro.

  • friendly_namestringoptionnel

    Libellé lisible (max 255 caractères, texte brut). Par défaut "".

  • agent_idstringoptionnel

    Agent pour gérer les appels entrants sur ce numéro. Quand défini, l'URL de voix est configurée sur Twilio dans cette requête. Omettez pour enregistrer sans agent.

Erreurs

6
404Agent introuvable

L'agent_id fourni n'existe pas sur votre compte.

Vérifiez l'ID de l'agent avec GET /agents, ou omettez agent_id.

409Numéro de téléphone déjà enregistré

Ce numéro est déjà actif sur un compte ; le même E.164 ne peut pas être enregistré deux fois.

Le message indique dans quel cas vous êtes. Sur ce compte : libérez-le avec DELETE /phone-numbers/{id}, dont le message donne l'identifiant, ou choisissez un autre numéro. Sur un autre compte : contactez le support — un enregistrement ne peut pas être déplacé en libre-service.

422Compte Twilio invalide

L'twilio_account_id ne correspond pas à un compte Twilio actif sur votre compte.

Enregistrez d'abord votre compte Twilio avec POST /twilio-accounts, puis passez l'id retourné ici.

422Numéro absent du compte Twilio

Le phone_number n'est pas présent sur le compte Twilio référencé.

Achetez ou portez le numéro dans ce compte Twilio d'abord. Vérifiez dans la console Twilio sous Numéros de téléphone → Gérer → Numéros actifs.

422Erreur de validation

phone_number n'est pas un E.164 valide, twilio_account_id n'est pas un UUID valide, ou friendly_name dépasse 255 caractères.

Respectez les contraintes des champs. E.164 : + suivi de 1–15 chiffres, le premier chiffre ne doit pas être 0.

503Twilio inaccessible

Twilio n'a pas répondu lors de la vérification du numéro ou de la configuration de l'URL de voix.

Réessayez avec un backoff. Aucun enregistrement n'est créé en cas d'échec, donc une nouvelle tentative réussie le créera proprement.

POST/phone-numbers/sip/register

Attacher un autre numéro à un trunk SIP actif.

Enregistrer un numéro SIP

Enregistre un numéro de téléphone sur un trunk SIP actif afin que les appels vers ce numéro transitent par votre opérateur. Le trunk_id doit référencer un trunk détenu par le tenant depuis GET /sip-trunks ; pour une première configuration SIP sortante, préférez POST /sip-trunks/onboard car il crée le trunk et enregistre ses numéros en une seule opération. Le numéro ne peut pas déjà être enregistré sur un compte. outbound_enabled autorise les appels sortants depuis ce numéro comme from_number sur POST /calls/trigger. Passez un objet inbound pour définir les règles de routage initiales, ou définissez-les plus tard avec POST /phone-numbers/{id}/routing.

Corps de la requête

6
  • phone_numberstringrequis

    Numéro de téléphone E.164 à enregistrer.

  • trunk_idstringrequis

    UUID d'un trunk SIP actif dans votre compte. Créez-en un avec POST /sip-trunks/onboard ou POST /sip-trunks.

  • friendly_namestringoptionnel

    Libellé lisible (max 255 caractères, texte brut). Par défaut "".

  • agent_idstringoptionnel

    Agent pour gérer les appels entrants sur ce numéro.

  • outbound_enabledbooleanoptionnel

    Autoriser ce numéro à passer des appels sortants. Par défaut false.

  • inboundobjectoptionnel

    Règles de routage initiales : { fallback_action, fallback_number?, max_ring_seconds? }. Consultez Définir les règles de routage ci-dessous pour les contraintes.

Erreurs

5
404Trunk SIP introuvable

Le trunk_id fourni ne correspond à aucun trunk SIP visible par votre compte.

Utilisez un ID de trunk renvoyé par GET /sip-trunks pour ce compte. Les IDs d'autres comptes retournent intentionnellement le même 404.

404Agent introuvable

L'agent_id fourni n'existe pas sur votre compte.

Vérifiez l'ID de l'agent avec GET /agents, ou omettez-le.

409Numéro de téléphone déjà enregistré

Ce numéro est déjà actif sur un compte.

Le message indique dans quel cas vous êtes. Sur ce compte : libérez-le avec DELETE /phone-numbers/{id}, dont le message donne l'identifiant, ou choisissez un autre numéro. Sur un autre compte : contactez le support — un enregistrement ne peut pas être déplacé en libre-service.

422Trunk SIP inactif

Le trunk SIP référencé existe pour votre compte, mais il n'est pas encore actif.

Attendez que le statut du trunk soit active, puis réessayez l'enregistrement.

422Erreur de validation

phone_number n'est pas un E.164 valide, trunk_id n'est pas un UUID valide, ou inbound.fallback_action est forward sans fallback_number.

Respectez les contraintes des champs. fallback_number est requis quand fallback_action est forward.

POST/phone-numbers/africastalking/register

Un shortcode qui reçoit des SMS, sur votre compte Africa's Talking lié.

Enregistrer un shortcode Africa's Talking

Un shortcode est une ligne numéro comme les autres : elle porte l'agent qui répond, le rôle de réponse et les fils clients. Ce qui se trouve derrière est votre compte Africa's Talking lié, au lieu d'un compte Twilio. La ligne est créée avec sms_inbound désactivé. Activez-le avec PATCH /phone-numbers/:id comme pour tout numéro ; les mêmes gardes s'appliquent (un agent doit être lié, le compte doit être actif), sans aller-retour vers l'opérateur. Africa's Talking a ensuite besoin de l'URL de callback entrant du compte, affichée une seule fois à la liaison du compte ou via POST /messaging-accounts/:id/inbound-callback. Les noms d'expéditeur alphanumériques ne sont pas acceptés ici : on ne peut pas répondre à un nom, il reste sur le compte de messagerie comme expéditeur pendant les appels. sms_inbound est refusé tant que le compte n'a pas d'URL de callback entrant émise ; le champ messaging_account_id de la réponse indique sur quel compte le shortcode est posé.

Corps de la requête

4
  • shortcodestringrequis

    Le shortcode, 3 à 8 chiffres, sans signe plus ni indicatif pays (par exemple 29361). Il est renvoyé dans phone_number.

  • messaging_account_idstringrequis

    UUID de votre compte Africa's Talking actif, depuis GET /messaging-accounts. Son username et sa clé API envoient et reçoivent sur ce shortcode.

  • friendly_namestringoptionnel

    Libellé lisible (max 255 caractères, texte brut). Par défaut "".

  • agent_idstringoptionnel

    Agent qui répond aux SMS envoyés à ce shortcode. Requis avant d'activer sms_inbound.

Erreurs

5
404Compte de messagerie introuvable

Le messaging_account_id fourni n'existe pas sur votre compte.

Utilisez un ID renvoyé par GET /messaging-accounts, ou liez d'abord un compte avec POST /messaging-accounts.

404Agent introuvable

L'agent_id fourni n'existe pas sur votre compte.

Vérifiez l'ID de l'agent avec GET /agents, ou omettez-le.

409Shortcode déjà enregistré

Ce shortcode est déjà actif sur un compte. Les numéros et shortcodes actifs sont uniques sur toute la plateforme.

Le message indique dans quel cas vous êtes. Sur ce compte : libérez-le avec DELETE /phone-numbers/:id, dont le message donne l'identifiant, ou utilisez un autre shortcode. Sur un autre compte : contactez le support — un enregistrement ne peut pas être déplacé en libre-service, et Africa's Talking ne publie aucun moyen de vérifier qui détient un code.

422Le compte de messagerie ne peut pas porter ce shortcode

Le compte de messagerie est libéré, ou ce n'est pas un compte Africa's Talking.

Liez un compte Africa's Talking actif et enregistrez le shortcode dessus.

422Erreur de validation

shortcode ne fait pas 3 à 8 chiffres (un numéro E.164 ou un nom d'expéditeur a été fourni), ou messaging_account_id n'est pas un UUID valide.

Envoyez les chiffres du shortcode, sans plus. Un numéro E.164 relève de la route Twilio ou SIP ; un nom d'expéditeur relève du compte de messagerie.

GET/phone-numbers/:id

Récupérer un seul enregistrement de numéro de téléphone.

Obtenir un numéro de téléphone

Retourne un numéro de téléphone sur votre compte. Les numéros libérés sont masqués et retournent 404.

Chemin & Requête

1
  • idstringrequis

    UUID du numéro de téléphone, depuis n'importe quelle réponse de liste ou d'enregistrement.

Erreurs

1
404Numéro de téléphone introuvable

Aucun numéro de téléphone actif avec cet ID n'existe sur votre compte.

Vérifiez l'ID avec GET /phone-numbers.

PATCH/phone-numbers/:id

Réassigner l'agent, basculer le sortant, ou réécrire le routage sur un numéro existant.

Mettre à jour un numéro de téléphone

Mise à jour partielle ; seuls les champs envoyés changent. Sur un numéro Twilio, changer agent_id reconfigure l'URL de voix sur Twilio dans la même requête. Les appels sortants Twilio sont régis par les paramètres de votre compte Twilio.

Chemin & Requête

1
  • idstringrequis

    UUID du numéro de téléphone.

Corps de la requête

10
  • friendly_namestringoptionnel

    Libellé mis à jour (max 255 caractères, texte brut).

  • agent_idstringoptionnel

    Nouvel UUID d'agent, ou null pour désassigner. Sur les numéros Twilio, cela reconfigure (ou délie) l'URL de voix.

  • routing_rulesobjectoptionnel

    Objet de règles de routage pour remplacer les règles actuelles, ou null pour effacer.

  • outbound_enabledbooleanoptionnel

    Réservé aux opérateurs gérés par le support. Sans effet sur les numéros Twilio.

  • trunk_idstringoptionnel

    Numéros SIP uniquement. Rattache le numéro à un autre de vos trunks SIP : les appels sortants depuis ce numéro passent par le nouveau trunk dès l'appel suivant. L'opérateur n'est pas contacté et le trunk lui-même n'est pas modifié. Le trunk doit être actif ; ne peut pas être null. Renvoie 422 sur un numéro Twilio. C'est le lien de trunk sortant du numéro ; il n'est consulté comme solution de secours entrante que si le trunk est de type entrant, donc le pointer vers un trunk uniquement sortant (le cas normal pour les numéros configurés via l'intégration de trunk SIP) est attendu.

  • sms_senderbooleanoptionnel

    Autorise ce numéro à envoyer des messages texte : liens de réservation et messages envoyés par vos agents pendant un appel. Plusieurs de vos numéros peuvent envoyer — chaque agent écrit depuis celui qui lui est désigné (sms_sender_number_id), de sorte qu'une ligne commerciale et une ligne support envoient chacune sous sa propre identité. Le numéro doit être actif et rattaché à votre propre compte Twilio ; Twilio est interrogé pour savoir s'il peut envoyer des SMS, et une ligne voix-seule est refusée. C'est ainsi qu'un client Twilio active l'envoi de SMS : il n'y a aucun compte de messagerie à relier. Le désactiver sur votre expéditeur par défaut est refusé tel quel — envoyez sms_sender_default: false avec, ou désignez d'abord un autre numéro par défaut. Les messages eux-mêmes s'écrivent dans Messages texte.

  • sms_sender_defaultbooleanoptionnel

    Désigne ce numéro comme celui qu'un agent utilise lorsqu'aucun numéro ne lui a été attribué. Vous n'en avez qu'un, donc l'activer ici le déplace depuis le numéro qui le portait — aucune fenêtre pendant laquelle rien n'enverrait. Le numéro doit aussi pouvoir envoyer (sms_sender), déjà ou dans la même requête : un défaut incapable d'envoyer est un repli qui ne mène à rien.

  • sms_inboundbooleanoptionnel

    Laisse ce numéro recevoir les messages texte qu'on lui envoie. Qu'il y réponde ou non dépend de l'agent qui lui est lié : avec un agent, celui-ci répond ; sans agent, le message est enregistré et rien n'est envoyé, ce que veut un numéro qui ne sert qu'à collecter des réponses. Refusé si le numéro n'est pas actif, s'il est sur un compte Twilio partagé, si l'opérateur indique qu'il ne peut pas porter de textos, ou s'il est rattaché à une TwiML App pour la messagerie. Le webhook de l'app prend le dessus sur celui du numéro, et les textos ne nous atteindraient jamais. Un cas que nous ne pouvons pas voir : un numéro appartenant à un Twilio Messaging Service voit aussi le webhook de ce service l'emporter, et cela n'est pas lisible depuis le numéro. Détachez-le vous-même avant d'activer. Le routage des appels n'est pas touché : un numéro dont les appels passent déjà par un trunk SIP élastique ou une TwiML App voix continue de les y envoyer, et peut malgré tout recevoir des textos. Si un tel numéro porte encore une URL d'appel que nous avions inscrite avant le déplacement de ses appels, nous l'effaçons — jamais une URL qui ne nous appartient pas — de sorte qu'après avoir détaché le trunk ou l'app, il faut réaffecter l'agent du numéro pour que ses appels nous reviennent — renvoyer l'agent déjà en place suffit.

  • acknowledge_no_repliesbooleanoptionnel

    Désigne ce numéro comme expéditeur alors qu'il ne répond pas aux textos, en connaissance de cause. Sans ce champ, la demande est refusée : un destinataire écrit depuis une ligne muette ne peut pas répondre, et son STOP n'atteint personne. Le refus n'est pas absolu parce que deux configurations légitimes ne peuvent pas répondre — un numéro américain dans un Messaging Service, dont le webhook du service l'emporte, et une ligne Twilio qu'un client SIP détient uniquement pour envoyer. Ignoré si le numéro répond déjà. La date à laquelle vous l'avez donné est conservée dans replies_acknowledged_at, et effacée dès que la ligne répond ou cesse d'envoyer.

  • messaging_account_idstringoptionnel

    Shortcodes Africa's Talking uniquement : déplace le shortcode vers un autre de vos comptes de messagerie actifs, par exemple après une rotation de clé API (qui lie un nouveau compte). Validé comme une activation ; tant que sms_inbound est actif, le nouveau compte doit déjà avoir une URL de callback entrant.

Erreurs

6
404Numéro de téléphone introuvable

Aucun numéro de téléphone actif avec cet ID n'existe sur votre compte.

Vérifiez l'ID avec GET /phone-numbers.

404Agent introuvable

Le nouvel agent_id n'existe pas sur votre compte.

Vérifiez l'ID de l'agent avec GET /agents.

422Erreur de validation

Un champ a échoué à la validation (format UUID de friendly_name, agent_id ou trunk_id, trunk_id sur un numéro Twilio ou trunk inactif), ou le compte Twilio lié n'est plus actif.

Respectez les contraintes des champs.

409Numéro inutilisable comme expéditeur SMS

sms_sender a été activé sur un numéro inactif, sans compte Twilio, sur un compte partagé de la plateforme, ou dont Twilio indique qu'il ne peut pas envoyer de SMS.

Désignez un numéro actif de votre propre compte Twilio, capable d'envoyer des SMS.

409Ce numéro ne reçoit aucune réponse

sms_sender a été activé sur un numéro sans sms_inbound, ou sms_inbound a été désactivé sur un numéro qui envoie. Dans les deux cas, la réponse d'un destinataire — et son STOP — n'arriverait jamais jusqu'à vous.

Activez sms_inbound sur ce numéro, ou renvoyez la même requête avec acknowledge_no_replies: true.

503Twilio inaccessible

Twilio n'a pas répondu lors de la reconfiguration de l'URL vocale, ou lors de la vérification de la capacité d'envoi de SMS du numéro.

Réessayez avec un backoff. La modification n'est validée que quand Twilio confirme.

DELETE/phone-numbers/:id

Arrêter d'accepter les appels sur un numéro.

Libérer un numéro de téléphone

Marque le numéro comme libéré pour qu'il cesse d'accepter les appels entrants. Pour les numéros Twilio, Aethex efface également l'URL de voix Twilio (Voice URL).

Chemin & Requête

1
  • idstringrequis

    UUID du numéro de téléphone.

Erreurs

2
404Numéro de téléphone introuvable

Aucun numéro de téléphone actif avec cet ID n'existe sur votre compte. Les numéros déjà libérés retournent aussi 404.

Vérifiez l'ID avec GET /phone-numbers. Libérer deux fois n'est pas supporté.

409Ce numéro est votre expéditeur par défaut

Le numéro porte sms_sender_default. Le libérer le rend à l'opérateur, et toute résolution d'expéditeur ne regarde que les numéros actifs — le compte se retrouverait donc incapable d'envoyer le moindre message texte, sans que rien ne le signale.

Désignez d'abord un autre numéro par défaut, ou envoyez {"sms_sender": false, "sms_sender_default": false} sur celui-ci, puis libérez-le.

POST/phone-numbers/:id/routing

Décider ce qui se passe quand aucun agent ne répond (messagerie vocale, transfert, ou raccrochage).

Définir les règles de routage

Remplace les règles de routage entrant sur un numéro de téléphone. Pour effacer les règles, utilisez PATCH /phone-numbers/{id} avec routing_rules: null.

Chemin & Requête

1
  • idstringrequis

    UUID du numéro de téléphone.

Corps de la requête

3
  • fallback_actionstringoptionnel

    Action quand aucun agent ne répond dans max_ring_seconds. L'un de voicemail, forward, ou hangup (par défaut).

  • fallback_numberstringoptionnel

    Numéro E.164 vers lequel transférer. Requis quand fallback_action est forward ; ignoré sinon.

  • max_ring_secondsintegeroptionnel

    Durée de sonnerie avant déclenchement du repli. Par défaut 30, plage 5–120.

Erreurs

2
404Numéro de téléphone introuvable

Aucun numéro de téléphone actif avec cet ID n'existe sur votre compte.

Vérifiez l'ID avec GET /phone-numbers.

422Configuration de routage invalide

fallback_action n'est pas l'une des trois valeurs autorisées, fallback_number est manquant quand fallback_action est forward, ou max_ring_seconds est hors de 5–120.

Respectez les contraintes des champs. Pour basculer depuis forward, envoyez le nouveau fallback_action sans fallback_number.