Cara Menggunakan Heroku API: Panduan Integrasi Lengkap (2026)

Ashley Innocent

Ashley Innocent

25 March 2026

Cara Menggunakan Heroku API: Panduan Integrasi Lengkap (2026)

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

TL;DR

Heroku API memungkinkan pengembang untuk mengotomatiskan deployment, mengelola aplikasi, mengkonfigurasi add-on, dan menskalakan infrastruktur secara terprogram. Ini menggunakan OAuth 2.0 dan otentikasi berbasis token, endpoint RESTful untuk aplikasi, dyno, build, dan pipeline, dengan batas laju 10.000 permintaan per jam per akun. Panduan ini mencakup pengaturan otentikasi, endpoint inti, integrasi CI/CD, dan strategi deployment produksi.

Pendahuluan

Heroku mendukung lebih dari 4 juta aplikasi di 170+ negara. Bagi pengembang yang membangun otomatisasi deployment, pipeline CI/CD, atau alat manajemen multi-aplikasi, integrasi Heroku API bukan pilihan—tetapi penting.

Inilah kenyataannya: tim yang mengelola 10+ aplikasi Heroku kehilangan 8-12 jam setiap minggu untuk deployment manual dan perubahan konfigurasi. Integrasi Heroku API yang solid mengotomatiskan deployment, menskalakan dyno berdasarkan lalu lintas, dan menyinkronkan konfigurasi di berbagai lingkungan.

Panduan ini memandu Anda melalui proses integrasi Heroku API yang lengkap. Anda akan mempelajari otentikasi token, manajemen aplikasi dan dyno, pembangunan pipeline, penyediaan add-on, dan pemecahan masalah. Pada akhirnya, Anda akan memiliki integrasi Heroku yang siap produksi.

💡
Apidog menyederhanakan pengujian integrasi API. Uji endpoint Heroku Anda, validasi alur otentikasi, periksa respons API, dan debug masalah konfigurasi dalam satu ruang kerja. Impor spesifikasi API, respons mock, dan bagikan skenario pengujian dengan tim Anda.

Apa Itu Heroku API?

Heroku menyediakan Platform API RESTful untuk mengelola aplikasi dan infrastruktur di platform Heroku. API menangani:

Fitur Utama

Fitur Deskripsi
Desain RESTful Metode HTTP standar dengan respons JSON
Otentikasi Token Token Bearer dengan dukungan OAuth 2.0
Permintaan Rentang Paginasi untuk kumpulan hasil besar
Pembatasan Laju 10.000 permintaan per jam per akun
Pembuatan Idempoten Perilaku percobaan ulang yang aman untuk penulisan
Kompresi Gzip Kompresi respons untuk penghematan bandwidth

Gambaran Umum Arsitektur API

Heroku menggunakan struktur REST API yang berversi:

https://api.heroku.com/

API mengikuti spesifikasi JSON:API dengan pola dan hubungan sumber daya yang konsisten.

Perbandingan Versi API

Versi Status Otentikasi Kasus Penggunaan
Platform API (v3) Saat Ini Token Bearer Semua integrasi baru
Integrasi GitHub Saat Ini OAuth 2.0 Aplikasi yang terhubung GitHub
Registri Kontainer Saat Ini Otentikasi Docker Deployment kontainer

Memulai: Pengaturan Otentikasi

Langkah 1: Buat Akun Heroku Anda

Sebelum mengakses API, Anda memerlukan akun Heroku:

  1. Kunjungi situs web Heroku
  2. Klik Daftar dan buat akun
  3. Verifikasi alamat email Anda
  4. Selesaikan pengaturan akun

Langkah 2: Instal Heroku CLI

CLI membantu menghasilkan token API dan menguji perintah:

# macOS
brew tap heroku/brew && brew install heroku

# Windows
npm install -g heroku

# Linux
curl https://cli-assets.heroku.com/install.sh | sh

Langkah 3: Hasilkan Token API

Otentikasi dengan Heroku CLI:

# Login ke Heroku
heroku login

# Ini membuka browser untuk otentikasi
# Setelah login, token Anda disimpan secara lokal

Ambil token API Anda:

# Lihat token otorisasi Anda saat ini
heroku authorizations:create --short-lived

# Atau buat token jangka panjang (untuk CI/CD)
heroku authorizations:create --description "CI/CD Pipeline" --expires-in "1 year"

Catatan keamanan: Simpan token dalam variabel lingkungan, jangan pernah dalam kode:

# file .env
HEROKU_API_KEY="kunci_api_anda_di_sini"
HEROKU_APP_NAME="nama-aplikasi-anda"

Langkah 4: Pahami Otentikasi Token

Heroku menggunakan otentikasi token Bearer:

Authorization: Bearer {api_key}
Accept: application/vnd.heroku+json; version=3

Setiap permintaan API memerlukan header ini.

Langkah 5: Lakukan Panggilan API Pertama Anda

Uji otentikasi Anda:

curl -n https://api.heroku.com/account \
  -H "Accept: application/vnd.heroku+json; version=3" \
  -H "Authorization: Bearer $HEROKU_API_KEY"

Respons yang diharapkan:

{
  "id": "user-id-here",
  "email": "developer@example.com",
  "name": "Developer Name",
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2026-03-20T14:22:00Z"
}

Langkah 6: Implementasikan Otentikasi dalam Kode

Buat klien API yang dapat digunakan kembali:

const HEROKU_API_KEY = process.env.HEROKU_API_KEY;
const HEROKU_BASE_URL = 'https://api.heroku.com';

const herokuRequest = async (endpoint, options = {}) => {
  const response = await fetch(`${HEROKU_BASE_URL}${endpoint}`, {
    ...options,
    headers: {
      'Authorization': `Bearer ${HEROKU_API_KEY}`,
      'Accept': 'application/vnd.heroku+json; version=3',
      'Content-Type': 'application/json',
      ...options.headers
    }
  });

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

  return response.json();
};

// Penggunaan
const account = await herokuRequest('/account');
console.log(`Login sebagai: ${account.email}`);

Manajemen Aplikasi

Membuat Aplikasi Baru

Buat aplikasi Heroku secara terprogram:

const createApp = async (appName, region = 'us') => {
  const response = await herokuRequest('/apps', {
    method: 'POST',
    body: JSON.stringify({
      name: appName,
      region: region
    })
  });

  return response;
};

// Penggunaan
const app = await createApp('my-awesome-app-2026');
console.log(`Aplikasi dibuat: ${app.name}`);
console.log(`URL Git: ${app.git_url}`);
console.log(`URL Web: ${app.web_url}`);

Respons Aplikasi yang Diharapkan

{
  "id": "app-uuid-here",
  "name": "my-awesome-app-2026",
  "region": { "name": "us" },
  "created_at": "2026-03-25T10:00:00Z",
  "updated_at": "2026-03-25T10:00:00Z",
  "git_url": "https://git.heroku.com/my-awesome-app-2026.git",
  "web_url": "https://my-awesome-app-2026.herokuapp.com",
  "owner": { "email": "developer@example.com" },
  "build_stack": { "name": "heroku-24" }
}

Mencantumkan Aplikasi Anda

Ambil semua aplikasi di akun Anda:

const listApps = async (limit = 50) => {
  const response = await herokuRequest(`/apps?limit=${limit}`);
  return response;
};

// Penggunaan
const apps = await listApps();
apps.forEach(app => {
  console.log(`${app.name} - ${app.web_url}`);
});

Mendapatkan Detail Aplikasi

Ambil informasi aplikasi terperinci:

const getApp = async (appName) => {
  const response = await herokuRequest(`/apps/${appName}`);
  return response;
};

// Penggunaan
const app = await getApp('my-awesome-app-2026');
console.log(`Stack: ${app.build_stack.name}`);
console.log(`Wilayah: ${app.region.name}`);

