Démarrage rapide de l'API FirstSales
Générez une clé API et effectuez vos premiers appels — créez des contacts, inscrivez-les dans des campagnes et récupérez les réponses de la boîte de réception via l'API REST.
- 1
Générer une clé API développeur
Dans l'application, allez dans Settings → API et créez une clé API développeur. Définissez ses scopes et son niveau d'accès (lecture seule ou lecture-écriture) au minimum nécessaire pour votre intégration. Le secret n'est affiché qu'une seule fois — copiez-le immédiatement dans un gestionnaire de secrets ; l'application n'en conserve qu'une forme masquée.
Révoquez et régénérez la clé sur la même page si elle venait à fuiter.
- 2
Vérifier l'identité avec whoami
L'URL de base est
https://api.app.firstsales.io. L'authentification se fait par jeton Bearer. Commencez toujours par vérifier que la clé pointe bien vers l'organisation et le workspace attendus —GET /api/v1/whoami:curl https://api.app.firstsales.io/api/v1/whoami \ -H "Authorization: Bearer $FIRSTSALES_API_KEY" - 3
Trouver vos identifiants d'organisation et de workspace
Chaque ressource est rattachée à une organisation et à un workspace, donc la plupart des chemins ressemblent à
/api/v1/organizations/{orgId}/workspaces/{workspaceId}/…. Listez-les :# Organisations auxquelles vous avez accès curl https://api.app.firstsales.io/api/v1/organizations \ -H "Authorization: Bearer $FIRSTSALES_API_KEY" # Workspaces au sein d'une organisation curl https://api.app.firstsales.io/api/v1/organizations/ORG_ID/workspaces \ -H "Authorization: Bearer $FIRSTSALES_API_KEY" - 4
Créer un contact (de façon idempotente)
Envoyez un contact en POST dans un workspace. Passez un en-tête Idempotency-Key pour qu'une requête rejouée ne crée jamais de doublon — cela permet de la renvoyer sans risque en cas d'échec réseau.
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: jane-acme-2026-01" \ -d '{ "email": "jane@acme.com", "first_name": "Jane", "company_name": "Acme" }' - 5
Lire les analytics d'une campagne
Récupérez les métriques d'entonnoir et d'engagement d'une campagne pour synchroniser les résultats avec votre propre reporting — sans avoir à scraper le dashboard :
curl https://api.app.firstsales.io/api/v1/organizations/ORG_ID/workspaces/WS_ID/campaigns/CAMPAIGN_ID/analytics \ -H "Authorization: Bearer $FIRSTSALES_API_KEY" - 6
Lire les réponses depuis l'inbox
Listez les threads de l'inbox pour récupérer envois, ouvertures, réponses et bounces dans vos systèmes. Le corps des messages est masqué dans la vue liste ; récupérez un thread individuel pour le détail. C'est ainsi que vous pouvez router les réponses positives vers un CRM en attendant l'arrivée des connecteurs natifs.
curl https://api.app.firstsales.io/api/v1/organizations/ORG_ID/workspaces/WS_ID/inbox/threads \ -H "Authorization: Bearer $FIRSTSALES_API_KEY" - 7
Rester dans le périmètre public
L'API n'expose que le périmètre public
/api/v1. N'appelez pas les routes privées de l'application, les callbacks des fournisseurs, les pixels de tracking, les gestionnaires de désabonnement ou les routes cron internes — ils ne font pas partie du contrat et casseront. Si un appel renvoieunsupported_operation, arrêtez-vous et considérez que c'est « non disponible via l'API », pas quelque chose à contourner.Les codes de statut standards s'appliquent :
401clé invalide/révoquée,422erreur de validation (le corps précise le champ),429limite de débit atteinte (patientez puis réessayez).
Astuces de pro
Des raccourcis chèrement acquis pour garder le préchauffage sur la bonne voie.
whoami avant d'écrire
Vérifiez que la clé pointe vers l'organisation/le workspace visé avant tout appel mutateur. Une clé rattachée au mauvais workspace est la cause la plus fréquente d'écriture de données au mauvais endroit.
Envoyez toujours une Idempotency-Key sur les créations
Les tentatives réseau se produisent. Une Idempotency-Key transforme un POST rejoué en no-op plutôt qu'en contact dupliqué ou en double facturation.
Stockez la clé une seule fois, ne l'affichez jamais
Le secret n'est affiché qu'une fois et stocké sous forme masquée. Placez-le directement dans un gestionnaire de secrets ; ne le loggez jamais, ne le commitez jamais, ne l'expédiez jamais dans un bundle client.
Traitez unsupported_operation comme un arrêt strict
Si l'API renvoie unsupported_operation, ce que vous voulez faire n'est pas dans le contrat public. N'utilisez pas de routes privées de l'application pour forcer le passage — signalez la limitation.
Questions fréquentes
Où puis-je obtenir une clé API ?
Settings → API. Créez une clé API développeur avec les scopes et le niveau d'accès dont vous avez besoin ; elle n'est affichée qu'une fois, copiez-la donc immédiatement. Révoquez-la et régénérez-en une sur la même page si elle a été exposée.
Quels sont l'URL de base et l'authentification ?
URL de base https://api.app.firstsales.io ; authentifiez-vous avec Authorization: Bearer $FIRSTSALES_API_KEY et envoyez du JSON. Commencez par GET /api/v1/whoami pour confirmer le contexte.
Pourquoi les chemins sont-ils aussi longs ?
Les ressources sont rattachées à une organisation et à un workspace, donc les chemins sont de la forme /api/v1/organizations/{orgId}/workspaces/{workspaceId}/…. Récupérez les identifiants via /api/v1/organizations et sa sous-ressource /workspaces (ou via whoami).
Comment éviter les écritures en double ?
Envoyez un en-tête Idempotency-Key sur les requêtes de création. Une requête rejouée avec la même clé renvoie le résultat original au lieu de créer un second enregistrement — sans risque après un timeout.
Puis-je lire les métriques de campagne et les réponses ?
Oui — GET …/campaigns/{id}/analytics pour l'entonnoir/l'engagement, et GET …/inbox/threads pour l'activité des conversations. Le corps des messages est masqué dans la liste ; récupérez un thread individuel pour le détail complet.
Existe-t-il une intégration Zapier ou CRM à la place ?
Il n'y a pas de connecteur Zapier, et les connecteurs CRM natifs (Salesforce, HubSpot, Pipedrive) ne sont pas encore disponibles. En attendant, l'API REST — ou le CLI — reste le moyen pris en charge pour intégrer et synchroniser.
Que signifie unsupported_operation ?
L'action demandée ne fait pas partie du contrat public /api/v1. Arrêtez-vous et signalez-le — n'appelez pas les routes privées de l'application, les callbacks, les pixels ou les endpoints internes pour contourner cette limite ; ils ne sont pas pris en charge et casseront.
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 $