Documentación para desarrolladores
APIs de datos y documentos de Indonesia, listas en minutos
Analiza NIK, KK, matrículas y NPWP, consulta regiones, procesa PDF y resume textos, con una sola API REST o como herramientas para tu agente de IA mediante MCP.
- URL base
- https://api.bitaloka.io
- Formato
- Entrada JSON · Salida JSON o archivos
- Acceso
- Abierto durante la vista previa · Claves de API próximamente
Tu primera llamada — Sin SDK ni configuración. Envía una solicitud y recibe 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."
}
]
} Elige tu camino
Inicio rápido
Haz tu primera solicitud y lee el resultado.
Referencia de la API
Todos los endpoints con campos, código y respuestas reales.
Servidor MCP
Dale a Claude, Cursor o cualquier cliente MCP las herramientas de Bitaloka.
Sandbox
Ejecuta todos los servicios en el navegador con archivos de ejemplo.
Todos los servicios
22 servicios bajo una sola URL base. Filtra por categoría o busca.
-
Parser de KTP
GET
/v1/nik/{nik}Parsea un NIK indonesio (número de KTP) en lugar de nacimiento, fecha, sexo y región.
Análisis -
Parser de KK
GET
/v1/kk/{kk}Parsea un número de Kartu Keluarga (tarjeta familiar) en su estructura.
Análisis -
Parser de STNK
GET
/v1/plate/{plate}Parsea una matrícula (STNK) en región y datos de registro.
Análisis -
Parser de NPWP
GET
/v1/npwp/{npwp}Valida y parsea un número fiscal NPWP con su suma de verificación.
Análisis -
Datos regionales
GET
/v1/region/{code}Consulta provinsi, kota/kabupaten, kecamatan y kelurahan.
Consulta -
Batch parse
POST
/v1/batchParse up to 100 NIK, KK, plate, NPWP or region values in one request.
Análisis -
PDF info
POST
/v1/pdf/infoRead page count, size and metadata of a PDF.
Organizar -
Unir PDF
POST
/v1/pdf/mergeCombina varios PDF en uno.
Organizar -
Dividir PDF
POST
/v1/pdf/splitDivide un PDF en un archivo por página.
Organizar -
Extraer páginas
POST
/v1/pdf/extractExtrae páginas seleccionadas como un PDF nuevo.
Organizar -
Eliminar páginas
POST
/v1/pdf/removeElimina páginas seleccionadas de un PDF.
Organizar -
Organizar PDF
POST
/v1/pdf/organizeReordena, rota o elimina páginas.
Organizar -
Rotar PDF
POST
/v1/pdf/rotateRota todas las páginas 90°.
Organizar -
Marca de agua
POST
/v1/pdf/watermarkEstampa una marca de agua de texto en cada página.
Organizar -
Números de página
POST
/v1/pdf/pagenumbersAñade números de página a un PDF.
Organizar -
Comprimir PDF
POST
/v1/pdf/compressReduce el tamaño (optimiza + reduce imágenes).
Conversión -
JPG a PDF
POST
/v1/pdf/from-imagesCombina imágenes JPG/PNG en un solo PDF.
Conversión -
Reparar PDF
POST
/v1/pdf/repairRepara un PDF dañado.
Conversión -
Proteger PDF
POST
/v1/pdf/protectCifra un PDF con contraseña.
Seguridad -
Desbloquear PDF
POST
/v1/pdf/unlockQuita la contraseña de un PDF.
Seguridad -
Resumen IA
POST
/v1/ai/summaryResume textos largos con IA DeepSeek gratuita.
IA -
Traducción IA
POST
/v1/ai/translateTraduce texto a muchos idiomas.
IA
Ningún servicio coincide con tu búsqueda.