Comment Utiliser l'API Make (Integromat) ?

Ashley Innocent

Ashley Innocent

25 March 2026

Comment Utiliser l'API Make (Integromat) ?

enterprise.banner.title

enterprise.banner.feature1

enterprise.banner.feature2

enterprise.banner.feature3

enterprise.banner.ctaB

En bref

L'API Make (anciennement Integromat) permet aux développeurs d'automatiser des workflows, de gérer des scénarios et d'exécuter des intégrations par programmation. Elle utilise l'authentification OAuth 2.0 et par clé API, des points de terminaison RESTful pour les scénarios, les exécutions, les webhooks et les équipes, avec des limites de débit de 60 à 600 requêtes par minute selon le plan. Ce guide couvre la configuration de l'authentification, la gestion des scénarios, les déclencheurs de webhook, la surveillance des exécutions et les stratégies d'automatisation de production.

Introduction

Make (Integromat) traite plus de 2 milliards d'opérations par mois pour plus d'un million d'utilisateurs dans plus de 100 pays. Pour les développeurs qui créent des outils d'automatisation, gèrent des workflows clients ou s'intègrent à plus de 1000 applications, l'intégration de l'API Make n'est pas une option, elle est essentielle pour une automatisation évolutive.

Voici la réalité : les agences gérant plus de 50 automatisations clients perdent 15 à 25 heures par semaine en mises à jour manuelles de scénarios, en surveillance des exécutions et en rapports clients. Une solide intégration de l'API Make automatise le déploiement des scénarios, le suivi des exécutions, la gestion des erreurs et la création de rapports en marque blanche.

Ce guide vous présente le processus complet d'intégration de l'API Make. Vous apprendrez l'authentification OAuth 2.0 et par clé API, la gestion des scénarios, les déclencheurs de webhook, la surveillance des exécutions, la gestion des équipes et les stratégies de déploiement en production. À la fin, vous disposerez d'une intégration Make prête pour la production.

💡
Apidog simplifie les tests d'intégration API. Testez vos points de terminaison Make, validez les flux OAuth, inspectez les réponses d'exécution et déboguez les problèmes d'automatisation dans un seul espace de travail. Importez les spécifications API, simulez les réponses et partagez les scénarios de test avec votre équipe.
bouton

Qu'est-ce que l'API Make ?

Make fournit une API RESTful pour gérer les workflows d'automatisation par programmation. L'API gère :

Fonctionnalités clés

Fonctionnalité Description
API RESTful Points de terminaison basés sur JSON
OAuth 2.0 + Clés API Authentification flexible
Webhooks Notifications d'exécution en temps réel
Limitation du débit 60-600 requêtes/minute selon le plan
Gestion des scénarios Opérations CRUD complètes
Contrôle d'exécution Démarrer, arrêter, surveiller les exécutions
API d'équipe Gestion des utilisateurs et des permissions

Plans Make et accès API

Plan Accès API Limite de débit Idéal pour
Gratuit Limité 60/min Tests, apprentissage
Essentiel API complète 120/min Petites entreprises
Pro API complète + Priorité 300/min Équipes en croissance
Équipes API complète + Admin 600/min Agences, entreprises
Entreprise Limites personnalisées Personnalisé Grandes organisations

Vue d'ensemble de l'architecture API

Make utilise une structure d'API RESTful :

https://api.make.com/api/v2/

Versions de l'API

Version Statut Cas d'utilisation
v2 Actuelle Toutes les nouvelles intégrations
v1 Dépréciée Anciennes intégrations (à migrer)

Démarrage : Configuration de l'authentification

Étape 1 : Créer un compte Make

Avant d'accéder à l'API :

  1. Visitez Make.com
  2. Inscrivez-vous pour un compte
  3. Accédez à Paramètres > Paramètres développeur
  4. Générez les identifiants API

Étape 2 : Choisir la méthode d'authentification

Make prend en charge deux méthodes d'authentification :

Méthode Idéal pour Niveau de sécurité
Clé API Intégrations internes, scripts Élevé (stocker en toute sécurité)
OAuth 2.0 Applications multi-locataires, intégrations client Plus élevé (jetons à portée utilisateur)

Étape 3 : Obtenir la clé API (méthode la plus simple)

Générez la clé API pour usage interne :

  1. Allez dans Paramètres > Paramètres développeur
  2. Cliquez sur Créer une clé API
  3. Copiez et stockez en toute sécurité
# .env file
MAKE_API_KEY="your_api_key_here"
MAKE_ORGANIZATION_ID="your_org_id"

