Make (Integromat) API Nasıl Kullanılır?

Ashley Innocent

Ashley Innocent

25 March 2026

Make (Integromat) API Nasıl Kullanılır?

TL;DR

Make (eski adıyla Integromat) API'si, geliştiricilerin iş akışlarını otomatikleştirmesini, senaryoları yönetmesini ve entegrasyonları programatik olarak yürütmesini sağlar. Planına bağlı olarak dakikada 60-600 istek hız limitleri ile OAuth 2.0 ve API anahtarı kimlik doğrulamasını, senaryolar, yürütmeler, webhook'lar ve ekipler için RESTful uç noktalarını kullanır. Bu rehber, kimlik doğrulama kurulumunu, senaryo yönetimini, webhook tetikleyicilerini, yürütme izlemeyi ve üretim otomasyonu stratejilerini kapsar.

Giriş

Make (Integromat), 100'den fazla ülkede 1 milyondan fazla kullanıcı için aylık 2 milyardan fazla işlem yürütür. Otomasyon araçları geliştiren, müşteri iş akışlarını yöneten veya 1000'den fazla uygulamayla entegrasyon yapan geliştiriciler için Make API entegrasyonu isteğe bağlı değil, ölçeklenebilir otomasyon için vazgeçilmezdir.

Gerçek şu ki: 50'den fazla müşteri otomasyonunu yöneten ajanslar, manuel senaryo güncellemeleri, yürütme izleme ve müşteri raporlaması için haftalık 15-25 saat kaybediyor. Sağlam bir Make API entegrasyonu, senaryo dağıtımını, yürütme takibini, hata yönetimini ve beyaz etiket raporlamayı otomatikleştirir.

Bu rehber, eksiksiz Make API entegrasyon sürecini anlatmaktadır. OAuth 2.0 ve API anahtarı kimlik doğrulamasını, senaryo yönetimini, webhook tetikleyicilerini, yürütme izlemeyi, ekip yönetimini ve üretim dağıtım stratejilerini öğreneceksiniz. Sonunda, üretime hazır bir Make entegrasyonuna sahip olacaksınız.

💡
Apidog, API entegrasyon testlerini basitleştirir. Make uç noktalarınızı test edin, OAuth akışlarını doğrulayın, yürütme yanıtlarını inceleyin ve otomasyon sorunlarını tek bir çalışma alanında ayıklayın. API spesifikasyonlarını içe aktarın, yanıtları taklit edin ve test senaryolarını ekibinizle paylaşın.
button

Make API Nedir?

Make, otomasyon iş akışlarını programatik olarak yönetmek için RESTful bir API sağlar. API şunları yönetir:

Temel Özellikler

Özellik Açıklama
RESTful API JSON tabanlı uç noktalar
OAuth 2.0 + API Anahtarları Esnek kimlik doğrulama
Webhook'lar Gerçek zamanlı yürütme bildirimleri
Hız Sınırlaması Plana göre dakikada 60-600 istek
Senaryo Yönetimi Tam CRUD operasyonları
Yürütme Kontrolü Çalışmaları başlatma, durdurma, izleme
Ekip API'si Kullanıcı ve izin yönetimi

Make Planları ve API Erişimi

Plan API Erişimi Hız Sınırı En İyisi
Ücretsiz Sınırlı 60/dk Test, öğrenme
Core Tam API 120/dk Küçük işletmeler
Pro Tam API + Öncelik 300/dk Büyüyen ekipler
Ekipler Tam API + Yönetici 600/dk Ajanslar, kurumsal firmalar
Kurumsal Özel limitler Özel Büyük organizasyonlar

API Mimarisinin Genel Bakışı

Make, RESTful API yapısını kullanır:

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

API Sürümleri

Sürüm Durum Kullanım Alanı
v2 Mevcut Tüm yeni entegrasyonlar
v1 Kullanımdan Kaldırıldı Eski entegrasyonlar (geçiş yapın)

Başlarken: Kimlik Doğrulama Kurulumu

Adım 1: Make Hesabı Oluşturma

API'ye erişmeden önce:

  1. Make.com adresini ziyaret edin
  2. Hesap için kaydolun
  3. Ayarlar > Geliştirici ayarları bölümüne gidin
  4. API kimlik bilgilerini oluşturun

Adım 2: Kimlik Doğrulama Yöntemini Seçme

Make iki kimlik doğrulama yöntemini destekler:

Yöntem En İyisi Güvenlik Seviyesi
API Anahtarı Dahili entegrasyonlar, betikler Yüksek (güvenli saklayın)
OAuth 2.0 Çok kiracılı uygulamalar, istemci entegrasyonları Daha yüksek (kullanıcı kapsamlı token'lar)

Adım 3: API Anahtarını Alma (En Basit Yöntem)

Dahili kullanım için API anahtarı oluşturun:

  1. Ayarlar > Geliştirici ayarları bölümüne gidin
  2. API anahtarı oluştur düğmesine tıklayın
  3. Kopyalayın ve güvenli bir şekilde saklayın
# .env file
MAKE_API_KEY="your_api_key_here"
MAKE_ORGANIZATION_ID="your_org_id"

Adım 4: OAuth 2.0 Kurulumu (Çok Kiracılı Uygulamalar İçin)

İstemci entegrasyonları için OAuth'u yapılandırın:

  1. Ayarlar > Geliştirici ayarları > OAuth uygulamaları bölümüne gidin
  2. OAuth uygulaması oluştur düğmesine tıklayın
  3. Yönlendirme URI'sini yapılandırın
  4. İstemci kimlik bilgilerini alın
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()}`;
};

Adım 5: Erişim Tokenı İçin Kodu Değiştirme

OAuth geri aramasını işleyin:

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');
  }
});

Adım 6: Kimliği Doğrulanmış API Çağrıları Yapma

Yeniden kullanılabilir bir API istemcisi oluşturun:

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`);

Senaryo Yönetimi

Senaryoları Listeleme

Tüm senaryoları getir:

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'}`);
});

Senaryo Detaylarını Alma

Tek senaryoyu getir:

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'}`);

Senaryo Oluşturma

Yeni senaryo oluştur:

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}`);

Senaryoyu Güncelleme

Senaryo yapılandırmasını değiştir:

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'
  }
});

Senaryoyu Silme

Senaryoyu kaldır:

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

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

Yürütme Yönetimi

Senaryo Yürütmeyi Tetikleme

Senaryoyu manuel olarak çalıştır:

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'
  }
});

Yürütme Geçmişini Alma

Yürütme günlüklerini getir:

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}`);
});

Yürütme Detaylarını Alma

Tek yürütmeyi getir:

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}`);

Çalışan Yürütmeyi Durdurma

Yürütmeyi iptal et:

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

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

Webhook Yönetimi

Webhook Oluşturma

Gelen webhook'u kur:

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}`);

Webhook'ları Listeleme

Tüm webhook'ları getir:

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}`);
});

Webhook Silme

Webhook'u kaldır:

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

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

Ekip ve Kullanıcı Yönetimi

Ekip Üyelerini Listeleme

Organizasyondaki kullanıcıları getir:

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}`);
});

Ekip Üyesi Ekleme

Kullanıcıyı organizasyona davet et:

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');

Kullanıcı Rolünü Güncelleme

Kullanıcı izinlerini değiştir:

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}`);
};

Kullanıcı Rolleri

Rol İzinler
Görüntüleyici Senaryoları görüntüle, düzenleme yapamaz
Oluşturucu Senaryo oluştur/düzenle
Yönetici Ekibi, faturalandırmayı yönet
Yönetici (Admin) Tam organizasyon erişimi

Hız Sınırlaması

Hız Sınırlamalarını Anlama

Make, plana göre hız sınırlamaları uygular:

Plan İstek/Dakika Anlık Limit
Ücretsiz 60 100
Core 120 200
Pro 300 500
Ekipler 600 1000
Kurumsal Özel Özel

Hız Sınırlaması Başlıkları

Başlık Açıklama
X-RateLimit-Limit Dakikadaki maksimum istek sayısı
X-RateLimit-Remaining Kalan istek sayısı
X-RateLimit-Reset Sıfırlanana kadar kalan saniye

Hız Sınırlaması İşlemeyi Uygulama

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;
      }
    }
  }
};

Üretim Dağıtımı Kontrol Listesi

Canlıya geçmeden önce:

Gerçek Dünya Kullanım Durumları

Ajans Müşteri Yönetimi

Bir pazarlama ajansı 100'den fazla müşteri otomasyonunu yönetiyor:

Temel uygulama:

E-ticaret Sipariş İşleme

Bir online mağaza sipariş yerine getirmeyi otomatikleştirir:

Temel uygulama:

Sonuç

Make API'si kapsamlı iş akışı otomasyon yetenekleri sunar. Temel çıkarımlar:

button

Make API ile nasıl kimlik doğrularım?

Dahili entegrasyonlar için Geliştirici ayarlarından API anahtarı kullanın veya çok kiracılı uygulamalar için OAuth 2.0 kullanın.

Senaryoları programatik olarak tetikleyebilir miyim?

Evet, isteğe bağlı giriş verileriyle senaryo çalışmalarını manuel olarak tetiklemek için /scenarios/{id}/execute uç noktasını kullanın.

Make hız sınırlamaları nelerdir?

Hız sınırlamaları dakikada 60 istekten (Ücretsiz) dakikada 600 isteğe (Ekipler/Kurumsal) kadar değişir.

Yürütme günlüklerini nasıl alırım?

Tarih ve duruma göre filtreleme ile yürütme geçmişini almak için /scenarios/{id}/executions kullanın.

API aracılığıyla webhook oluşturabilir miyim?

Evet, senaryolar için webhook oluşturmak, listelemek ve silmek için /webhooks uç noktasını kullanın.

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin