Offre de lancement : Premier mois à 98€ au lieu de 179€. Limité aux 100 premiers clients ! Code FIRST100

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).

GET 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.

GET 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.

POST 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 :

  1. Vérifier que can_add_contacts est à true
  1. Récupérer la liste exacte des champs requis selon votre configuration
  1. 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 :

  1. Ajout au sheet : Contact stocké avec vos informations (immédiat)
  1. Enrichissement LinkedIn : Extraction du profil toutes les 30 min via all:leads-create-from-linkedin-manual-sheets
  1. Recherche d'adresse : Localisation de l'adresse postale si envoi de courrier configuré
  1. Création du Lead : Lead enrichi créé avec toutes les informations
  1. 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.

DELETE 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.

GET 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.

GET 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.

GET 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.

GET 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.

POST 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.

POST 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.

POST 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 email Non Email en copie pour transfert (optionnel)

Exemple de requête

Exemple de réponse

Paramètres optionnels :

  • Si content n'est pas fourni, utilise la réponse IA existante
  • Si cc est 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.

POST 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.

GET 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.

GET 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.

POST 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.

POST 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.

GET 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.

POST 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.

DELETE 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 id avec l'ID hashé récupéré depuis GET /api/blocklist
  • Par valeur : Utilisez le paramètre value avec 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.

GET 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 Calendar
  • failed : Échec de création dans Google Calendar (événement sauvegardé localement)
  • calendar_disconnected : Calendrier Google non connecté (événement sauvegardé localement)
Manuscry Courriers intelligents boostés à l'IA, pour vendre et fidéliser
Découvrir