Connectez une API avec HTTP Request

Au chapitre précédent, vous avez normalisé les tickets provenant de trois canaux. Vous disposez maintenant d'un ticket propre avec, entre autres, un champout_customer_email. Pour chaque ticket entrant, vous allez interroger HubSpot afin de savoir qui est ce client (son plan tarifaire, son entreprise, sa date d'inscription).

Lisez une documentation d'API pour prĂ©parer votre requĂȘte

Avant de brancher quoi que ce soit dans n8n, vous devez comprendre ce que vous allez appeler.

Quand vous ouvrez une documentation pour la premiĂšre fois, cherchez quatre informations :

  1. L'adresse (l'endpoint) : l'URL Ă  appeler, par exemplehttps://api.hubapi.com/crm/2026-03contacts.

  2. La méthode HTTP : ce que vous voulez faire (GETpour lire des données,POSTpour en créer,PATCHpour en modifier).

  3. Les paramĂštres : les informations Ă  transmettre (un email, un identifiant, des filtres).

  4. L'authentification : ce qui prouve que vous avez le droit d'appeler ce service.

Dans notre cas, l'API HubSpot propose un endpoint de recherche de contacts par email. Vous lui transmettez l'email du ticket (out_customer_email), et elle vous renvoie la fiche du contact correspondant, si elle existe.

Récapitulons tout cela en vidéo :

Authentifiez-vous auprĂšs d'une API avec les credentials n8n

Pour appeler un service externe, vous devez prouver que vous en avez l'autorisation. Il existe deux mécanismes courants :

  1. La clĂ© d'API (API Key / Token) : un code secret que vous transmettez Ă  chaque appel, souvent dans un en-tĂȘte HTTP (Authorization: Bearer votre_token). C'est le mĂ©canisme utilisĂ© par HubSpot avec les Private App tokens.

  2. OAuth 2.0 : un protocole plus complexe qui permet Ă  un utilisateur de vous autoriser sans jamais vous communiquer son mot de passe. Vous le rencontrerez surtout avec Google, Slack, ou Microsoft.

Pour HubSpot, vous allez créer une Private App dans votre compte sandbox et récupérer un token d'accÚs.

Structurez une requĂȘte HTTP dynamique dans n8n

Une fois votre credential créé, vous pouvez configurer le nƓud HTTP Request. Pour chercher un contact dans HubSpot Ă  partir de son email, configurez le nƓud comme suit :

  • Method :POST

  • URL :https://api.hubapi.com/crm/v3/objects/contacts/search

  • Authentication : sĂ©lectionnez votre credential HubSpot

  • Body (JSON) : transmettez un objet de recherche qui utiliseout_customer_emailcomme valeur de filtre, et listez uniquement les propriĂ©tĂ©s dont vous avez besoin (firstname,lastname,company,plan,createdate).

C'est le champvaluedu filtre qui rend la requĂȘte dynamique : Ă  chaque ticket entrant, n8n y injecte l'email du ticket avant d'envoyer l'appel. Sans cette injection, vous appelleriez toujours HubSpot avec le mĂȘme email en dur (ce qui ne servirait Ă  rien).

Maintenant, voyons ça directement en image :

Interprétez les codes HTTP pour réagir au bon moment

Chaque réponse d'une API est accompagnée d'un code numérique qui indique si l'appel a réussi ou non. Voici les familles à connaßtre :

Code

Signification

Que faire ?

2xx

SuccĂšs (  200  OK,  201  Créé )

Continuer le traitement normalement

400

RequĂȘte mal formĂ©e

Vérifier le corps ou les paramÚtres envoyés

401  /  403

Authentification refusée

Vérifier le token (relancer ne servira à rien)

404

Ressource introuvable

Le contact n'existe pas dans HubSpot ; prévoir une branche de secours

429

Trop de requĂȘtes (rate limit)

Attendre avant de relancer

5xx

Erreur cÎté serveur

Le service est indisponible ; relancer aprÚs un délai

Ces codes vont devenir votre boussole dans la partie 2 de ce cours, au chapitre “GĂ©rez les erreurs, les retries et les cas limites”, quand vous mettrez en place la gestion des erreurs.

Parsez la réponse JSON pour n'extraire que les champs utiles

HubSpot vous renvoie un objet JSON qui peut contenir de nombreux champs. Pour notre pipeline, vous n'avez besoin que de quelques informations : le prénom, le nom, l'entreprise, le plan et la date de création du compte.

La réponse de l'API ressemble à ceci :

{
  "results": [{
    "id": "12345",
    "properties": {
      "firstname": "Marie",
      "lastname": "Dupont",
      "company": "Acme SaaS",
      "plan": "Pro",
      "createdate": "2023-04-12T08:30:00Z"
    }
  }]
}

Pour accéder au prénom dans une expression n8n, vous écrirez :{$json.results[0].properties.firstname}.

AprĂšs le nƓud HTTP Request, ajoutez un nƓud Edit Fields pour renommer ces donnĂ©es en suivant votre convention de nommage :

  • out_client_name← prĂ©nom + nom concatĂ©nĂ©s

  • out_client_company←results[0].properties.company

  • out_client_plan←results[0].properties.plan

  • out_client_since←results[0].properties.createdate