Étape 4 : Configurer OAuth 2.0 (pour les applications multi-locataires)

Configurez OAuth pour les intégrations client :

  1. Allez dans Paramètres > Paramètres développeur > Applications OAuth
  2. Cliquez sur Créer une application OAuth
  3. Configurez l'URI de redirection
  4. Obtenez les identifiants client
const MAKE_CLIENT_ID = process.env.MAKE_CLIENT_ID;
const MAKE_CLIENT_SECRET = process.env.MAKE_CLIENT_SECRET;
const MAKE_REDIRECT_URI = process.env.MAKE_REDIRECT_URI;

// Build authorization URL
const getAuthUrl = (state) => {
  const params = new URLSearchParams({
    client_id: MAKE_CLIENT_ID,
    redirect_uri: MAKE_REDIRECT_URI,
    scope: 'read write execute',
    state: state,
    response_type: 'code'
  });

  return `https://www.make.com/oauth/authorize?${params.toString()}`;
};

Étape 5 : Échanger le code contre un jeton d'accès

Gérez le rappel OAuth :

const exchangeCodeForToken = async (code) => {
  const response = await fetch('https://www.make.com/oauth/token', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: new URLSearchParams({
      grant_type: 'authorization_code',
      client_id: MAKE_CLIENT_ID,
      client_secret: MAKE_CLIENT_SECRET,
      redirect_uri: MAKE_REDIRECT_URI,
      code: code
    })
  });

  const data = await response.json();

  return {
    accessToken: data.access_token,
    refreshToken: data.refresh_token,
    expiresIn: data.expires_in
  };
};

// Handle callback
app.get('/oauth/callback', async (req, res) => {
  const { code, state } = req.query;

  try {
    const tokens = await exchangeCodeForToken(code);

    // Store tokens securely
    await db.integrations.create({
      userId: req.session.userId,
      accessToken: tokens.accessToken,
      refreshToken: tokens.refreshToken,
      tokenExpiry: Date.now() + (tokens.expiresIn * 1000)
    });

    res.redirect('/success');
  } catch (error) {
    console.error('OAuth error:', error);
    res.status(500).send('Authentication failed');
  }
});

Étape 6 : Effectuer des appels API authentifiés

Créez un client API réutilisable :

const MAKE_BASE_URL = 'https://api.make.com/api/v2';

const makeRequest = async (endpoint, options = {}) => {
  const apiKey = options.useOAuth ? await getOAuthToken() : process.env.MAKE_API_KEY;

  const response = await fetch(`${MAKE_BASE_URL}${endpoint}`, {
    ...options,
    headers: {
      'Authorization': `Token ${apiKey}`,
      'Content-Type': 'application/json',
      ...options.headers
    }
  });

  if (!response.ok) {
    const error = await response.json();
    throw new Error(`Make API Error: ${error.message}`);
  }

  return response.json();
};

// Usage
const scenarios = await makeRequest('/scenarios');
console.log(`Found ${scenarios.data.length} scenarios`);

Gestion des scénarios

Lister les scénarios

Récupérer tous les scénarios :

const listScenarios = async (filters = {}) => {
  const params = new URLSearchParams({
    limit: filters.limit || 50,
    offset: filters.offset || 0
  });

  if (filters.folder) {
    params.append('folder', filters.folder);
  }

  const response = await makeRequest(`/scenarios?${params.toString()}`);
  return response;
};

// Usage
const scenarios = await listScenarios({ limit: 100 });
scenarios.data.forEach(scenario => {
  console.log(`${scenario.name} - ${scenario.active ? 'Active' : 'Paused'}`);
  console.log(`  Last run: ${scenario.lastRunDate || 'Never'}`);
});

Obtenir les détails du scénario

Récupérer un seul scénario :

const getScenario = async (scenarioId) => {
  const response = await makeRequest(`/scenarios/${scenarioId}`);
  return response;
};

// Usage
const scenario = await getScenario('12345');
console.log(`Name: ${scenario.name}`);
console.log(`Modules: ${scenario.modules.length}`);
console.log(`Schedule: ${scenario.schedule?.cronExpression || 'Manual'}`);

Créer un scénario

Créer un nouveau scénario :

const createScenario = async (scenarioData) => {
  const scenario = {
    name: scenarioData.name,
    blueprint: scenarioData.blueprint, // Scenario JSON blueprint
    active: scenarioData.active || false,
    priority: scenarioData.priority || 1,
    maxErrors: scenarioData.maxErrors || 3,
    autoCommit: scenarioData.autoCommit || true,
    description: scenarioData.description || ''
  };

  const response = await makeRequest('/scenarios', {
    method: 'POST',
    body: JSON.stringify(scenario)
  });

  return response;
};

