Documentation API Meetlane - v1.0
L'API Meetlane permet d'accéder aux fonctionnalités de la plateforme d'automatisation commerciale.
Introduction
L'API Meetlane permet d'accéder aux fonctionnalités de la plateforme d'automatisation commerciale. Cette API utilise une authentification par token et retourne des données au format JSON.
Format des Réponses :
Toutes les réponses de l'API suivent un format standardisé incluant un indicateur de succès.
Rate Limiting :
L'API est limitée à 100 requêtes par minute par utilisateur pour garantir la stabilité du service.
Limitations importantes :
Les agents en pause (status: paused) peuvent être consultés via l'API mais aucune action d'écriture n'est autorisée. Ces actions retourneront une erreur HTTP 403 avec le message "Agent paused".
Les agents annulés (status: cancelled) peuvent être consultés via l'API mais aucune action d'écriture n'est autorisée (ajout de contacts, validation d'emails/courriers, etc.). Ces actions retourneront une erreur HTTP 403 avec le message "Agent cancelled".
Terminologie et compatibilité :
Meetlane utilise le terme "agent" dans toute son API pour désigner un agent commercial IA.
Par compatibilité technique, l'alias campaign_filter est également accepté mais agent_filter est recommandé.
Si les deux paramètres sont fournis, agent_filter est prioritaire.
Authentification
L'API utilise l'authentification par clé API. Vous devez créer une clé API depuis votre espace utilisateur, et l'utiliser dans vos requêtes d'une des façons suivantes.
- Header Authorization :
Authorization: Bearer YOUR_API_KEY
- Paramètre URL :
?api_key=YOUR_API_KEY
Pour créer une clé API, rendez-vous sur votre espace puis dans la section "API", créez votre clé, et copiez la (elle ne sera affichée qu'une fois). Gardez votre clé API confidentielle et ne la partagez jamais publiquement.
Informations utilisateur
Récupère les informations de l'utilisateur connecté et la liste de ses agents (hors brouillons).
https://meetlane.ai/api/api/me
Exemple de requête
Exemple de réponse
Agents retournés :
- Seuls les agents publiés sont retournés (status != draft)
- Les brouillons ne sont pas inclus dans les résultats
Champs des agents :
internal_note: Note personnelle pour identifier l'agent (nullable, 20 caractères max)
is_active: true si status = "active"
Statuts d'agent disponibles :
active: Agent actif et opérationnel
paused: Agent en pause
setup: Agent en cours de configuration
inactive: Agent inactif
Liste des contacts
Récupère la liste des contacts avec pagination et filtres.
https://meetlane.ai/api/api/contacts
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| page | integer | Non | Numéro de page |
| per_page | integer | Non | Éléments par page (1-100) |
| search | string | Non | Recherche textuelle |
| status_filter | string | Non | Filtre par statut |
| source_filter | string | Non | Filtre par source |
| agent_filter | string | Non | ID hashé de l'agent (recommandé - alias campaign_filter accepté) |
| targeting_filter | string | Non | ID hashé du ciblage |
| sort_field | string | Non | Champ de tri |
| sort_direction | string | Non | Direction (asc/desc) |
| include_emails | boolean | Non | Inclure les emails |
| semantic_search | boolean | Non | Recherche par IA |
Exemple de requête
Exemple de réponse
Statuts disponibles :
enrich: Leads en enrichissement
contact: Leads enrichis, prêts pour génération
validation: En attente de validation
nurture: En nurturing actif
won: Convertis en clients
lost: Perdus
later: À recontacter
noanswer: Séquence terminée sans réponse
Champs additionnels :
relevance: Score de pertinence (0-10, nullable)
linkedin_url: URL du profil LinkedIn (nullable)
picture: URL de la photo de profil (nullable)
agent_targeting: Ciblage LinkedIn associé (nullable)
Propriétés de touchpoints :
has_touchpoint_email: Email envoyé au lead (boolean)
has_touchpoint_email_answer: Lead a répondu par email (boolean)
has_touchpoint_letter: Courrier livré au lead (boolean)
has_touchpoint_letter_flash: QR code flashé par le lead (boolean)
has_returned_letter: Courrier retourné (NPAI/PND) (boolean)
Ajouter un contact LinkedIn manuel
Ajoute un contact LinkedIn manuellement à un agent pour enrichissement automatique et envoi d'emails/courriers personnalisés.
https://meetlane.ai/api/api/campaigns/{agent_id}/contacts
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| agent_id | string | Oui | ID hashé de l'agent (doit être en mode linkedin_manual) |
Exemple de requête
Exemple de réponse
Type d'agent : LinkedIn manuel uniquement (leads_sub_source_type = linkedin_manual)
Limitation importante :
Cet endpoint fonctionne UNIQUEMENT pour les agents avec leads_sub_source_type = linkedin_manual.
Les agents avec ciblage automatique (linkedin_auto) retourneront une erreur 400 "Manual contact addition not allowed".
Vérification préalable recommandée :
Avant d'ajouter des contacts, utilisez GET /api/campaigns/{agent_id}/settings pour :
- Vérifier que
can_add_contactsest àtrue
- Récupérer la liste exacte des champs requis selon votre configuration
- Comprendre quels champs sont utilisés dans vos emails/lettres
Champs obligatoires :
linkedin_url: URL complète du profil LinkedIn (format: https://www.linkedin.com/in/nom-prenom)
Champs optionnels :
identifier: Identifiant unique (auto-généré si vide)
ai_context: Contexte personnalisé complémentaire (recommandé)
- Variables personnalisées selon la configuration de votre agent
Champ ai_context - Utilisation et fonctionnement :
Le champ ai_context est optionnel mais fortement recommandé. Voici comment il fonctionne :
1. Contexte automatique extrait du profil LinkedIn :
Meetlane extrait automatiquement du profil LinkedIn :
- Poste actuel et entreprise
- Parcours professionnel et expériences
- Compétences et domaines d'expertise
- Formation et diplômes
2. Votre contexte personnalisé (ai_context) :
Utilisez ce champ pour ajouter des informations spécifiques qui ne sont PAS sur le profil LinkedIn :
- Contexte de rencontre (événement, conférence, recommandation)
- Intérêts exprimés lors d'échanges directs
- Besoins spécifiques identifiés
- Notes de qualification commerciale
3. Fusion intelligente :
Votre contexte personnalisé sera fusionné avec les informations extraites du profil.
L'IA utilisera les deux sources pour générer des emails ultra-personnalisés.
Exemple concret :
Profil LinkedIn : "Directeur Marketing chez TechCorp, 10 ans d'expérience en SaaS B2B"
Votre ai_context : "Rencontré au salon BigData Paris, cherche solution d'automatisation"
Résultat : Email personnalisé mentionnant son poste + le contexte de rencontre + ses besoins
Gestion des crédits Meetlane :
Les contacts manuels LinkedIn consomment vos crédits contacts (leads_available_meetlane).
- Si crédits disponibles : Traitement immédiat (dans les 30 min)
- Si crédits insuffisants : Contacts ajoutés au sheet mais non traités
- Les contacts en attente seront traités automatiquement lors du prochain rechargement de crédits
Traitement asynchrone :
Le contact passe par plusieurs étapes automatiques :
- Ajout au sheet : Contact stocké avec vos informations (immédiat)
- Enrichissement LinkedIn : Extraction du profil toutes les 30 min via
all:leads-create-from-linkedin-manual-sheets
- Recherche d'adresse : Localisation de l'adresse postale si envoi de courrier configuré
- Création du Lead : Lead enrichi créé avec toutes les informations
- Génération des messages : Emails/courriers personnalisés générés selon votre configuration
Le délai total entre l'ajout via API et la prise de contact peut être de 30 minutes maximum.
Ajout en masse :
Pour ajouter plusieurs contacts :
- Effectuez une requête par contact
- Rate limit : 100 requêtes par minute par utilisateur
- Utilisez des identifiers uniques pour éviter les doublons
Champs dynamiques :
Si votre agent utilise des variables {custom} dans les emails/lettres, vous devez inclure les champs correspondants.
Utilisez GET /api/campaigns/{agent_id}/settings pour connaître tous les champs requis.
Gestion des erreurs de validation :
En cas d'erreur de validation (HTTP 422), la réponse inclut :
validation_errors: Objet avec chaque champ en erreur et son message explicite
missing_fields: Tableau des champs obligatoires manquants
invalid_fields: Tableau des champs présents mais invalides (format incorrect, etc.)
Exemple de réponse d'erreur :
{
"success": false,
"error": "Validation failed",
"message": "The provided contact data contains errors",
"validation_errors": {
"linkedin_url": "L'URL LinkedIn est obligatoire pour les campagnes LinkedIn"
},
"missing_fields": ["linkedin_url"],
"invalid_fields": []
}
Bloquer un contact
Bloque un contact et tous ses doublons, annule les contenus en attente et ajoute à la blocklist.
https://meetlane.ai/api/api/contacts/{leadId}/block
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| leadId | string | Oui | ID hashé du contact |
Exemple de requête
Exemple de réponse
Actions automatiques :
- Le contact et tous ses doublons (même email) sont bloqués
- L'email est ajouté à votre blocklist
- L'adresse postale est ajoutée à la blocklist si disponible
- Tous les emails en attente (réponses et followups) sont annulés
- Toutes les lettres en attente (avant génération) sont annulées
Retour :
duplicates_blocked: Nombre de doublons bloqués en plus du contact principal
emails_cancelled: Nombre d'emails annulés
letters_cancelled: Nombre de lettres annulées
Statistiques d'un agent
Récupère les statistiques de performance d'un agent.
https://meetlane.ai/api/api/agents/{agentId}/stats
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| agentId | string | Oui | ID hashé de l'agent |
| period | string | Non | Période d'analyse (7d, 14d, 30d, 60d, 90d, 120d, 180d, 365d) |
Exemple de requête
Exemple de réponse
Endpoints disponibles:
/api/agents/{agentId}/stats(recommandé pour Meetlane)
/api/campaigns/{agentId}/stats(alias fonctionnel pour compatibilité)
Liste des emails
Récupère les emails de tous vos agents.
https://meetlane.ai/api/api/emails
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| category | string | Non | Catégorie d'emails |
| page | integer | Non | Numéro de page |
| per_page | integer | Non | Éléments par page |
| search | string | Non | Recherche textuelle |
| semantic_search | boolean | Non | Recherche par IA |
| agent_filter | string | Non | ID hashé de l'agent (recommandé - alias campaign_filter accepté) |
Exemple de requête
Catégories disponibles :
received: Emails reçus
sent: Emails envoyés
to_handle: À traiter
interested: Prospects intéressés
not_interested: Non intéressés
neutral: Neutres
block: À bloquer
auto_reply: Réponses automatiques
antispam: Antispam
unattributed: Non attribués
Emails en attente de validation
Récupère la liste des emails de prise de contact en attente de validation.
https://meetlane.ai/api/api/emails/to-validate
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| page | integer | Non | Numéro de page |
| per_page | integer | Non | Éléments par page (1-100) |
| agent_filter | string | Non | ID hashé de l'agent (recommandé - alias campaign_filter accepté) |
Exemple de requête
Exemple de réponse
Réponses email à traiter
Récupère la liste des réponses email en attente de traitement.
https://meetlane.ai/api/api/emails/to-handle
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| page | integer | Non | Numéro de page |
| per_page | integer | Non | Éléments par page (1-100) |
| agent_filter | string | Non | ID hashé de l'agent (recommandé - alias campaign_filter accepté) |
Exemple de requête
Exemple de réponse
Valider une prise de contact
Valide une prise de contact email pour envoi automatique.
https://meetlane.ai/api/api/emails/validate/{leadId}
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| leadId | string | Oui | ID hashé du lead |
| custom_messages | object | Non | Messages personnalisés |
Exemple de requête
Exemple de réponse
Délai de carence :
Le lead sera validé définitivement après 60 minutes.
Pendant ce délai, vous pouvez encore le refuser.
Personnalisation optionnelle :
Vous pouvez modifier les messages personnalisés en passant un objet custom_messages.
Refuser une prise de contact
Refuse une prise de contact email.
https://meetlane.ai/api/api/emails/reject/{leadId}
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| leadId | string | Oui | ID hashé du lead |
Exemple de requête
Exemple de réponse
Délai de carence :
Le lead sera supprimé définitivement après 60 minutes.
Pendant ce délai, vous pouvez encore le valider.
Valider une réponse email
Valide ou modifie une réponse email générée par l'IA pour envoi automatique.
https://meetlane.ai/api/api/emails/validate-response/{emailId}
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| emailId | string | Oui | ID hashé de l'email reçu |
| content | string | Non | Contenu personnalisé de la réponse (optionnel) |
| cc | Non | Email en copie pour transfert (optionnel) |
Exemple de requête
Exemple de réponse
Paramètres optionnels :
- Si
contentn'est pas fourni, utilise la réponse IA existante
- Si
ccest fourni, le lead est automatiquement marqué comme gagné (status: won)
Statuts de réponse :
waiting: En attente d'envoi automatique
- La réponse sera envoyée par la commande
meetlane:emails-send-replies
Type de réponse :
ai_validated: Si la réponse IA est conservée
manual: Si le contenu a été modifié
Ignorer une réponse email
Ignore une réponse email générée par l'IA sans y répondre.
https://meetlane.ai/api/api/emails/skip-response/{emailId}
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| emailId | string | Oui | ID hashé de l'email reçu |
Exemple de requête
Exemple de réponse
Utilisation :
Marque l'email comme traité sans envoyer de réponse.
Utile pour les emails qui ne nécessitent pas de réponse (auto-reply, antispam, etc.).
Liste des courriers
Récupère les courriers de tous vos agents.
https://meetlane.ai/api/api/letters
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| category | string | Non | Catégorie de courriers |
| page | integer | Non | Numéro de page |
| per_page | integer | Non | Éléments par page (1-100) |
| search | string | Non | Recherche textuelle |
| agent_filter | string | Non | ID hashé de l'agent (recommandé - alias campaign_filter accepté) |
Exemple de requête
Exemple de réponse
Catégories disponibles :
to_validate: Courriers en attente de validation
validated: Courriers validés en attente d'envoi
rejected: Courriers refusés en attente de suppression
error: Courriers en erreur
insufficient_funds: Courriers en attente de crédits
in_preparation: Courriers en génération, impression ou attente d'envoi
transiting: Courriers en transit postal
delivered: Courriers délivrés
returned: Courriers retournés (NPAI/PND)
scanned: Courriers avec QR code flashé
not_scanned: Courriers avec QR code non flashé
Statuts disponibles :
validating: En attente de validation utilisateur
generating: En cours de génération des visuels
printing: En attente d'impression
sending: En attente d'envoi
transiting: En transit chez la poste
delivered: Livré
returned: Retourné (NPAI/PND)
cancelled: Annulé
error: Erreur technique
Courriers en attente de validation
Récupère la liste des courriers en attente de validation.
https://meetlane.ai/api/api/letters/to-validate
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| page | integer | Non | Numéro de page |
| per_page | integer | Non | Éléments par page (1-100) |
| agent_filter | string | Non | ID hashé de l'agent (recommandé - alias campaign_filter accepté) |
Exemple de requête
Exemple de réponse
Valider un courrier
Valide un courrier pour envoi automatique.
https://meetlane.ai/api/api/letters/validate/{letterId}
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| letterId | string | Oui | ID hashé du courrier |
| blocks | array | Non | Blocs de contenu personnalisés |
Exemple de requête
Exemple de réponse
Délai de carence :
Le courrier sera validé définitivement après 60 minutes.
Pendant ce délai, vous pouvez encore le refuser.
Personnalisation optionnelle :
Vous pouvez modifier les blocs de contenu en passant un tableau blocks.
Chaque bloc doit avoir un id et un content.
Refuser un courrier
Refuse un courrier.
https://meetlane.ai/api/api/letters/reject/{letterId}
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| letterId | string | Oui | ID hashé du courrier |
Exemple de requête
Exemple de réponse
Délai de carence :
Le courrier sera supprimé définitivement après 60 minutes.
Pendant ce délai, vous pouvez encore le valider.
Liste de blocage
Récupère la liste de blocage.
https://meetlane.ai/api/api/blocklist
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| type | string | Non | Type de blocage (email, domain, company, siren, address, all) |
| page | integer | Non | Numéro de page |
| per_page | integer | Non | Éléments par page |
Exemple de requête
Exemple de réponse
Types disponibles :
email: Adresse email exacte
domain: Nom de domaine
company: Nom d'entreprise (recherche approximative)
siren: Numéro SIREN (9 chiffres)
address: Identité complète (format: firstname_slug|lastname_slug|zip)
Note sur le type address :
Le type address utilise un format spécial pour bloquer une personne par son identité complète.
Format de la valeur : firstname_slug|lastname_slug|code_postal
Exemple : jean|dupont|75001
La slugification utilise Str::slug() avec locale 'fr' pour gérer les accents français.
Ajouter à la blocklist
Ajoute un élément à bloquer.
https://meetlane.ai/api/api/blocklist
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| type | string | Oui | Type (email, domain, company, siren, address) |
| value | string | Oui | Valeur à bloquer |
Exemple de requête
Exemple de réponse
Types supportés :
email: Adresse email complète (ex: spam@example.com)
domain: Nom de domaine (ex: competitor.com)
company: Nom d'entreprise (ex: Concurrent SARL)
siren: Numéro SIREN à 9 chiffres (ex: 123456789)
address: Identité complète au format firstname_slug|lastname_slug|zip (ex: jean|dupont|75001)
Validation automatique :
Le type est détecté automatiquement selon le format de la valeur.
Pour le type address, la valeur doit être pré-formatée avec les slugs.
Supprimer de la blocklist
Supprime un élément de la blocklist par ID ou par valeur.
https://meetlane.ai/api/api/blocklist
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| id | string | Non | ID hashé de l'élément à supprimer |
| value | string | Non | Valeur à débloquer (alternative à id) |
Exemple de requête
Exemple de réponse
Méthodes de suppression :
- Par ID : Utilisez le paramètre
idavec l'ID hashé récupéré depuis GET /api/blocklist
- Par valeur : Utilisez le paramètre
valueavec la valeur exacte
Note : Au moins un des deux paramètres (id ou value) doit être fourni. Si les deux sont fournis, id est prioritaire.
Historique des rendez-vous calendrier
Récupère l'historique des rendez-vous pris via la page de booking calendrier d'un agent.
https://meetlane.ai/api/api/agents/{agentId}/calendar-events
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| agentId | string | Oui | ID hashé de l'agent |
| page | integer | Non | Numéro de page |
| per_page | integer | Non | Éléments par page (1-50) |
Exemple de requête
Exemple de réponse
Endpoints disponibles :
/api/agents/{agentId}/calendar-events(recommandé pour Meetlane)
/api/campaigns/{campaignId}/calendar-events(alias fonctionnel pour compatibilité)
Statuts possibles :
success: Événement créé avec succès dans Google Calendar
failed: Échec de création dans Google Calendar (événement sauvegardé localement)
calendar_disconnected: Calendrier Google non connecté (événement sauvegardé localement)
Important :
Cet historique est un log local des réservations effectuées via la page de booking.
Il n'est pas synchronisé avec Google Calendar et sert uniquement de journal d'audit.
Webhooks
Les webhooks permettent de recevoir des notifications en temps réel des événements de vos agents Meetlane.
Configuration : Interface Meetlane > Paramètres > Webhooks
Webhooks disponibles :
- Filtrage par agent configurable
- Stockés dans votre compte utilisateur
- Configuration d'URL par type d'événement
Format général des webhooks : Chaque webhook est envoyé en POST avec le format JSON suivant :
Format général
Événements emails disponibles :
1. lead_ready_for_validation - Lead prêt à être validé
Déclenché lorsqu'un nouveau contact est prêt pour une prise de contact email.
Payload lead_ready_for_validation
2. new_email_received - Nouvel email important reçu
Déclenché lorsqu'un email nécessitant attention est reçu d'un prospect.
Payload new_email_received
3. opportunity_transferred - Opportunité commerciale détectée
Déclenché lorsque Meetlane détecte une opportunité commerciale à transférer.
Payload opportunity_transferred
4. lead_lost - Prospect perdu
Déclenché lorsque Meetlane détecte qu'un prospect n'est pas intéressé.
Payload lead_lost
5. lead_blocked - Lead bloqué automatiquement
Déclenché lorsqu'un lead est bloqué automatiquement (antispam, blocklist).
Payload lead_blocked
6. reply_sent - Réponse envoyée à un prospect
Déclenché lorsqu'une réponse (auto ou manuelle) est envoyée à un prospect.
Payload reply_sent
7. auto_reply_prepared - Réponse automatique préparée
Déclenché lorsque Meetlane prépare une réponse automatique en attente de validation.
Payload auto_reply_prepared
Événements courriers disponibles :
8. letter_ready_for_validation - Courrier prêt à être validé
Déclenché lorsqu'un courrier a été généré et attend validation.
Payload letter_ready_for_validation
9. letter_sent - Courrier envoyé au service postal
Déclenché lorsqu'un courrier validé est envoyé à l'impression et à la poste.
Payload letter_sent
10. letter_delivered - Courrier livré au destinataire
Déclenché lorsque le courrier est confirmé livré par La Poste.
Payload letter_delivered
11. letter_returned - Courrier retourné (NPAI/PND)
Déclenché lorsqu'un courrier est retourné par La Poste (adresse incorrecte).
Payload letter_returned
12. qr_code_scanned - QR code flashé sur un courrier
Déclenché lorsqu'un destinataire scanne le QR code sur un courrier.
Payload qr_code_scanned
13. new_calendar_event - Nouveau rendez-vous calendrier
Déclenché lorsqu'un rendez-vous est pris via la page de réservation calendrier.
Payload new_calendar_event
Statuts possibles :
success: Événement créé avec succès dans Google Calendarfailed: Échec de création dans Google Calendar (événement sauvegardé localement)calendar_disconnected: Calendrier Google non connecté (événement sauvegardé localement)