DocsAutentikasi

Autentikasi

Semua request ke PortalData API memerlukan autentikasi menggunakan API key. Pelajari cara mendapatkan dan menggunakan API key Anda.

Cara Kerja Autentikasi

PortalData menggunakan API key untuk mengautentikasi semua request. Setiap API key terhubung dengan akun perusahaan Anda dan memiliki batas penggunaan sesuai tier langganan.

Alur Autentikasi

  1. 1Anda mengirim request dengan API key di header
  2. 2Server memvalidasi API key dan mengecek status akun
  3. 3Server mengecek rate limit dan kuota bulanan
  4. 4Jika valid, request diproses dan response dikembalikan

Mendapatkan API Key

1. Buat Akun

Daftar akun gratis di portaldata.id/signup

2. Verifikasi Email

Cek inbox email Anda dan klik link verifikasi yang kami kirim.

3. Buat API Key

Di dashboard, navigasi ke API Keys dan klik Create New Key.

4. Simpan API Key

API key hanya ditampilkan sekali. Simpan dengan aman di environment variables atau secret manager.

Jaga Kerahasiaan API Key

Jangan pernah menyimpan API key di kode sumber, repository publik, atau frontend application. Gunakan environment variables untuk menyimpan API key dengan aman.

Menggunakan API Key

Ada dua cara untuk mengirimkan API key dalam request:

DirekomendasikanHeader X-API-Key

Kirim API key melalui header X-API-Key:

cURL
curl -X GET "https://api.portaldata.id/api/v1/regions" \
  -H "X-API-Key: pk_live_xxxxxxxxxxxxxxxx"
Header Authorization (Bearer Token)

Alternatif: kirim API key sebagai Bearer token melalui header Authorization:

curl -X GET "https://api.portaldata.id/api/v1/regions" \
  -H "Authorization: Bearer pk_live_xxxxxxxxxxxxxxxx"

Pilih Satu Metode

Jika kedua header dikirim bersamaan, X-API-Key akan diprioritaskan. Kami merekomendasikan menggunakan X-API-Key untuk konsistensi.

Contoh Kode

JavaScript (fetch)
// Simpan API key di environment variable
const API_KEY = process.env.PORTALDATA_API_KEY;

async function fetchRegions() {
  const response = await fetch(
    'https://api.portaldata.id/api/v1/regions',
    {
      headers: {
        'X-API-Key': API_KEY
      }
    }
  );

  if (!response.ok) {
    const error = await response.json();
    throw new Error(error.message);
  }

  return response.json();
}
Python (requests)
import os
import requests

# Simpan API key di environment variable
API_KEY = os.environ.get('PORTALDATA_API_KEY')

def fetch_regions():
    response = requests.get(
        'https://api.portaldata.id/api/v1/regions',
        headers={'X-API-Key': API_KEY}
    )

    if not response.ok:
        error = response.json()
        raise Exception(error['message'])

    return response.json()
Node.js (axios)
const axios = require('axios');

// Buat instance dengan default headers
const portaldata = axios.create({
  baseURL: 'https://api.portaldata.id/api/v1',
  headers: {
    'X-API-Key': process.env.PORTALDATA_API_KEY
  }
});

// Gunakan instance untuk semua request
async function fetchRegions() {
  const { data } = await portaldata.get('/regions');
  return data;
}

async function fetchKBLI(code) {
  const { data } = await portaldata.get(`/kbli/${code}`);
  return data;
}

Format API Key

API key PortalData memiliki format sebagai berikut:

pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PrefixDeskripsi
pk_live_Production key - untuk production environment
pk_test_Test key - untuk development dan testing

Error Autentikasi

Jika autentikasi gagal, API akan mengembalikan error dengan HTTP status 401:

401 Unauthorized - API key tidak ada
{
  "error": "unauthorized",
  "message": "API key is required. Pass it via X-API-Key header."
}
401 Unauthorized - API key tidak valid
{
  "error": "unauthorized",
  "message": "Invalid or expired API key."
}

Best Practices

Gunakan Environment Variables

Simpan API key di environment variables (.env) dan jangan pernah commit ke repository.

Buat API Key Terpisah per Environment

Gunakan API key berbeda untuk development, staging, dan production untuk memudahkan tracking dan keamanan.

Rotate API Key Secara Berkala

Buat API key baru dan hapus yang lama secara berkala, terutama jika ada pergantian tim atau potensi kebocoran.

Jangan Expose di Frontend

API key harus disimpan di server-side. Jika butuh akses dari frontend, buat proxy API di backend Anda.

Lihat Juga