Memperbarui Konfigurasi Aplikasi

Ubah pengaturan aplikasi:

const updateApp = async (appName, updates) => {
  const response = await herokuRequest(`/apps/${appName}`, {
    method: 'PATCH',
    body: JSON.stringify(updates)
  });

  return response;
};

// Penggunaan - ubah nama aplikasi
const updated = await updateApp('old-app-name', {
  name: 'new-app-name'
});

Menghapus Aplikasi

Hapus aplikasi dari akun Anda:

const deleteApp = async (appName) => {
  await herokuRequest(`/apps/${appName}`, {
    method: 'DELETE'
  });

  console.log(`Aplikasi ${appName} berhasil dihapus`);
};

Manajemen Dyno

Menskalakan Dyno

Skalakan aplikasi Anda naik atau turun:

const scaleDyno = async (appName, processType, quantity) => {
  const response = await herokuRequest(`/apps/${appName}/formation/${processType}`, {
    method: 'PATCH',
    body: JSON.stringify({
      quantity: quantity
    })
  });

  return response;
};

// Penggunaan - skalakan dyno web ke 3
const formation = await scaleDyno('my-app', 'web', 3);
console.log(`Diskalakan ke ${formation.quantity} dyno ${processType}`);

Mendapatkan Formasi Dyno

Lihat konfigurasi dyno saat ini:

const getFormation = async (appName, processType = null) => {
  const endpoint = processType
    ? `/apps/${appName}/formation/${processType}`
    : `/apps/${appName}/formation`;

  const response = await herokuRequest(endpoint);
  return response;
};

// Penggunaan
const formation = await getFormation('my-app');
formation.forEach(proc => {
  console.log(`${proc.type}: ${proc.quantity} dyno (@ ${proc.size})`);
});

Ukuran Dyno yang Tersedia

Jenis Dyno Kasus Penggunaan Biaya/Bulan
eco Proyek hobi, demo $5
basic Aplikasi produksi kecil $7
standard-1x Beban kerja standar $25
standard-2x Aplikasi berkinerja tinggi $50
performance Aplikasi kritis produksi $250+
private Isolasi perusahaan Kustom

Memulai Ulang Dyno

Mulai ulang semua dyno untuk suatu aplikasi:

const restartDynos = async (appName, processType = null) => {
  const endpoint = processType
    ? `/apps/${appName}/formation/${processType}`
    : `/apps/${appName}/dynos`;

  await herokuRequest(endpoint, {
    method: 'DELETE'
  });

  console.log(`Dyno dimulai ulang untuk ${appName}`);
};

Menjalankan Dyno Sekali Pakai

Jalankan perintah dalam dyno yang terisolasi:

const runCommand = async (appName, command) => {
  const response = await herokuRequest(`/apps/${appName}/dynos`, {
    method: 'POST',
    body: JSON.stringify({
      command: command,
      size: 'standard-1x'
    })
  });

  return response;
};

// Penggunaan - jalankan migrasi database
const dyno = await runCommand('my-app', 'npm run migrate');
console.log(`Dyno dimulai: ${dyno.id}`);

Variabel Konfigurasi

Mendapatkan Variabel Konfigurasi

Ambil variabel lingkungan:

const getConfigVars = async (appName) => {
  const response = await herokuRequest(`/apps/${appName}/config-vars`);
  return response;
};

// Penggunaan
const config = await getConfigVars('my-app');
console.log(`DATABASE_URL: ${config.DATABASE_URL}`);
console.log(`NODE_ENV: ${config.NODE_ENV}`);

Mengatur Variabel Konfigurasi

Perbarui variabel lingkungan:

const setConfigVars = async (appName, variables) => {
  const response = await herokuRequest(`/apps/${appName}/config-vars`, {
    method: 'PATCH',
    body: JSON.stringify(variables)
  });

  return response;
};

// Penggunaan
const updated = await setConfigVars('my-app', {
  NODE_ENV: 'production',
  API_SECRET: 'kunci-rahasia-anda',
  LOG_LEVEL: 'info'
});