// Usage - Create from blueprint
const newScenario = await createScenario({
  name: 'Lead Sync to CRM',
  blueprint: {
    // Scenario blueprint JSON
    // Export from Make editor or build programmatically
    modules: [
      {
        id: 1,
        app: 'webhooks',
        action: 'customWebhook',
        parameters: { /* ... */ }
      },
      {
        id: 2,
        app: 'salesforce',
        action: 'createRecord',
        parameters: { /* ... */ }
      }
    ],
    connections: [
      { from: 1, to: 2 }
    ]
  },
  active: true,
  description: 'Sync webhook leads to Salesforce'
});

console.log(`Scenario created: ${newScenario.id}`);

Mettre à jour un scénario

Modifier la configuration du scénario :

const updateScenario = async (scenarioId, updates) => {
  const response = await makeRequest(`/scenarios/${scenarioId}`, {
    method: 'PATCH',
    body: JSON.stringify(updates)
  });

  return response;
};

// Usage - Pause scenario
await updateScenario('12345', { active: false });

// Usage - Update schedule
await updateScenario('12345', {
  schedule: {
    cronExpression: '0 */6 * * *', // Every 6 hours
    timezone: 'America/New_York'
  }
});

Supprimer un scénario

Supprimer un scénario :

const deleteScenario = async (scenarioId) => {
  await makeRequest(`/scenarios/${scenarioId}`, {
    method: 'DELETE'
  });

  console.log(`Scenario ${scenarioId} deleted`);
};

Gestion des exécutions

Déclencher l'exécution d'un scénario

Exécuter un scénario manuellement :

const executeScenario = async (scenarioId, inputData = null) => {
  const response = await makeRequest(`/scenarios/${scenarioId}/execute`, {
    method: 'POST',
    body: inputData ? JSON.stringify(inputData) : undefined
  });

  return response;
};

// Usage - Run without input
const execution = await executeScenario('12345');
console.log(`Execution started: ${execution.id}`);

// Usage - Run with input data
const executionWithData = await executeScenario('12345', {
  lead: {
    email: 'prospect@example.com',
    name: 'John Doe',
    company: 'Acme Corp'
  }
});

Obtenir l'historique d'exécution

Récupérer les journaux d'exécution :

const getExecutionHistory = async (scenarioId, filters = {}) => {
  const params = new URLSearchParams({
    limit: filters.limit || 50,
    from: filters.from,
    to: filters.to,
    status: filters.status // 'success', 'error', 'running'
  });

  const response = await makeRequest(`/scenarios/${scenarioId}/executions?${params.toString()}`);
  return response;
};

// Usage - Get failed executions from last 24 hours
const failedExecutions = await getExecutionHistory('12345', {
  from: new Date(Date.now() - 86400000).toISOString(),
  status: 'error',
  limit: 100
});

failedExecutions.data.forEach(exec => {
  console.log(`Execution ${exec.id}: ${exec.error?.message}`);
});

Obtenir les détails de l'exécution

Récupérer une seule exécution :

const getExecution = async (executionId) => {
  const response = await makeRequest(`/executions/${executionId}`);
  return response;
};

// Usage
const execution = await getExecution('98765');
console.log(`Status: ${execution.status}`);
console.log(`Duration: ${execution.duration}ms`);
console.log(`Modules executed: ${execution.modulesExecuted}`);

Arrêter l'exécution en cours

Annuler l'exécution :

const stopExecution = async (executionId) => {
  await makeRequest(`/executions/${executionId}`, {
    method: 'DELETE'
  });

  console.log(`Execution ${executionId} stopped`);
};

Gestion des webhooks

Créer un webhook

Configurer un webhook entrant :

const createWebhook = async (webhookData) => {
  const webhook = {
    name: webhookData.name,
    scenarioId: webhookData.scenarioId,
    type: 'custom', // 'custom' or 'raw'
    hookType: 'HEAD', // 'HEAD' or 'GET'
    security: {
      type: 'none' // 'none', 'basic', 'token'
    }
  };

  const response = await makeRequest('/webhooks', {
    method: 'POST',
    body: JSON.stringify(webhook)
  });

  return response;
};

// Usage
const webhook = await createWebhook({
  name: 'Lead Capture Webhook',
  scenarioId: '12345',
  type: 'custom',
  hookType: 'HEAD',
  security: { type: 'none' }
});

console.log(`Webhook URL: ${hook.url}`);

Lister les webhooks

Récupérer tous les webhooks :

