[email protected] · Assistance 24/7 pour les clients sous contrat

Du code JavaScript affiché sur un écran sombre, coloration syntaxique bleue et orange, vu de trois quarts.
REST, webhooks, WebRTC

Développeurs

Tout ce que fait la console, l’API le fait aussi.

Une API publique versionnée, des événements en temps réel et des webhooks signés. Ce n’est pas une couche marketing par-dessus un produit fermé : la console d’administration Konvoice consomme exactement ces mêmes points d’accès.

Principes

Quatre engagements qui comptent plus que la liste des points d’accès.

Versionnée

/api/v1/ est stable. Une rupture entraîne une nouvelle version majeure, jamais une modification silencieuse. L’ancienne version reste servie douze mois au minimum.

Traçable

Chaque requête porte un identifiant de corrélation que vous retrouvez dans nos journaux et dans votre journal d’audit. Un ticket de support commence par ce numéro.

Idempotente

Toute écriture accepte une clé d’idempotence. Rejouer une requête après un délai réseau ne crée pas un second utilisateur ni un second appel.

Cloisonnée

Un jeton appartient à une entreprise et porte des portées explicites. Il ne peut rien lire au-delà, et une portée en lecture ne devient jamais une écriture.

REST

Créer un utilisateur avec son poste.

Une seule requête crée la personne, son poste, ses identifiants d’appareil et déclenche le provisionnement de son téléphone.

Référence complète

POST /api/v1/users HTTP/1.1
Host: api.konvoice.io
Authorization: Bearer kv_live_…
Idempotency-Key: 4f1c-9a02-b7

{
  "display_name": "Amadou Diallo",
  "email": "[email protected]",
  "site_id": "site_lyon",
  "extension": "203",
  "role": "agent",
  "devices": [
    { "type": "deskphone", "mac": "805e0c1a2b3c" },
    { "type": "mobile" },
    { "type": "web" }
  ],
  "teams": ["support"]
}
Deux écrans sombres couverts de code dans une pièce peu éclairée, une personne de dos devant eux. Le bac à sable

Avant la production

Des numéros qui répondent faux, exprès.

Le pire environnement de test d’une intégration téléphonique est un collègue qu’on appelle vingt fois. Le bac à sable fournit des numéros dont le comportement est prévisible — décroché, non-réponse, occupation, messagerie, échec opérateur — et vos tests cessent de dépendre de quelqu’un.

  • Des scénarios déterministes — un numéro par issue, toujours la même.
  • De vrais webhooks — signés, rejouables, avec le même format qu’en production.
  • Un identifiant de corrélation sur chaque requête, que le support retrouve dans nos journaux.
  • Aucun appel facturé — le bac à sable ne consomme rien.

Événements

Ce qui se passe, au moment où cela se passe.

Les événements sont diffusés par webhook signé et par flux temps réel. Les deux transportent la même charge utile, avec la même garantie de livraison au moins une fois.

ÉvénementQuandUsage courant
call.ringingUn appel commence à sonnerAfficher la fiche client avant le décroché
call.answeredQuelqu’un a décrochéDémarrer un chronomètre, ouvrir un ticket
call.endedL’appel est terminéÉcrire l’activité dans le CRM
call.missedPersonne n’a réponduCréer une tâche de rappel
recording.readyL’enregistrement est disponibleArchiver dans votre propre stockage
transcript.readyLa transcription et le résumé sont produitsAlimenter votre outil d’analyse
voicemail.receivedUn message vocal est déposéNotifier une équipe
device.registeredUn téléphone s’enregistreSuperviser le parc
site.link_lostUn site passe en autonomie localeAlerter votre supervision réseau
site.link_restoredLa liaison d’un site est rétablieClore l’alerte, vérifier la file de synchronisation
fraud.route_blockedUne route a été coupée par le moteur anti-fraudeRéveiller quelqu’un

Webhooks

Signés, horodatés, rejoués.

Vérifiez la signature avant de traiter la charge utile. L’horodatage protège du rejeu, la clé d’idempotence protège des doublons quand nous réessayons.

  • Signature HMAC-SHA256 sur le corps brut, avec un secret par point de livraison.
  • Réessais avec attente croissante pendant 24 heures, puis file d’échec consultable.
  • Refusez un horodatage plus vieux que cinq minutes : c’est un rejeu.
  • Répondez 2xx rapidement et traitez en arrière-plan ; nous coupons à 10 secondes.
POST /votre-endpoint HTTP/1.1
Konvoice-Signature: t=1743158400,
  v1=8c1f…d40a
Konvoice-Event-Id: evt_01HZ…
Konvoice-Delivery: 1

{
  "type": "call.ended",
  "created_at": "2026-03-28T09:20:00Z",
  "tenant_id": "ten_8f3c",
  "data": {
    "call_id": "call_01HZ…",
    "direction": "inbound",
    "from": "+33478XXXXXX",
    "to": "+33472XXXXXX",
    "extension": "203",
    "duration_s": 214,
    "disposition": "answered",
    "site_id": "site_lyon",
    "handled_locally": true
  }
}
Deux écrans sombres couverts de code dans une pièce peu éclairée, une personne de dos devant eux.

Nos propres écrans ne consomment que cette API. C’est la seule garantie sérieuse qu’elle restera complète.

Le jour où il lui manque quelque chose, notre application s’arrête aussi

Environnement de test

Développez sans appeler de vrais clients.

Un environnement séparé, avec ses propres jetons, ses numéros de test et un jeu d’appels simulables à la demande.

Numéros de test

Des numéros qui répondent avec un scénario prévisible : décroché, non-réponse, occupation, message vocal, échec opérateur. Vos tests automatisés cessent de dépendre d’un collègue.

Événements déclenchables

Émettez n’importe quel événement de la liste depuis la console, y compris la perte de liaison d’un site, pour vérifier que votre intégration réagit correctement.

Journal des livraisons

Chaque webhook envoyé, sa réponse, son délai et ses réessais. Le rejeu manuel d’une livraison se fait d’un bouton.

Questions développeur

Y a-t-il des limites de débit ?
Oui, par jeton et par entreprise, avec des en-têtes indiquant votre quota restant et la date de réinitialisation. Les limites sont généreuses pour un usage normal et négociables pour une migration en masse — prévenez-nous avant d’importer dix mille contacts.
Fournissez-vous une spécification OpenAPI ?
Oui, publiée avec chaque version et servant à générer nos propres clients. C’est la même spécification que celle utilisée en interne, pas une version simplifiée pour l’extérieur.
Peut-on contrôler les appels en temps réel ?
Oui : passer un appel, transférer, mettre en attente, raccrocher, injecter un message. Les actions de contrôle sont soumises aux mêmes portées que le reste, et un jeton en lecture ne peut pas raccrocher un appel.
L’API est-elle disponible sur un site hors ligne ?
Une API locale de secours est servie par le Konvoice Edge pendant une coupure, avec un sous-ensemble des points d’accès : lecture de l’annuaire, état des postes, journal local. Les écritures de configuration restent réservées au cloud pour éviter deux sources de vérité.

Un accès de test, gratuitement.

Dites-nous ce que vous voulez construire. Nous ouvrons un environnement avec des numéros de test et nous restons joignables pendant votre intégration.

Sans engagement. Aucun numéro de carte demandé.