Praktik Terbaik untuk Variabel Konfigurasi

  1. Jangan pernah menyimpan rahasia - Gunakan variabel lingkungan untuk semua data sensitif
  2. Gunakan konfigurasi terpisah per lingkungan - Variabel yang berbeda untuk staging vs produksi
  3. Rotasi rahasia secara teratur - Perbarui kunci API dan kata sandi setiap kuartal
  4. Beri awalan variabel terkait - STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET

Manajemen Build dan Rilis

Membuat Build

Deploy kode melalui API:

const createBuild = async (appName, sourceBlobUrl) => {
  const response = await herokuRequest(`/apps/${appName}/builds`, {
    method: 'POST',
    body: JSON.stringify({
      source_blob: {
        url: sourceBlobUrl
      }
    })
  });

  return response;
};

// Penggunaan
const build = await createBuild('my-app', 'https://storage.example.com/source.tar.gz');
console.log(`Build dimulai: ${build.id}`);
console.log(`Status: ${build.status}`);

Mendapatkan Status Build

Periksa kemajuan build:

const getBuild = async (appName, buildId) => {
  const response = await herokuRequest(`/apps/${appName}/builds/${buildId}`);
  return response;
};

// Lakukan polling hingga selesai
const checkBuildStatus = async (appName, buildId, maxAttempts = 30) => {
  for (let i = 0; i < maxAttempts; i++) {
    const build = await getBuild(appName, buildId);

    if (build.status === 'succeeded') {
      console.log('Build berhasil!');
      return build;
    } else if (build.status === 'failed') {
      throw new Error(`Build gagal: ${build.output}`);
    }

    console.log(`Build sedang berjalan... percobaan ${i + 1}`);
    await new Promise(resolve => setTimeout(resolve, 5000));
  }

  throw new Error('Waktu build habis');
};

Mencantumkan Rilis

Lihat riwayat rilis:

const listReleases = async (appName, limit = 10) => {
  const response = await herokuRequest(`/apps/${appName}/releases?limit=${limit}`);
  return response;
};

// Penggunaan
const releases = await listReleases('my-app');
releases.forEach(release => {
  console.log(`v${release.version} - ${release.description} - ${release.created_at}`);
});

Mengembalikan ke Rilis Sebelumnya

Kembali ke versi sebelumnya:

const rollback = async (appName, releaseId) => {
  const response = await herokuRequest(`/apps/${appName}/releases`, {
    method: 'POST',
    body: JSON.stringify({
      rollback: releaseId
    })
  });

  return response;
};

// Penggunaan - mengembalikan ke versi 42
const rollbackRelease = await rollback('my-app', 42);
console.log(`Mengembalikan ke v${rollbackRelease.version}`);

Manajemen Pipeline

Membuat Pipeline

Siapkan pipeline CI/CD:

const createPipeline = async (pipelineName) => {
  const response = await herokuRequest('/pipelines', {
    method: 'POST',
    body: JSON.stringify({
      name: pipelineName
    })
  });

  return response;
};

// Penggunaan
const pipeline = await createPipeline('my-app-pipeline');
console.log(`Pipeline dibuat: ${pipeline.id}`);

Menambahkan Aplikasi ke Pipeline

Hubungkan aplikasi ke tahap pipeline:

const addAppToPipeline = async (pipelineId, appName, stage) => {
  const response = await herokuRequest('/pipeline-couplings', {
    method: 'POST',
    body: JSON.stringify({
      pipeline: pipelineId,
      app: appName,
      stage: stage // 'development', 'staging', 'production'
    })
  });

  return response;
};

// Penggunaan
await addAppToPipeline(pipelineId, 'my-app-dev', 'development');
await addAppToPipeline(pipelineId, 'my-app-staging', 'staging');
await addAppToPipeline(pipelineId, 'my-app-prod', 'production');

Mempromosikan Slug ke Tahap Berikutnya

