> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bookivox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Intégration : Resend

> Connectez Resend à Bookivox pour que vos agents envoient un e-mail depuis votre propre domaine pendant l'appel.

## À quoi ça sert

L'intégration **Resend** permet à vos agents d'**envoyer un e-mail** depuis votre
propre domaine vérifié, pendant l'appel. L'agent rédige l'objet et le corps ; le
**destinataire** est fourni par le client au moment de l'appel.

Comme pour les autres intégrations, vous branchez **votre propre compte** :
Bookivox ne fournit aucun identifiant. Vous créez une **clé API** dans Resend,
vous indiquez l'**adresse expéditrice** et le **nom affiché**, puis vous cochez
l'action à exposer.

> [!NOTE]
>
> L'**expéditeur est figé** dans la connexion : une fois la clé enregistrée, l'agent
> ne peut pas envoyer depuis une autre adresse. Seuls le destinataire, l'objet et
> le corps varient d'un appel à l'autre.

## Ce qu'il faut préparer

| Élément | D'où il vient | Format attendu |
| - | - | - |
| **Clé API** | Resend : **API Keys → Create API Key**, avec l'accès **Full access** | Chaîne commençant par `re_`, affichée une seule fois |
| **Domaine vérifié** | Resend : **Domains**, avec les enregistrements DNS validés | Le domaine de l'adresse expéditrice doit être **vérifié** |
| **E-mail expéditeur** | Votre choix, sur le domaine vérifié | Adresse simple, ex. `contact@votre-domaine.fr` |
| **Nom affiché** | Votre choix | Nom que le destinataire voit à côté de l'adresse, ex. `Cabinet Martin` |

> [!NOTE]
>
> Resend refuse la vérification de connexion aux clés **limitées à l'envoi**
> (`sending_access`) : elles répondent `401` sur les endpoints de lecture. Créez
> donc une clé **Full access** pour cette intégration.

## Connecter Resend

**1. Créer la clé API**

Dans Resend, ouvrez **API Keys → Create API Key** et choisissez l'accès
**Full access**.

**2. Vérifier le domaine**

Dans **Domains**, ajoutez votre domaine et validez les enregistrements DNS.
Attendez que le domaine passe en **Verified**.

**3. Saisir la clé et l'expéditeur**

Dans **Intégrations → Resend**, collez la clé, l'e-mail expéditeur et le nom
affiché. Le formulaire vérifie le préfixe `re_` et le format de l'adresse.

**4. Cocher l'action**

Sélectionnez **Envoyer un e-mail**. Elle devient un **outil indépendant**.

**5. Vérifier la connexion**

Cliquez sur **Créer les outils**. Bookivox interroge `GET /domains` avec votre
clé : un bandeau **vert** confirme la création, une erreur est affichée sinon.
La clé disparaît du formulaire : elle reste chiffrée et n'est plus réaffichée.

**6. Attacher l'outil**

Rattachez l'outil à un nœud agent. Il s'exécute **pendant l'appel**.

## Ce que l'agent peut faire

| Action | Usage | Exemple de demande |
| - | - | - |
| **Envoyer un e-mail** (`send_email`) | Envoie un e-mail HTML et texte depuis l'adresse enregistrée | « Envoyez-moi le récapitulatif par e-mail. » |

L'agent fournit `to`, `subject`, `html` et, s'il le souhaite, `text`. L'expéditeur
n'est **jamais** un paramètre : il est injecté par la credential.

## Cas d'usage

| Cas d'usage | Ce que fait l'agent | Résultat pour le client |
| - | - | - |
| **Confirmer un rendez-vous par écrit** | L'agent appelle `send_email` avec `to`, `subject` et `html`. | Le client reçoit la confirmation pendant l'appel, à l'adresse qu'il vient de dicter. |
| **Envoyer un récapitulatif de commande** | L'agent appelle `send_email` avec le détail en `html` et une version `text`. | Le client garde une trace lisible, même sur un client mail qui bloque le HTML. |
| **Transmettre les prérequis d'un rendez-vous** | L'agent appelle `send_email` avec les documents et consignes en `html`. | Le client arrive préparé, ce qui réduit les rappels. |
| **Mettre un collaborateur en copie** | L'agent envoie une seconde fois le même contenu à l'adresse d'un tiers indiqué par le client. | L'information circule sans que le client ait à transférer l'e-mail. |

## Comment ça marche

1. Bookivox crée une **credential** `custom_header` contenant l'en-tête
   `Authorization: Bearer re_…` et un champ de corps `from` égal à
   `Nom <adresse>`.
