API Indonesia docsAPI referenceGet an API keyllms.txt

Other data: Al-Quran, Alkitab, KBBI, plates, astronomy, food prices

Documentation index for AI agents: /llms.txt. Every page is also available as markdown: add .md to the URL.

Al-Quran, Alkitab, KBBI dictionary, vehicle plate codes, astronomy, food prices and dataset metadata.

Reference datasets and smaller utilities that do not fit the other groups.

All endpoints need the x-api-key header (see Authentication) and return the standard envelope. A successful request costs 2 credits.

Endpoints on this page

Al-Quran

Complete list of 114 Al-Quran surahs with Arabic name, Latin transliteration, translation, number of verses, and revelation place. Static data sourced from quran.gading.dev.

GET /api/v1/quran/list-surah

List surah. Returns the complete list of 114 Al-Quran surahs, ordered by number.

curl "https://use.apiindonesia.id/api/v1/quran/list-surah" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": 1,
      "name": "الفاتحة",
      "name_latin": "Al-Fatihah",
      "name_arabic": "الفاتحة",
      "name_translation": "Pembukaan",
      "number_of_ayahs": 7,
      "revelation_place": "mecca",
      "revelation_order": 5,
      "audio_url": "https://cdn.islamic.network/quran/audio/128/ar.alafasy/1.mp3"
    }
  ]
}

GET /api/v1/quran/surah/{id}

Retrieve a surah. Returns the metadata of a single surah by number (1–114).

ParameterInRequiredTypeDescription
idpathyesintegerSurah number, 1–114.
curl "https://use.apiindonesia.id/api/v1/quran/surah/1" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "id": 1,
    "name": "الفاتحة",
    "name_latin": "Al-Fatihah",
    "name_arabic": "الفاتحة",
    "name_translation": "Pembukaan",
    "number_of_ayahs": 7,
    "revelation_place": "mecca",
    "revelation_order": 5,
    "audio_url": "https://cdn.islamic.network/quran/audio/128/ar.alafasy/1.mp3",
    "is_active": 1
  }
}

Alkitab (Bible)

Indonesian Bible (TB translation) — 66 books (39 Old Testament + 27 New Testament) with 31,104 verses. Data sourced from alkitab.sabda.org.

GET /api/v1/alkitab/books

List books. Returns all 66 Bible books with chapter counts and testament classification (OT/NT).

curl "https://use.apiindonesia.id/api/v1/alkitab/books" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": 1,
      "abbr": "Kej",
      "name": "Kejadian",
      "chapter_count": 50,
      "testament": "PL"
    },
    {
      "id": 40,
      "abbr": "Mat",
      "name": "Matius",
      "chapter_count": 28,
      "testament": "PB"
    }
  ]
}

GET /api/v1/alkitab/books/{testament}

List books by testament. Filter books by testament: PL (Old Testament) or PB (New Testament).

ParameterInRequiredTypeDescription
testamentpathyesstringPL or PB.
curl "https://use.apiindonesia.id/api/v1/alkitab/books/PB" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": 40,
      "abbr": "Mat",
      "name": "Matius",
      "chapter_count": 28,
      "testament": "PB"
    },
    {
      "id": 41,
      "abbr": "Mrk",
      "name": "Markus",
      "chapter_count": 16,
      "testament": "PB"
    }
  ]
}

GET /api/v1/alkitab/passage/{bookAbbr}/{chapter}

Read a chapter. Returns all verses in a chapter. Use book abbreviation (e.g. Gen, John, Ps) or full name.

ParameterInRequiredTypeDescription
bookAbbrpathyesstringBook abbreviation or name, e.g. Kej, Yoh, Mzm.
chapterpathyesintegerChapter number.
curl "https://use.apiindonesia.id/api/v1/alkitab/passage/Kej/1" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "book": {
      "id": 1,
      "abbr": "Kej",
      "name": "Kejadian"
    },
    "chapter": 1,
    "total_verses": 31,
    "verses": [
      {
        "verse_number": 1,
        "title": null,
        "text": "Pada mulanya Allah menciptakan langit dan bumi."
      },
      {
        "verse_number": 2,
        "title": null,
        "text": "Bumi itu batal dan kosong, gelap gulita menutupi samudera raya..."
      }
    ]
  }
}

GET /api/v1/alkitab/verse/{bookAbbr}/{chapter}/{verse}

Read a single verse. Returns a single verse by book, chapter, and verse number.

ParameterInRequiredTypeDescription
bookAbbrpathyesstringBook abbreviation or name.
chapterpathyesintegerChapter number.
versepathyesintegerVerse number.
curl "https://use.apiindonesia.id/api/v1/alkitab/verse/Yoh/3/16" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "book": {
      "id": 43,
      "abbr": "Yoh",
      "name": "Yohanes"
    },
    "chapter": 3,
    "verse_number": 16,
    "title": null,
    "text": "Karena begitu besar kasih Allah akan dunia ini, sehingga Ia telah mengaruniakan Anak-Nya yang tunggal, supaya setiap orang yang percaya kepada-Nya tidak bina..."
  }
}