Pindahkan kode melalui pipeline:

const promoteSlug = async (slugId, toApp) => {
  await herokuRequest('/promotions', {
    method: 'POST',
    body: JSON.stringify({
      from: toApp, // Aplikasi Sumber
      to: toApp,   // Aplikasi Target (tahap berikutnya)
      slug: slugId
    })
  });

  console.log(`Slug ${slugId} dipromosikan ke ${toApp}`);
};

Manajemen Add-On

Menyediakan Add-On

Instal add-on Heroku:

const provisionAddon = async (appName, addonPlan, config = {}) => {
  const response = await herokuRequest('/addon-attachments', {
    method: 'POST',
    body: JSON.stringify({
      app: appName,
      plan: addonPlan,
      config: config
    })
  });

  return response;
};

// Penggunaan - menyediakan PostgreSQL
const db = await provisionAddon('my-app', 'heroku-postgresql:mini', {});
console.log(`Database disediakan: ${db.addon.name}`);
console.log(`DATABASE_URL: ${db.addon.config_vars.DATABASE_URL}`);

Add-On Populer

Add-On Paket Harga Mulai Kasus Penggunaan
heroku-postgresql mini $5/bln Basis data produksi
heroku-redis mini $5/bln Caching, sesi
papertrail choklad $7/bln Agregasi log
sentry developer Gratis Pelacakan kesalahan
mailgun sandbox Gratis Pengiriman email
newrelic lite Gratis Pemantauan aplikasi

Mencantumkan Add-On

Lihat add-on yang terinstal:

const listAddons = async (appName) => {
  const response = await herokuRequest(`/apps/${appName}/addons`);
  return response;
};

// Penggunaan
const addons = await listAddons('my-app');
addons.forEach(addon => {
  console.log(`${addon.plan.name} - $${addon.pricing.plan.price} - ${addon.state}`);
});

Menghapus Add-On

Copot pemasangan add-on:

const removeAddon = async (appName, addonId) => {
  await herokuRequest(`/apps/${appName}/addons/${addonId}`, {
    method: 'DELETE'
  });

  console.log(`Addon ${addonId} dihapus dari ${appName}`);
};

Manajemen Domain dan SSL

Menambahkan Domain Kustom

Konfigurasi domain kustom:

const addDomain = async (appName, domainName) => {
  const response = await herokuRequest(`/apps/${appName}/domains`, {
    method: 'POST',
    body: JSON.stringify({
      hostname: domainName
    })
  });

  return response;
};

// Penggunaan
const domain = await addDomain('my-app', 'api.example.com');
console.log(`Target CNAME: ${domain.cname}`);

Mengkonfigurasi Sertifikat SSL

Tambahkan SSL ke domain kustom:

const addSslCertificate = async (appName, domainId, certificateChain, privateKey) => {
  const response = await herokuRequest(`/apps/${appName}/domains/${domainId}/ssl_endpoint`, {
    method: 'PATCH',
    body: JSON.stringify({
      ssl_cert: {
        cert_chain: certificateChain,
        private_key: privateKey
      }
    })
  });

  return response;
};

SSL Otomatis dengan ACM

Aktifkan Manajemen Sertifikat Otomatis:

const enableACM = async (appName, domainName) => {
  const response = await herokuRequest(`/apps/${appName}/domains/${domainName}/sni_endpoint`, {
    method: 'POST',
    body: JSON.stringify({
      kind: 'acm'
    })
  });

  return response;
};

Pembatasan Laju dan Kuota

Memahami Batas Laju

Heroku menerapkan batas laju untuk melindungi stabilitas API:

Melebihi batas akan menghasilkan respons HTTP 429 (Terlalu Banyak Permintaan).

Mengimplementasikan Penanganan Batas Laju

Gunakan backoff eksponensial untuk percobaan ulang:

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

      // Periksa header batas laju
      const remaining = response.headers.get('RateLimit-Remaining');
      const resetTime = response.headers.get('RateLimit-Reset');

      if (remaining < 100) {
        console.warn(`Kuota rendah tersisa: ${remaining}, direset pada ${resetTime}`);
      }

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

