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_KEYHeader Authorization
Authorization: Bearer YOUR_API_KEYAPI 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
| Kode | HTTP Status | Deskripsi |
|---|---|---|
unauthorized | 401 | API key tidak valid atau tidak ada |
rate_limit_exceeded | 429 | Batas request per menit terlampaui |
monthly_limit_exceeded | 429 | Kuota bulanan terlampaui |
not_found | 404 | Resource tidak ditemukan |
validation_error | 400 | Parameter query tidak valid |
internal_error | 500 | Error internal server |
Rate Limiting
Setiap API key memiliki batas request berdasarkan tier langganan:
| Tier | Request/Menit | Request/Bulan |
|---|---|---|
| Free | 10 | 1.000 |
| Pro | 100 | 50.000 |
| Growth | 500 | 500.000 |
| Enterprise | 2.000 | Unlimited |
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);