Search verses. Search for a word or phrase across all 31,104 Bible verses. Supports pagination via limit and offset.

ParameterInRequiredTypeDescription
qqueryyesstringSearch keyword, minimum 3 characters.
limitquerynointegerResults per page. Defaults to 20, maximum 100.
offsetquerynointegerPagination offset. Defaults to 0.
curl "https://use.apiindonesia.id/api/v1/alkitab/search?q=Imanuel" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "verse_number": 14,
      "title": null,
      "text": "Sebab itu Tuhan sendirilah yang akan memberikan kepadamu suatu pertanda: Sesungguhnya, seorang perawan akan mengandung dan melahirkan seorang anak laki-laki,...",
      "abbr": "Yes",
      "name": "Yesaya",
      "chapter": 7
    }
  ],
  "meta": {
    "total": 3,
    "page": 1,
    "per_page": 20,
    "total_pages": 1
  }
}

KBBI (Indonesian Dictionary)

Indonesian Great Dictionary (KBBI) with 62,850+ word entries. Supports word search, exact word lookup, and random words. Data sourced from github.com/dyazincahya/KBBI-SQL-database (MIT License).

Search words. Search KBBI dictionary by keyword. Supports pagination.

ParameterInRequiredTypeDescription
qqueryyesstringSearch keyword.
pagequerynointegerPage number (default 1).
per_pagequerynointegerItems per page (default 20, max 100).
curl "https://use.apiindonesia.id/api/v1/kbbi/search?q=rumah" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": 50001,
      "word": "rumah",
      "arti": "Nomina (kata benda)\n(1) bangunan untuk tempat tinggal manusia",
      "type": 2
    }
  ],
  "meta": {
    "total": 15,
    "page": 1,
    "per_page": 5,
    "total_pages": 3
  }
}

GET /api/v1/kbbi/word/{word}

Look up a word. Returns all KBBI entries for a specific word (some words have multiple entries).

ParameterInRequiredTypeDescription
wordpathyesstringWord to look up, e.g. rumah.
curl "https://use.apiindonesia.id/api/v1/kbbi/word/rumah" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": 50001,
      "word": "rumah",
      "arti": "Nomina (kata benda)\n(1) bangunan untuk tempat tinggal manusia",
      "type": 2
    }
  ]
}

GET /api/v1/kbbi/random

Random words. Returns random words from KBBI. Useful for games or learning apps.

ParameterInRequiredTypeDescription
countquerynointegerNumber of words (default 1, max 20).
curl "https://use.apiindonesia.id/api/v1/kbbi/random" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": 12345,
      "word": "budaya",
      "arti": "Nomina (kata benda)\n(1) pikiran; akal budi",
      "type": 2
    },
    {
      "id": 67890,
      "word": "karya",
      "arti": "Nomina (kata benda)\n(1) hasil perbuatan; cipta",
      "type": 2
    }
  ]
}

Vehicle Plates

Complete list of 61 Indonesian vehicle plate codes with region and province names. Static data sourced from an open dataset.

GET /api/v1/plates

List vehicle plates. Returns all 61 vehicle plate codes, sorted by code.

curl "https://use.apiindonesia.id/api/v1/plates" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": "plate_B",
      "plate_code": "B",
      "region": "Jakarta",
      "province": "DKI Jakarta",
      "cities": "Jakarta Pusat, Jakarta Utara, Jakarta Barat, Jakarta Selatan, Jakarta Timur, Kepulauan Seribu",
      "is_active": 1
    }
  ]
}

GET /api/v1/plates/{code}

Retrieve a plate code. Returns details for a single plate code.

ParameterInRequiredTypeDescription
codepathyesstringPlate code, e.g. B, DK, L.
curl "https://use.apiindonesia.id/api/v1/plates/B" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "id": "plate_B",
    "plate_code": "B",
    "region": "Jakarta",
    "province": "DKI Jakarta",
    "cities": "Jakarta Pusat, Jakarta Utara, Jakarta Barat, Jakarta Selatan, Jakarta Timur, Kepulauan Seribu",
    "is_active": 1
  }
}

Astronomy

Astronomy data computed from public NOAA/USNO formulas.

GET /api/v1/astronomi/sun

Sunrise & sunset. Returns sunrise, sunset, solar noon, and day length for a given lat/lon and date. Handles polar night / midnight sun.