Header Batas Laju

Heroku menyertakan header ini di setiap respons:

Header Deskripsi
RateLimit-Limit Permintaan maksimum per jam
RateLimit-Remaining Permintaan yang tersisa dalam jendela
RateLimit-Reset Stempel waktu Unix saat jendela direset

Pemecahan Masalah Umum

Masalah: Otentikasi Gagal dengan 401

Gejala: Mendapatkan kesalahan “Invalid credentials”.

Solusi:

  1. Verifikasi kunci API sudah benar: heroku authorizations
  2. Pastikan token belum kedaluwarsa (token jangka panjang berlaku 1 tahun)
  3. Periksa spasi tambahan dalam variabel lingkungan
  4. Hasilkan ulang token jika diperlukan: heroku authorizations:create

Masalah: Nama Aplikasi Sudah Digunakan

Gejala: Mendapatkan kesalahan “name is already taken”.

Solusi:

  1. Gunakan nama unik secara global - sertakan tim atau sufiks acak
  2. Hasilkan nama berbasis UUID: app-${Date.now()}
  3. Gunakan awalan namespace: teamname-appname-env
const generateUniqueAppName = (baseName) => {
  const timestamp = Date.now().toString(36);
  const random = Math.random().toString(36).substring(2, 6);
  return `${baseName}-${timestamp}-${random}`;
};

Masalah: Formasi Dyno Gagal

Gejala: Operasi penskalaan mengembalikan kesalahan.

Solusi:

  1. Verifikasi jenis proses ada di Procfile
  2. Periksa akun memiliki kuota dyno yang tersedia
  3. Pastikan aplikasi tidak ditangguhkan
  4. Tinjau penggunaan jam dyno: heroku ps --app=my-app

Masalah: Build Gagal dengan Batas Waktu

Gejala: Build menggantung atau batas waktu setelah 30 menit.

Solusi:

  1. Optimalkan pemilihan buildpack untuk bahasa Anda
  2. Cache dependensi dengan benar
  3. Bagi build besar menjadi deployment yang lebih kecil
  4. Gunakan slug yang sudah dibuat sebelumnya untuk deployment yang lebih cepat

Masalah: Batas Laju Terlampaui

Gejala: Menerima respons HTTP 429.

Solusi:

  1. Implementasikan antrean permintaan
  2. Gunakan backoff eksponensial untuk percobaan ulang
  3. Batch permintaan jika memungkinkan
  4. Pantau header batas laju secara proaktif
// Pembatas laju sederhana
class HerokuRateLimiter {
  constructor(requestsPerMinute = 150) {
    this.queue = [];
    this.interval = 60000 / requestsPerMinute;
    this.processing = false;
  }

  async add(requestFn) {
    return new Promise((resolve, reject) => {
      this.queue.push({ requestFn, resolve, reject });
      this.process();
    });
  }

  async process() {
    if (this.processing || this.queue.length === 0) return;

    this.processing = true;

    while (this.queue.length > 0) {
      const { requestFn, resolve, reject } = this.queue.shift();

      try {
        const result = await requestFn();
        resolve(result);
      } catch (error) {
        reject(error);
      }

      if (this.queue.length > 0) {
        await new Promise(r => setTimeout(r, this.interval));
      }
    }

    this.processing = false;
  }
}

Daftar Periksa Deployment Produksi

Sebelum tayang:

Pemantauan dan Peringatan

Lacak metrik ini:

const metrics = {
  apiCalls: {
    total: 0,
    successful: 0,
    failed: 0,
    rateLimited: 0
  },
  dynoHours: {
    used: 0,
    quota: 1000
  },
  deployments: {
    successful: 0,
    failed: 0,
    avg_duration: 0
  }
};

