개발자 문서
몇 분 만에 시작하는 인도네시아 데이터 및 문서 API
NIK, KK, 차량 번호판, NPWP를 파싱하고, 지역을 조회하고, PDF를 처리하고, 텍스트를 요약합니다. 하나의 REST API로 사용하거나 MCP를 통해 AI 에이전트의 도구로 사용할 수 있습니다.
- 기본 URL
- https://api.bitaloka.io
- 형식
- JSON 입력 · JSON 또는 파일 출력
- 접근
- 프리뷰 기간 동안 공개 · API 키 곧 지원
첫 번째 호출 — SDK도 설정도 필요 없습니다. 요청을 보내면 JSON이 반환됩니다.
curl -sS "https://api.bitaloka.io/v1/nik/3171014501900001" \
-H "X-API-Key: $BITALOKA_API_KEY" \
--fail-with-body const apiKey = process.env.BITALOKA_API_KEY ?? ''
const res = await fetch("https://api.bitaloka.io/v1/nik/3171014501900001", {
headers: { 'X-API-Key': apiKey },
})
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`)
const data = await res.json()
console.log(data) import os
import requests
API_KEY = os.environ.get("BITALOKA_API_KEY", "")
res = requests.get(
"https://api.bitaloka.io/v1/nik/3171014501900001",
headers={"X-API-Key": API_KEY},
timeout=30,
)
res.raise_for_status()
print(res.json()) <?php
$ch = curl_init('https://api.bitaloka.io/v1/nik/3171014501900001');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('BITALOKA_API_KEY')],
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
if ($body === false || $status >= 400) {
throw new RuntimeException("HTTP $status: $body");
}
print_r(json_decode($body, true)); package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.bitaloka.io/v1/nik/3171014501900001", nil)
check(err)
req.Header.Set("X-API-Key", os.Getenv("BITALOKA_API_KEY"))
res, err := http.DefaultClient.Do(req)
check(err)
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
check(err)
if res.StatusCode >= 400 {
panic(fmt.Sprintf("HTTP %d: %s", res.StatusCode, body))
}
fmt.Println(string(body))
}
func check(err error) {
if err != nil {
panic(err)
}
} {
"valid": true,
"input": "3171014501900001",
"normalized": "3171014501900001",
"gender": "P",
"birthDate": {
"day": 5,
"month": 1,
"yearTwoDigit": 90,
"yearCandidates": [
1990,
2090
],
"yearResolved": 1990,
"yearIsAmbiguous": false
},
"region": {
"province": {
"code": "31",
"name": "Daerah Khusus Ibukota Jakarta"
},
"regency": {
"code": "3171",
"name": "Kota Administrasi Jakarta Pusat"
},
"district": {
"code": "317101",
"name": "Gambir"
}
},
"serial": "0001",
"genderConsistent": false,
"summary": "Perempuan, lahir 5 Januari 1990, Gambir, Kota Administrasi Jakarta Pusat, Daerah Khusus Ibukota Jakarta",
"errors": [],
"warnings": [
{
"code": "GENDER_MISMATCH",
"message": "Gender from birth-day offset does not match serial parity (last digit). Possible data-entry error."
}
]
} 경로 선택
모든 서비스
하나의 기본 URL로 22개의 서비스를 제공합니다. 카테고리로 필터링하거나 검색하세요.
-
KTP 파서
GET
/v1/nik/{nik}인도네시아 NIK(KTP 번호)를 출생지, 생년월일, 성별, 지역으로 파싱합니다.
파싱 -
KK 파서
GET
/v1/kk/{kk}Kartu Keluarga(가족 카드) 번호를 구조화합니다.
파싱 -
STNK 파서
GET
/v1/plate/{plate}차량 번호판(STNK)을 지역 및 등록 정보로 파싱합니다.
파싱 -
NPWP 파서
GET
/v1/npwp/{npwp}NPWP 납세 번호를 체크섬과 함께 검증·파싱합니다.
파싱 -
지역 데이터
GET
/v1/region/{code}주, 시/군, 구, 마을을 조회합니다.
조회 -
Batch parse
POST
/v1/batchParse up to 100 NIK, KK, plate, NPWP or region values in one request.
파싱 -
PDF info
POST
/v1/pdf/infoRead page count, size and metadata of a PDF.
정리 -
PDF 병합
POST
/v1/pdf/merge여러 PDF를 하나로 병합합니다.
정리 -
PDF 분할
POST
/v1/pdf/splitPDF를 페이지별로 분할합니다.
정리 -
페이지 추출
POST
/v1/pdf/extract선택한 페이지를 새 PDF로 추출합니다.
정리 -
페이지 삭제
POST
/v1/pdf/removePDF에서 선택한 페이지를 제거합니다.
정리 -
PDF 정리
POST
/v1/pdf/organize페이지 순서 변경, 회전 또는 삭제.
정리 -
PDF 회전
POST
/v1/pdf/rotate모든 페이지를 90° 회전합니다.
정리 -
워터마크
POST
/v1/pdf/watermark모든 페이지에 텍스트 워터마크를 찍습니다.
정리 -
페이지 번호
POST
/v1/pdf/pagenumbersPDF에 페이지 번호를 추가합니다.
정리 -
PDF 압축
POST
/v1/pdf/compress파일 크기를 줄입니다(최적화 + 이미지 축소).
변환 -
JPG → PDF
POST
/v1/pdf/from-imagesJPG/PNG 이미지를 하나의 PDF로 합칩니다.
변환 -
PDF 복구
POST
/v1/pdf/repair손상된 PDF를 복구합니다.
변환 -
PDF 보호
POST
/v1/pdf/protect비밀번호로 PDF를 암호화합니다.
보안 -
PDF 잠금 해제
POST
/v1/pdf/unlockPDF에서 비밀번호를 제거합니다.
보안 -
AI 요약
POST
/v1/ai/summary무료 DeepSeek AI로 긴 텍스트를 요약합니다.
AI -
AI 번역
POST
/v1/ai/translate텍스트를 여러 언어로 번역합니다.
AI
검색 조건과 일치하는 서비스가 없습니다.