ParameterInRequiredTypeDescription
latqueryyesnumberDecimal latitude (-90..90), e.g. -6.2.
lonqueryyesnumberDecimal longitude (-180..180), e.g. 106.8.
tanggalquerynostringDate in YYYY-MM-DD. Defaults to today.
tzquerynostringISO timezone offset, e.g. +07:00. Defaults to +00:00.
curl "https://use.apiindonesia.id/api/v1/astronomi/sun?lat=-6.2&lon=106.8" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "date": "2025-06-21",
    "latitude": -6.2,
    "longitude": 106.8,
    "timezone": "+07:00",
    "sunrise": "06:00",
    "sunset": "17:46",
    "solarNoon": "11:53",
    "dayLength": 42343,
    "declination": 23.44,
    "equationOfTime": -0.76,
    "polarPhase": "normal"
  },
  "meta": {
    "disclaimer": "Hasil dihitung dari rumus astronomi publik (NOAA/USNO). Aksen ±2 menit adalah normal untuk terbit/terbenam.",
    "source": "Computed (NOAA/USNO)"
  }
}

GET /api/v1/astronomi/twilight

Twilight times. Returns civil, nautical, and astronomical twilight boundaries for photography/observation.

ParameterInRequiredTypeDescription
latqueryyesnumberDecimal latitude.
lonqueryyesnumberDecimal longitude.
tanggalquerynostringDate in YYYY-MM-DD. Defaults to today.
tzquerynostringISO timezone offset, e.g. +07:00.
curl "https://use.apiindonesia.id/api/v1/astronomi/twilight?lat=-6.2&lon=106.8" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "civilDawn": "05:35",
    "civilDusk": "18:11",
    "nauticalDawn": "05:06",
    "nauticalDusk": "18:40",
    "astronomicalDawn": "04:37",
    "astronomicalDusk": "19:09"
  },
  "meta": {
    "disclaimer": "Hasil dihitung dari rumus astronomi publik (NOAA/USNO)...",
    "source": "Computed (NOAA/USNO)"
  }
}

GET /api/v1/astronomi/moon

Moon phase. Returns the moon phase (illumination, phase name, age, distance) for a given date.

ParameterInRequiredTypeDescription
tanggalquerynostringDate in YYYY-MM-DD. Defaults to today.
curl "https://use.apiindonesia.id/api/v1/astronomi/moon" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "date": "2025-02-12",
    "illumination": 0.98,
    "phaseAngle": 178.2,
    "phaseName": "Bulan Purnama",
    "phaseNameEn": "Full Moon",
    "age": 14.7,
    "visiblePercent": 98,
    "trend": "waxing",
    "distanceEarthRadii": 60.3,
    "julianDay": 2460713.5
  },
  "meta": {
    "source": "Computed (NOAA/USNO)"
  }
}

GET /api/v1/astronomi/moon/next

Upcoming moon phases. Returns the next major moon phases (new/first quarter/full/last quarter), up to 12 ahead.

ParameterInRequiredTypeDescription
tanggalquerynostringStart date in YYYY-MM-DD. Defaults to today.
countquerynointegerNumber of phases (1–12). Defaults to 4.
curl "https://use.apiindonesia.id/api/v1/astronomi/moon/next" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "phase": "first_quarter",
      "name": "Kuartil Awal",
      "nameEn": "First Quarter",
      "date": "2025-01-05",
      "daysUntil": 4,
      "phaseAngle": 90
    },
    {
      "phase": "full",
      "name": "Bulan Purnama",
      "nameEn": "Full Moon",
      "date": "2025-01-13",
      "daysUntil": 12,
      "phaseAngle": 180
    }
  ],
  "meta": {
    "source": "Computed (NOAA/USNO)"
  }
}

GET /api/v1/astronomi/gerhana

Eclipse predictions. Returns upcoming solar & lunar eclipses (approximation based on saros/draconic cycles). Dates & kinds are indicative.

ParameterInRequiredTypeDescription
tanggalquerynostringStart date in YYYY-MM-DD. Defaults to today.
daysquerynointegerHorizon in days (1–1825). Defaults to 365.
curl "https://use.apiindonesia.id/api/v1/astronomi/gerhana" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "type": "lunar",
      "date": "2025-03-14",
      "kind": "Total",
      "kindEn": "Total",
      "magnitude": 0.93
    },
    {
      "type": "solar",
      "date": "2025-03-29",
      "kind": "Sebagian",
      "kindEn": "Partial",
      "magnitude": 0.71
    }
  ],
  "meta": {
    "source": "Computed (NOAA/USNO)",
    "note": "Prediksi aproximasi berbasis siklus saros/draconic. Tanggal & jenis bersifat indikatif."
  }
}

Food Prices & Anomaly Index (National Food Agency)

Official National Food Agency (Bapanas) food-price data.

GET /api/v1/harga-pangan

Food-price series overview. Returns a summary of every series (consumer/producer level x national/province region): commodity count, row count, and the available month range.