2. À chaque appel, le champ `from` de la credential **écrase** les arguments
   produits par le modèle : aucun autre expéditeur n'est possible.
3. La requête part vers l'URL fixe `https://api.resend.com/emails` en `POST`,
   avec un **timeout de 10 000 ms**.
4. Un **outil `http_api`** est créé avec `config.provider = "resend"` et
   `config.operation = "send_email"`.
5. Resend renvoie un identifiant d'e-mail (`{ "id": "…" }`) que l'outil restitue
   à l'agent.

## Rédiger la description de l'outil

La description décide **quand** l'agent envoie l'e-mail. Rédigez-la comme une
consigne :

```
Utiliser cet outil quand le client demande à recevoir un récapitulatif
ou une confirmation par e-mail. Toujours demander l'adresse du destinataire
avant l'envoi et confirmer à voix haute.
```

> [!WARNING]
>
> Un envoi d'e-mail est **irréversible**. Précisez dans le prompt de l'agent qu'il
> doit **relire l'adresse du destinataire** avant d'appeler l'outil.

## Sécurité

| Risque | Ce que fait le preset |
| - | - |
| **Clé exposée** | Elle vit dans une **credential** chiffrée, jamais dans la définition de l'outil ni dans un prompt. Elle n'est jamais réaffichée. |
| **Usurpation d'expéditeur** | `from` est figé dans la credential et **écrase** toujours les arguments du modèle. |
| **Injection d'en-tête** | Le nom affiché refuse les chevrons, guillemets, barres obliques inverses, accolades et retours à la ligne : impossible d'ajouter une seconde adresse. |
| **Mauvais domaine** | L'URL est figée sur `https://api.resend.com` : l'outil ne peut pas viser un autre service. |
| **Clé trop large** | Une clé limitée à l'envoi ne peut pas lire les domaines ; l'intégration exige explicitement une clé **Full access**. |
| **Erreur silencieuse** | La connexion est **testée avant validation** : aucune intégration n'est créée tant que Resend ne répond pas correctement. |

> [!WARNING]
>
> **Créez une clé dédiée à Bookivox** et **révoquez-la** en cas de doute depuis
> Resend. Une clé partagée avec un autre usage ne peut pas être révoquée sans
> interrompre cet autre usage.

## Ce qui est déconseillé

| Usage | Pourquoi |
| - | - |
| **Clé limitée à l'envoi** | Elle répond `401` au test de connexion : l'intégration ne peut pas être validée. |
| **Domaine non vérifié** | Resend refuse l'envoi (`403`) tant que le domaine n'est pas validé. |
| **Adresse expéditrice hors domaine** | Resend refuse une adresse qui n'appartient pas à un domaine vérifié. |
| **Nom avec chevrons ou guillemets** | Le formulaire le refuse : ces caractères permettraient de réécrire l'en-tête `from`. |
| **Envoi sans confirmation** | L'e-mail est irréversible : faites relire l'adresse au client. |
| **Tâches planifiées** | Un outil d'agent s'exécute **pendant l'appel**, pas en tâche de fond. |

## Limites et dépannage

| Symptôme | Cause probable | Correction |
| - | - | - |
| Erreur `401` | Clé erronée, révoquée, ou clé `sending_access`. | Recréer une clé **Full access** et recréer la connexion. |
| Erreur `403` | Domaine non vérifié ou non possédé. | Valider les DNS du domaine dans Resend. |
| Erreur `422` | Corps malformé : `to`, `subject` ou `html` manquant. | Vérifier les paramètres produits par l'agent. |
| Erreur `429` | Trop de requêtes. | Espacer les envois ; Resend applique ses propres quotas. |
| Erreur `5xx` | Incident côté Resend. | Réessayer plus tard ; contacter Resend si cela dure. |
| « Clé invalide » | La valeur ne commence pas par `re_`, ou un espace a été collé. | Recopier la valeur brute, sans espace. |
| Le test de connexion échoue | Clé limitée à l'envoi. | Utiliser une clé **Full access**. |
| L'agent répond « de tête » | L'outil n'est pas attaché à l'agent, ou il est inactif. | L'activer et l'attacher au nœud agent. |

> [card] [Intégrations](https://docs.bookivox.com/integrations/overview.md)
>
> Toutes les intégrations et les catégories d'outils.

> [card] [API HTTP](https://docs.bookivox.com/integrations/http-api.md)
>
> Comprendre les outils HTTP : paramètres, presets, credentials.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.