Dokumentasi API

Selamat datang di dokumentasi PortalData Indonesia API. Panduan lengkap untuk mengintegrasikan data referensi Indonesia ke dalam aplikasi Anda.

Quick Start

1. Dapatkan API Key

Daftar akun gratis di portaldata.id/signup dan buat API key di dashboard.

2. Kirim Request Pertama

Terminal
curl -X GET "https://api.portaldata.id/api/v1/regions?level=province" \
  -H "X-API-Key: YOUR_API_KEY"

3. Terima Response

Response
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "code": "31",
      "name": "DKI Jakarta",
      "nameEn": "Special Capital Region of Jakarta",
      "level": "province",
      "latitude": -6.2088,
      "longitude": 106.8456
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 38,
    "totalPages": 1
  },
  "meta": {
    "source": "BPS / Kemendagri",
    "apiVersion": "1.0.0"
  }
}

Base URL

https://api.portaldata.id/api/v1/

Semua endpoint API menggunakan base URL di atas. Pastikan untuk selalu menggunakan HTTPS.

Autentikasi

Semua request ke API memerlukan API key. Ada dua cara untuk mengirimkan API key:

Header X-API-Key (Direkomendasikan)

X-API-Key: YOUR_API_KEY

Header Authorization

Authorization: Bearer YOUR_API_KEY

Pelajari lebih lanjut tentang autentikasi →

API Endpoints

PortalData menyediakan 6 produk data referensi Indonesia:

Format Response

Semua response API menggunakan format JSON dengan struktur yang konsisten:

Response Sukses (List dengan Pagination)

{
  "data": [...],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 1000,
    "totalPages": 20
  },
  "meta": {
    "source": "BPS",
    "apiVersion": "1.0.0",
    "regulationRef": "...",
    "riskLevel": "low",
    "lastUpdated": "2025-01-01T00:00:00Z"
  },
  "disclaimer": "Reference data only. Not legal or tax advice."
}

Response Sukses (Single Object)

{
  "data": {...},
  "meta": {
    "source": "BPS",
    "apiVersion": "1.0.0"
  },
  "disclaimer": "Reference data only. Not legal or tax advice."
}

Response Error

{
  "error": "unauthorized",
  "message": "Invalid or missing API key"
}

Kode Error

KodeHTTP StatusDeskripsi
unauthorized401API key tidak valid atau tidak ada
rate_limit_exceeded429Batas request per menit terlampaui
monthly_limit_exceeded429Kuota bulanan terlampaui
not_found404Resource tidak ditemukan
validation_error400Parameter query tidak valid
internal_error500Error internal server

Rate Limiting

Setiap API key memiliki batas request berdasarkan tier langganan:

TierRequest/MenitRequest/Bulan
Free101.000
Pro10050.000
Growth500500.000
Enterprise2.000Unlimited

Pelajari lebih lanjut tentang rate limiting →

SDK & Libraries

Contoh penggunaan API dalam berbagai bahasa pemrograman:

JavaScript (fetch)
const response = await fetch(
  'https://api.portaldata.id/api/v1/regions?level=province',
  {
    headers: {
      'X-API-Key': 'YOUR_API_KEY'
    }
  }
);
const data = await response.json();
console.log(data);
Python (requests)
import requests

response = requests.get(
    'https://api.portaldata.id/api/v1/regions',
    params={'level': 'province'},
    headers={'X-API-Key': 'YOUR_API_KEY'}
)
data = response.json()
print(data)
PHP (cURL)
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.portaldata.id/api/v1/regions?level=province');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: YOUR_API_KEY']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data);