curl "https://use.apiindonesia.id/api/v1/harga-pangan" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "success": true,
  "data": [
    {
      "tingkat": "konsumen",
      "wilayah": "nasional",
      "komoditas": 46,
      "rows": 1146,
      "dari": "2021-01",
      "sampai": "2026-01"
    },
    {
      "tingkat": "konsumen",
      "wilayah": "provinsi",
      "komoditas": 27,
      "rows": 36348,
      "dari": "2021-01",
      "sampai": "2026-01"
    }
  ]
}

GET /api/v1/harga-pangan/harga

Monthly food prices. Returns monthly average food prices, filterable by level, region, commodity, province, and month range. Prices are integers in rupiah; "-" in the source becomes null.

ParameterInRequiredTypeDescription
tingkatquerynostringSet tingkat=konsumen or tingkat=produsen.
wilayahquerynostringSet wilayah=nasional or wilayah=provinsi.
komoditasquerynostringFilter by commodity name, e.g. beras premium (partial match).
provinsiquerynostringFilter by province name or code, e.g. aceh or 11.
dariquerynostringStart month, format yyyy-mm, e.g. 2025-01.
sampaiquerynostringEnd month, format yyyy-mm, e.g. 2026-01.
pagequerynointegerPage to retrieve. Defaults to 1.
limitquerynointegerItems per page. Default 20, max 100.
curl "https://use.apiindonesia.id/api/v1/harga-pangan/harga" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "success": true,
  "data": [
    {
      "tingkat": "konsumen",
      "wilayah": "nasional",
      "kode_provinsi": null,
      "provinsi": null,
      "komoditas": "Beras Premium",
      "tanggal": "2026-01",
      "harga": 16080,
      "harga_raw": "Rp16,080"
    },
    {
      "tingkat": "konsumen",
      "wilayah": "nasional",
      "kode_provinsi": null,
      "provinsi": null,
      "komoditas": "Beras Medium",
      "tanggal": "2026-01",
      "harga": 15100,
      "harga_raw": "Rp15,100"
    }
  ],
  "meta": {
    "total": 36,
    "page": 1,
    "per_page": 3,
    "total_pages": 12
  }
}

GET /api/v1/harga-pangan/anomali

Food-price anomaly index. Strategic commodity price-anomaly indices (QIPA, AIPA, IFPA) with status Alert (Low/High Price) or Normal. From National Food Agency monthly releases (check the latest date in the response); useful to flag abnormal price spikes or drops.

ParameterInRequiredTypeDescription
komoditasquerynostringFilter by commodity name, e.g. beras premium.
dariquerynostringStart month, format yyyy-mm.
sampaiquerynostringEnd month, format yyyy-mm.
pagequerynointegerPage to retrieve. Defaults to 1.
limitquerynointegerItems per page. Default 20.
curl "https://use.apiindonesia.id/api/v1/harga-pangan/anomali" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "success": true,
  "data": [
    {
      "tanggal": "2026-08",
      "komoditas": "Beras Premium",
      "qipa": -1.97,
      "aipa": -0.86,
      "ifpa": -1.3,
      "status": "Alert (Low Price)"
    }
  ],
  "meta": {
    "total": 105,
    "page": 1,
    "per_page": 20,
    "total_pages": 6
  }
}

Dataset Metadata

Snapshot and provenance metadata for datasets, including source, version, item count, synchronization time, checksum, status, and warnings.

GET /api/v1/meta/datasets

List dataset metadata. Returns metadata for every registered dataset. This endpoint does not require an API key.

curl "https://use.apiindonesia.id/api/v1/meta/datasets"

Example response (shortened):

{
  "success": true,
  "data": [
    {
      "dataset": "sekolah",
      "source_url": "https://example.go.id/sekolah.csv",
      "source_kind": "snapshot",
      "source_version": "2026-09-18",
      "source_year": 2026,
      "total_items": 200123,
      "synced_at": "2026-09-18T01:02:03.000Z",
      "schema_version": "1",
      "payload_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "status": "ready",
      "warnings": []
    }
  ]
}

GET /api/v1/meta/datasets/{dataset}

Retrieve dataset metadata. Returns snapshot and provenance metadata for one dataset.

ParameterInRequiredTypeDescription
datasetpathyesstringDataset ID, e.g. sekolah.
curl "https://use.apiindonesia.id/api/v1/meta/datasets/sekolah"

Example response (shortened):

{
  "success": true,
  "data": {
    "dataset": "sekolah",
    "source_url": null,
    "source_kind": "unknown",
    "source_version": null,
    "source_year": null,
    "total_items": 200123,
    "synced_at": null,
    "schema_version": null,
    "payload_sha256": null,
    "status": "unknown",
    "warnings": [
      "Backfilled from an existing table; original sync provenance is unavailable."
    ]
  }
}