- 1
Deux façons de connecter Gemini
Si votre environnement Gemini (par exemple la CLI Gemini avec accès shell) peut exécuter npm, installez
@firstsales.io/cliet exposez-la comme outil — elle gère l'authentification, le JSON et l'idempotence. Si Gemini fonctionne uniquement via API, appelez la Developer API de FirstSales en HTTPS depuis vos implémentations de fonction/outil. La documentation classe Gemini par défaut parmi les agents API-first. - 2
Stockez la clé en dehors du modèle
Créez une clé Developer API dans Settings → API et conservez-la dans la configuration côté serveur de votre application sous
FIRSTSALES_API_KEY. Gemini doit appeler un tool/function qui lit la clé côté serveur — le modèle lui-même ne doit jamais voir ni émettre la clé brute.FIRSTSALES_API_KEY=fs-key-... FIRSTSALES_BASE_URL=https://api.app.firstsales.io - 3
Définissez des outils restreints, pas une échappatoire HTTP brute
Donnez à Gemini un petit ensemble de fonctions dédiées —
whoami,list_contacts,create_contact,campaign_analytics— chacune correspondant à un seul endpoint public. Cela maintient le modèle sur la surface prise en charge au lieu de le laisser construire des URL arbitraires.# what each tool calls under the hood GET /api/v1/whoami GET /api/v1/organizations/{org}/workspaces/{ws}/contacts POST /api/v1/organizations/{org}/workspaces/{ws}/contacts # Idempotency-Key GET /api/v1/organizations/{org}/workspaces/{ws}/campaigns/{id}/analytics - 4
Vérifiez l'identité dès le premier appel d'outil
Demandez à l'agent d'appeler
whoamiavant toute écriture afin qu'il confirme le contexte de l'org et du workspace :curl https://api.app.firstsales.io/api/v1/whoami \ -H "Authorization: Bearer $FIRSTSALES_API_KEY" - 5
Écrivez de façon idempotente depuis votre outil de création
Votre outil
create_contactdoit toujours attacher unIdempotency-Keyafin qu'un appel de fonction rejoué ne puisse pas créer un doublon :curl -X POST \ https://api.app.firstsales.io/api/v1/organizations/ORG_ID/workspaces/WS_ID/contacts \ -H "Authorization: Bearer $FIRSTSALES_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: gemini-lead-2026-01" \ -d '{"email":"lead@acme.com","first_name":"Sam"}' - 6
Gérez les erreurs et restez sur la surface publique
Dans chaque outil, gérez le
401(clé invalide/révoquée), le422(validation — remontez le champ concerné) et le429(patientez, puis réessayez). Surunsupported_operation, renvoyez la limitation au modèle et arrêtez-vous — ne laissez jamais Gemini scraper l'application ou accéder à des routes privées, des callbacks, des pixels ou des endpoints cron.
Astuces de pro
Des raccourcis chèrement acquis pour garder le préchauffage sur la bonne voie.
Encapsulez les endpoints en outils restreints
Ne donnez pas à Gemini une fonction générique « appeler n'importe quelle URL ». Des outils dédiés (create_contact, campaign_analytics) maintiennent le modèle sur la surface publique et rendent ses actions auditables.
Le modèle ne touche jamais la clé
Lisez FIRSTSALES_API_KEY côté serveur, à l'intérieur de l'outil. Si la clé peut apparaître dans le contexte ou la sortie du modèle, elle peut fuiter dans les logs.
whoami comme premier appel de fonction
Faites de la vérification d'identité le tout premier geste, afin que Gemini confirme toujours l'org/le workspace avant d'écrire.
Shell disponible ? La CLI demande moins de code
Si la CLI Gemini dispose d'un shell et de npm, appeler firstsales en ligne de commande est plus simple que de coder des outils HTTP à la main — l'authentification, le JSON, l'idempotence et la confirmation de suppression sont inclus.
Questions fréquentes
Gemini utilise-t-il la CLI ou l'API ?
Par défaut la Developer API, encapsulée sous forme de fonctions/outils. Si votre environnement Gemini dispose d'un accès shell avec npm, la CLI est une alternative demandant moins d'effort, qui gère l'authentification et l'idempotence pour vous.
Comment garder la clé à l'écart du modèle ?
Stockez FIRSTSALES_API_KEY dans la configuration côté serveur et lisez-la à l'intérieur de l'implémentation de l'outil. Le modèle appelle l'outil ; il ne voit ni n'émet jamais la clé brute.
Comment structurer les outils ?
Sous forme de fonctions restreintes, à usage unique — une par endpoint public (whoami, liste/création de contact, campaign analytics). Évitez un outil générique « récupérer n'importe quelle URL » qui laisserait le modèle sortir de la surface prise en charge.
Comment éviter les écritures en double ?
Attachez un en-tête Idempotency-Key à l'intérieur de votre outil de création. Un appel de fonction rejoué avec la même clé renvoie le résultat original au lieu de créer un doublon.
Qu'est-ce qui est interdit ?
Les routes privées de l'application, les callbacks des fournisseurs, les pixels de suivi, les gestionnaires de désabonnement, les endpoints cron internes, et le scraping de l'interface. Restez sur /api/v1 public ; arrêtez-vous sur unsupported_operation.
Prêt à passer à la pratique ?
Démarrez votre essai FirstSales et lancez une boîte mail préchauffée et authentifiée en quelques minutes.
Commencer pour 1 $