À vous de jouer !

Consigne

Revenons Ă  notre projet de workflow pour AgroTech !

Reprenez le pipeline construit lors de l'exercice du chapitre précédent (relevés normalisés avec out_device_email)  . Ajoutez une étape qui :

  1. Interroge l'API HubSpot avec l'email/identifiant du capteur ou du responsable (  out_device_email  ) pour retrouver la fiche de l'exploitation agricole.

  2. Extrait les informations utiles : nom de l'exploitant, nom de la ferme/exploitation, type de culture/abonnement, date d'enregistrement du capteur/compte.

  3. Enrichit le relevé avec ces informations, en suivant la convention  out_farm_*  pour les nouveaux champs.

  • out_farm_owner  : prĂ©nom + nom du responsable (ou null si introuvable)

  • out_farm_name  : nom de l'exploitation / ferme (ou null)

  • out_farm_crop_type  : type de culture ou formule (ex: "Viticulture Premium", "MaraĂźchage Bio") (ou null)

  • out_farm_registered_since  : date d'enregistrement au format ISO (ou null)

  • Tous les champs  out_*  du chapitre prĂ©cĂ©dent (  out_source  ,  out_subject  ,  out_message  ,  out_device_email  ,  out_priority  ,  out_created_at  ) sont conservĂ©s.

Contrainte : Si aucun contact/exploitation n'est trouvé(e) dans HubSpot pour cet email, tous les champs  out_farm_*  doivent valoir null(ne faites pas planter le workflow).

Corrigé

Voici un exemple de ce que vous pouviez faire pour y arriver :

Description de la capture d'écran :

  • Structure du workflow (sur fond marron) :

    • NƓud de dĂ©clenchement : 'When clicking Test workflow'.

    • NƓud 1 : 'Simuler relevĂ© normalisĂ©' (gĂ©nĂšre des donnĂ©es de test).

    • NƓud 2 : 'Rechercher Exploitation HubSpot' (requĂȘte POST Ă  l’API HubSpot).

    • NƓud 3 : 'Enrichir RelevĂ© Agricole - Edit Fields' (modifie les champs du relevĂ©).

    • NƓud 4 : 'Enrichir RelevĂ© Agricole - Code JS' (ajoute des champs via JavaScript).

  • Description textuelle Ă  gauche :

    • EntrĂ©e : RelevĂ© agricole normalisĂ© (source, sujet, message, email, prioritĂ©, date).

    • Traitement : Recherche du contact/exploitation liĂ© Ă out_device_emailvia l’API HubSpot.

    • Sortie : Objet enrichi avec des champs commeout_farm_owner,out_farm_name, etc.

  • Logs (en bas) : ExĂ©cution rĂ©ussie en 1253ms pour tous les nƓuds.

  • Bouton : 'Execute workflow' en orange, prĂȘt Ă  ĂȘtre cliquĂ©.

Capture d’écran des paramĂštres du nƓud 'Rechercher Exploitation HubSpot' dans un workflow n8n :

  • Onglet Parameters ouvert :

    • Method : POST.

    • URL :https://api.hubspot.com/crm/v3/objects/contacts/search.

    • Authentication : Bearer Auth avec le tokenn8n-test-api-hubspot.

    • Send Headers : ActivĂ©, avec un headerContent-Type: application/json.

  • Input (Ă  gauche) : DonnĂ©es normalisĂ©es avec les champs :

    • out_source: Station MĂ©tĂ©o Web

    • out_subject: Risque de Gel

    • out_message: Chute de tempĂ©rature brutale sous 0°C

    • out_device_email: emailmaria@hubspot.com

    • out_priority: high

    • out_created_at: 2026-03-15T06:00:00Z.

  • Output (Ă  droite) : RĂ©sultat de la requĂȘte HubSpot avec :

    • id: 811076535496

    • properties: email, firstname (Maria), lastname (Johnson), hs_object_id, etc.

    • url: <https://app-eu1.hubspot.com/contacts/148805580/record/0-1/811076535496>.

En résumé

  • Le nƓud HTTP Request vous permet d'appeler n'importe quelle API depuis n8n, vous n'ĂȘtes pas limitĂ© aux nƓuds natifs.

  • Avant de coder, lisez la documentation : identifiez l'adresse, la mĂ©thode, les paramĂštres et le mĂ©canisme d'authentification.

  • Stockez toujours vos tokens dans les Credentials n8n, jamais dans un champ de nƓud.

  • Les codes HTTP vous indiquent si l'appel a rĂ©ussi, et que faire si ce n'est pas le cas.

  • AprĂšs chaque appel, rennommez les donnĂ©es utiles avec votre conventionout_pour que la suite du pipeline reste lisible.

Dans le prochain chapitre, vous allez ouvrir un autre canal d'entrée pour votre pipeline : les webhooks. PlutÎt que d'attendre qu'un formulaire soit soumis, votre workflow sera déclenché en temps réel dÚs qu'un outil externe vous envoie une notification.

Ever considered an OpenClassrooms diploma?
  • Up to 100% of your training program funded
  • Flexible start date
  • Career-focused projects
  • Individual mentoring
Find the training program and funding option that suits you best