const listWebhooks = async () => {
  const response = await makeRequest('/webhooks');
  return response;
};

// Usage
const webhooks = await listWebhooks();
webhooks.data.forEach(webhook => {
  console.log(`${webhook.name}: ${webhook.url}`);
});

Supprimer un webhook

Supprimer un webhook :

const deleteWebhook = async (webhookId) => {
  await makeRequest(`/webhooks/${webhookId}`, {
    method: 'DELETE'
  });

  console.log(`Webhook ${webhookId} deleted`);
};

Gestion des équipes et des utilisateurs

Lister les membres de l'équipe

Récupérer les utilisateurs de l'organisation :

const listTeamMembers = async (organizationId) => {
  const response = await makeRequest(`/organizations/${organizationId}/users`);
  return response;
};

// Usage
const members = await listTeamMembers('org-123');
members.data.forEach(member => {
  console.log(`${member.email} - ${member.role}`);
});

Ajouter un membre à l'équipe

Inviter un utilisateur à l'organisation :

const addTeamMember = async (organizationId, email, role) => {
  const response = await makeRequest(`/organizations/${organizationId}/users`, {
    method: 'POST',
    body: JSON.stringify({
      email: email,
      role: role // 'viewer', 'builder', 'manager', 'admin'
    })
  });

  return response;
};

// Usage
await addTeamMember('org-123', 'newuser@example.com', 'builder');

Mettre à jour le rôle d'un utilisateur

Modifier les permissions de l'utilisateur :

const updateUserRole = async (organizationId, userId, newRole) => {
  await makeRequest(`/organizations/${organizationId}/users/${userId}`, {
    method: 'PATCH',
    body: JSON.stringify({ role: newRole })
  });

  console.log(`User ${userId} role updated to ${newRole}`);
};

Rôles d'utilisateur

Rôle Permissions
Lecteur Consulter les scénarios, aucune modification
Constructeur Créer/modifier des scénarios
Gestionnaire Gérer l'équipe, la facturation
Admin Accès complet à l'organisation

Limitation du débit

Comprendre les limites de débit

Make applique des limites de débit par plan :

Plan Requêtes/Minute Limite de rafale
Gratuit 60 100
Essentiel 120 200
Pro 300 500
Équipes 600 1000
Entreprise Personnalisé Personnalisé

En-têtes de limitation de débit

En-tête Description
X-RateLimit-Limit Nombre max de requêtes par minute
X-RateLimit-Remaining Requêtes restantes
X-RateLimit-Reset Secondes avant la réinitialisation

Implémentation de la gestion de la limitation de débit

const makeRateLimitedRequest = async (endpoint, options = {}, maxRetries = 3) => {
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
      const response = await makeRequest(endpoint, options);

      const remaining = response.headers.get('X-RateLimit-Remaining');
      if (remaining < 10) {
        console.warn(`Low rate limit: ${remaining} remaining`);
      }

      return response;
    } catch (error) {
      if (error.message.includes('429') && attempt < maxRetries) {
        const delay = Math.pow(2, attempt) * 1000;
        console.log(`Rate limited. Retrying in ${delay}ms...`);
        await new Promise(resolve => setTimeout(resolve, delay));
      } else {
        throw error;
      }
    }
  }
};

Liste de contrôle pour le déploiement en production

Avant la mise en ligne :

Cas d'utilisation concrets

Gestion des clients d'agence

Une agence marketing gère plus de 100 automatisations clients :

Implémentation clé :

Traitement des commandes e-commerce

Une boutique en ligne automatise l'exécution des commandes :

Implémentation clé :

Conclusion

L'API Make offre des capacités complètes d'automatisation des workflows. Points clés à retenir :

bouton

Comment m'authentifier avec l'API Make ?

Utilisez la clé API des paramètres développeur pour les intégrations internes, ou OAuth 2.0 pour les applications multi-locataires.

Puis-je déclencher des scénarios par programmation ?

Oui, utilisez le point de terminaison /scenarios/{id}/execute pour déclencher manuellement des exécutions de scénarios avec des données d'entrée facultatives.

Quelles sont les limites de débit de Make ?

Les limites de débit varient de 60 requêtes/minute (Gratuit) à 600 requêtes/minute (Équipes/Entreprise).

Comment obtenir les journaux d'exécution ?

Utilisez /scenarios/{id}/executions pour récupérer l'historique d'exécution avec filtrage par date et statut.

Puis-je créer des webhooks via l'API ?

Oui, utilisez le point de terminaison /webhooks pour créer, lister et supprimer des webhooks pour les scénarios.

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API