// Peringatan pada tingkat kegagalan tinggi
const failureRate = metrics.apiCalls.failed / metrics.apiCalls.total;

if (failureRate > 0.05) {
  sendAlert('Tingkat kegagalan Heroku API di atas 5%');
}

// Peringatan pada penggunaan jam dyno
if (metrics.dynoHours.used > metrics.dynoHours.quota * 0.8) {
  sendAlert('Penggunaan jam dyno di atas 80%');
}

Kasus Penggunaan Dunia Nyata

Pipeline CI/CD Otomatis

Tim SaaS mengotomatiskan deployment dari GitHub:

Alur implementasi:

  1. Push GitHub memicu alur kerja
  2. Pengujian berjalan di CI
  3. Heroku API membuat build dari blob sumber
  4. Promosikan melalui staging ke produksi
  5. Beri tahu tim tentang keberhasilan/kegagalan

Manajemen Multi-Lingkungan

Sebuah firma konsultan mengelola 50+ aplikasi klien:

Poin integrasi kunci:

Penskalaan Otomatis Berdasarkan Lalu Lintas

Platform e-commerce menangani lonjakan lalu lintas:

Logika penskalaan otomatis:

Kesimpulan

Heroku API menyediakan akses komprehensif ke fungsionalitas platform. Poin-poin penting:

button

Bagian FAQ

Untuk apa Heroku API digunakan?

Heroku API memungkinkan manajemen aplikasi, dyno, add-on, dan infrastruktur secara terprogram. Kasus penggunaan umum termasuk otomatisasi CI/CD, alat manajemen multi-aplikasi, sistem penskalaan otomatis, dan dasbor pemantauan infrastruktur.

Bagaimana cara mendapatkan kunci API Heroku?

Instal Heroku CLI, jalankan heroku login, lalu buat otorisasi dengan heroku authorizations:create. Simpan token yang dikembalikan dengan aman di variabel lingkungan.

Apakah Heroku API gratis untuk digunakan?

Ya, Heroku API gratis. Namun, Anda membayar untuk sumber daya yang Anda sediakan (dyno, add-on, dll.). Batas laju API adalah 10.000 permintaan per jam per akun.

Otentikasi apa yang digunakan Heroku API?

Heroku menggunakan otentikasi token Bearer. Sertakan header Authorization: Bearer {api_key} di setiap permintaan. Token bisa berumur pendek (1 jam) atau berumur panjang (hingga 1 tahun).

Bagaimana cara menangani batas laju Heroku API?

Pantau header RateLimit-Remaining dan implementasikan antrean permintaan. Gunakan backoff eksponensial saat menerima respons HTTP 429. Tetap di bawah 150 permintaan per menit untuk operasi yang aman.

Bisakah saya melakukan deployment tanpa Git?

Ya. Gunakan API Builds untuk melakukan deployment dari URL blob sumber. Unggah kode Anda ke penyimpanan cloud (S3, GCS) dan referensikan URL dalam permintaan build Anda.

Bagaimana cara mengotomatiskan deployment?

Gunakan API Pipeline untuk menyiapkan CI/CD. Buat build, promosikan slug melalui tahapan, dan integrasikan dengan GitHub atau sistem CI kustom.

Apa perbedaan antara rilis dan build?

Sebuah build mengkompilasi kode sumber Anda menjadi slug. Sebuah rilis menggabungkan slug dengan variabel konfigurasi untuk membuat versi aplikasi Anda yang dapat dideploy.

Bagaimana cara mengembalikan deployment yang gagal?

Gunakan API Releases untuk mencantumkan rilis terbaru, lalu lakukan POST ke /releases dengan rollback: <release_id>. Heroku membuat rilis baru pada versi sebelumnya.

Bisakah saya mengelola beberapa akun Heroku?

Ya. Gunakan token API terpisah untuk setiap akun dan beralih di antaranya dengan mengubah variabel lingkungan HEROKU_API_KEY.

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.

Cara Menggunakan Heroku API: Panduan Integrasi Lengkap (2026)