# Other data: world geo, IP geolocation and LEI

> Documentation index for AI agents: [/llms.txt](https://docs.apiindonesia.id/llms.txt). Every page is also available as markdown: add `.md` to the URL.

Countries, cities and time zones, IP geolocation and legal entity identifiers (LEI).

World countries, cities and time zones (GeoNames), IP geolocation (DB-IP Lite) and Indonesian legal entity identifiers from the GLEIF golden copy.

All endpoints need the `x-api-key` header (see [Authentication](https://docs.apiindonesia.id/authentication.md)) and return the standard [envelope](https://docs.apiindonesia.id/errors.md). A successful request costs 2 credits.

## Endpoints on this page

- [`GET /api/v1/ip/{ip}`](#get-api-v1-ip-ip): Look up an IP address
- [`GET /api/v1/ip/me`](#get-api-v1-ip-me): Look up the caller's IP
- [`POST /api/v1/ip/batch`](#post-api-v1-ip-batch): Look up many IP addresses
- [`GET /api/v1/lei`](#get-api-v1-lei): Search legal entities
- [`GET /api/v1/lei/{lei}`](#get-api-v1-lei-lei): Retrieve an LEI
- [`GET /api/v1/lei/{lei}/children`](#get-api-v1-lei-lei-children): List children
- [`GET /api/v1/geo/negara`](#get-api-v1-geo-negara): List countries
- [`GET /api/v1/geo/negara/{code}`](#get-api-v1-geo-negara-code): Retrieve a country
- [`GET /api/v1/geo/kota`](#get-api-v1-geo-kota): Search cities
- [`GET /api/v1/geo/kota/nearby`](#get-api-v1-geo-kota-nearby): Nearest cities
- [`GET /api/v1/geo/kota/{geonameid}`](#get-api-v1-geo-kota-geonameid): Retrieve a city
- [`GET /api/v1/geo/zona-waktu`](#get-api-v1-geo-zona-waktu): List time zones
- [`GET /api/v1/geo/zona-waktu/{tz}`](#get-api-v1-geo-zona-waktu-tz): Time zone with local time

## World Geo: Countries, Cities & Time Zones (GeoNames)

World geography reference category: countries, cities, and time zones.

- 252 countries with ISO2/ISO3 codes, capital, currency, languages, calling code and population
- 69,991 cities (cities5000: population above 5,000 or an administrative seat) with coordinates, first-level division, population and time zone
- Nearest-city search from a coordinate
- 418 IANA time zones with GMT/DST offsets and the current local time
- Data: the official GeoNames dump, licensed CC BY 4.0, so it may be used commercially as long as the attribution is kept

### GET /api/v1/geo/negara

**List countries.** Returns the 252 countries and territories in GeoNames countryInfo, ordered by name: ISO2, ISO3, numeric code, capital, continent, area, population, currency, calling code (without +), languages, TLD, postal code format and neighbours.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `q` | query | no | string | Partial country or capital name, or an exact ISO2/ISO3 code. |
| `continent` | query | no | string | Continent filter: AF, AN, AS, EU, NA, OC, SA. |
| `page` | query | no | integer | Page. Defaults to 1. |
| `per_page` | query | no | integer | Items per page. Defaults to 50, maximum 300 (every country in one page). |

```bash
curl "https://use.apiindonesia.id/api/v1/geo/negara" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": [
    {
      "iso2": "ID",
      "iso3": "IDN",
      "iso_numeric": "360",
      "fips": "ID",
      "name": "Indonesia",
      "capital": "Jakarta",
      "continent": "AS",
      "area_km2": 1919440,
      "population": 285721236,
      "currency": {
        "code": "IDR",
        "name": "Rupiah"
      },
      "phone_code": "62",
      "languages": [
        "id",
        "en"
      ],
      "tld": ".id",
      "postal_code_format": "#####",
      "postal_code_regex": "^(\\d{5})$",
      "neighbours": [
        "PG",
        "TL"
      ],
      "geonameid": 1643084
    }
  ],
  "meta": {
    "total": 1,
    "page": 1,
    "per_page": 50,
    "total_pages": 1,
    "attribution": {
      "source": "GeoNames (https://www.geonames.org)",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://download.geonames.org/export/dump/",
      "attribution_page": "https://www.geonames.org",
      "notice": "Data diubah: subset cities5000, countryInfo, admin1 dan timeZones dinormalisasi ke format JSON API Indonesia; waktu lokal dihitung oleh API Indonesia"
    }
  }
}
```

### GET /api/v1/geo/negara/{code}

**Retrieve a country.** One country by ISO2 or ISO3 code (case-insensitive), with its time zones and the number of its cities in the cities5000 data. An unknown code answers 404 NOT_FOUND.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `code` | path | yes | string | ISO2 or ISO3 code, e.g. ID or IDN. |

```bash
curl "https://use.apiindonesia.id/api/v1/geo/negara/ID" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": {
    "iso2": "ID",
    "iso3": "IDN",
    "name": "Indonesia",
    "capital": "Jakarta",
    "continent": "AS",
    "population": 285721236,
    "currency": {
      "code": "IDR",
      "name": "Rupiah"
    },
    "phone_code": "62",
    "languages": [
      "id",
      "en"
    ],
    "timezones": [
      {
        "tz": "Asia/Jakarta",
        "country_code": "ID",
        "gmt_offset": 7,
        "dst_offset": 7,
        "raw_offset": 7,
        "offset_year": 2026
      },
      {
        "tz": "Asia/Jayapura",
        "country_code": "ID",
        "gmt_offset": 9,
        "dst_offset": 9,
        "raw_offset": 9,
        "offset_year": 2026
      }
    ],
    "city_count": 485
  },
  "meta": {
    "attribution": {
      "source": "GeoNames (https://www.geonames.org)",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://download.geonames.org/export/dump/",
      "attribution_page": "https://www.geonames.org",
      "notice": "Data diubah: subset cities5000, countryInfo, admin1 dan timeZones dinormalisasi ke format JSON API Indonesia; waktu lokal dihitung oleh API Indonesia"
    }
  }
}
```

### GET /api/v1/geo/kota

**Search cities.** Cities from GeoNames cities5000, largest population first. q matches the PREFIX of the name or ASCII name, case-insensitively ("sao" finds São Paulo); translated names (e.g. Indonesian names for foreign cities) are not available yet.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `q` | query | no | string | City name prefix, e.g. jak. |
| `country` | query | no | string | ISO2 country code, e.g. ID (485 cities). |
| `page` | query | no | integer | Page. Defaults to 1; a page past the offset ceiling answers 400 PAGINATION_LIMIT. |
| `per_page` | query | no | integer | Items per page. Defaults to 20, maximum 100. |

```bash
curl "https://use.apiindonesia.id/api/v1/geo/kota" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": [
    {
      "geonameid": 1642911,
      "name": "Jakarta",
      "asciiname": "Jakarta",
      "lat": -6.21462,
      "lng": 106.84513,
      "feature_code": "PPLC",
      "country_code": "ID",
      "admin1_code": "04",
      "admin1_name": "Jakarta",
      "population": 8540121,
      "timezone": "Asia/Jakarta"
    },
    {
      "geonameid": 1625822,
      "name": "Surabaya",
      "asciiname": "Surabaya",
      "lat": -7.24917,
      "lng": 112.75083,
      "feature_code": "PPLA",
      "country_code": "ID",
      "admin1_code": "08",
      "admin1_name": "East Java",
      "population": 3018022,
      "timezone": "Asia/Jakarta"
    }
  ],
  "meta": {
    "total": 485,
    "page": 1,
    "per_page": 2,
    "total_pages": 243,
    "attribution": {
      "source": "GeoNames (https://www.geonames.org)",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://download.geonames.org/export/dump/",
      "attribution_page": "https://www.geonames.org",
      "notice": "Data diubah: subset cities5000, countryInfo, admin1 dan timeZones dinormalisasi ke format JSON API Indonesia; waktu lokal dihitung oleh API Indonesia"
    }
  }
}
```

### GET /api/v1/geo/kota/nearby

**Nearest cities.** Cities around a coordinate, nearest first, with the great-circle distance in kilometres (distance_km). Radius defaults to 50 km (maximum 500) and limit to 20 (maximum 100). Searches across the 180° meridian are handled.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `lat` | query | yes | number | Latitude, -90 to 90. |
| `lon` | query | yes | number | Longitude, -180 to 180 (lng is accepted too). |
| `radius` | query | no | number | Radius in km, maximum 500. Defaults to 50. |
| `limit` | query | no | integer | Number of cities, 1 to 100. Defaults to 20. |

```bash
curl "https://use.apiindonesia.id/api/v1/geo/kota/nearby?lat=-0.0263&lon=109.3425" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": [
    {
      "geonameid": 1630789,
      "name": "Pontianak",
      "asciiname": "Pontianak",
      "lat": -0.03194,
      "lng": 109.325,
      "feature_code": "PPLA",
      "country_code": "ID",
      "admin1_code": "11",
      "admin1_name": "West Kalimantan",
      "population": 686019,
      "timezone": "Asia/Pontianak",
      "distance_km": 2.04
    },
    {
      "geonameid": 1625908,
      "name": "Sungai Raya",
      "asciiname": "Sungai Raya",
      "lat": 0.7,
      "lng": 108.9,
      "feature_code": "PPL",
      "country_code": "ID",
      "admin1_code": "11",
      "admin1_name": "West Kalimantan",
      "population": 47735,
      "timezone": "Asia/Pontianak",
      "distance_km": 94.57
    }
  ],
  "meta": {
    "attribution": {
      "source": "GeoNames (https://www.geonames.org)",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://download.geonames.org/export/dump/",
      "attribution_page": "https://www.geonames.org",
      "notice": "Data diubah: subset cities5000, countryInfo, admin1 dan timeZones dinormalisasi ke format JSON API Indonesia; waktu lokal dihitung oleh API Indonesia"
    }
  }
}
```

### GET /api/v1/geo/kota/{geonameid}

**Retrieve a city.** One city by geonameid, with the country name, elevation, DEM, GeoNames modification date and its time zone offsets. An unknown id answers 404 NOT_FOUND.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `geonameid` | path | yes | integer | GeoNames geonameid, e.g. 1642911 (Jakarta). |

```bash
curl "https://use.apiindonesia.id/api/v1/geo/kota/1642911" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": {
    "geonameid": 1642911,
    "name": "Jakarta",
    "asciiname": "Jakarta",
    "lat": -6.21462,
    "lng": 106.84513,
    "feature_code": "PPLC",
    "country_code": "ID",
    "country_name": "Indonesia",
    "admin1_code": "04",
    "admin1_name": "Jakarta",
    "population": 8540121,
    "elevation": null,
    "dem": 16,
    "timezone": "Asia/Jakarta",
    "modified_at": "2026-02-23",
    "timezone_offsets": {
      "gmt_offset": 7,
      "dst_offset": 7,
      "raw_offset": 7
    }
  },
  "meta": {
    "attribution": {
      "source": "GeoNames (https://www.geonames.org)",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://download.geonames.org/export/dump/",
      "attribution_page": "https://www.geonames.org",
      "notice": "Data diubah: subset cities5000, countryInfo, admin1 dan timeZones dinormalisasi ke format JSON API Indonesia; waktu lokal dihitung oleh API Indonesia"
    }
  }
}
```

### GET /api/v1/geo/zona-waktu

**List time zones.** All 418 time zones in GeoNames timeZones.txt (or one country with country), with the GMT offset on 1 January, the DST offset on 1 July of the same year (offset_year) and the raw offset without DST, in hours.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `country` | query | no | string | ISO2 country code, e.g. ID. |

```bash
curl "https://use.apiindonesia.id/api/v1/geo/zona-waktu" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": [
    {
      "tz": "Europe/Berlin",
      "country_code": "DE",
      "gmt_offset": 1,
      "dst_offset": 2,
      "raw_offset": 1,
      "offset_year": 2026
    }
  ],
  "meta": {
    "total": 1,
    "page": 1,
    "per_page": 1,
    "total_pages": 1,
    "attribution": {
      "source": "GeoNames (https://www.geonames.org)",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://download.geonames.org/export/dump/",
      "attribution_page": "https://www.geonames.org",
      "notice": "Data diubah: subset cities5000, countryInfo, admin1 dan timeZones dinormalisasi ke format JSON API Indonesia; waktu lokal dihitung oleh API Indonesia"
    }
  }
}
```

### GET /api/v1/geo/zona-waktu/{tz}

**Time zone with local time.** One IANA time zone with the GeoNames offsets and the CURRENT local time, computed per request from the runtime IANA data (not cached): local_time, utc_offset and is_dst. The id may contain slashes (Asia/Jakarta) and is case-insensitive.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `tz` | path | yes | string | IANA time zone id, e.g. Asia/Jakarta. |

```bash
curl "https://use.apiindonesia.id/api/v1/geo/zona-waktu/Asia" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": {
    "tz": "Asia/Jakarta",
    "country_code": "ID",
    "gmt_offset": 7,
    "dst_offset": 7,
    "raw_offset": 7,
    "offset_year": 2026,
    "gmt_offset_label": "+07:00",
    "dst_offset_label": "+07:00",
    "raw_offset_label": "+07:00",
    "now_utc": "2026-11-01T07:38:58.749Z",
    "local_time": "2026-11-01T14:38:58+07:00",
    "local_date": "2026-11-01",
    "weekday": "Sunday",
    "utc_offset": "+07:00",
    "utc_offset_hours": 7,
    "is_dst": false
  },
  "meta": {
    "attribution": {
      "source": "GeoNames (https://www.geonames.org)",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://download.geonames.org/export/dump/",
      "attribution_page": "https://www.geonames.org",
      "notice": "Data diubah: subset cities5000, countryInfo, admin1 dan timeZones dinormalisasi ke format JSON API Indonesia; waktu lokal dihitung oleh API Indonesia"
    }
  }
}
```

## IP Geolocation (DB-IP Lite)

Look up the country, region, city, coordinates, and the network ASN and organisation of an IPv4 or IPv6 address.

- Includes the caller's own address via /ip/me
- Data: DB-IP Lite (IP to City Lite and IP to ASN Lite), licensed CC BY 4.0 and refreshed by DB-IP every month
- DB-IP describes the Lite editions as subsets with reduced coverage and accuracy compared with its commercial database, so city-level results are approximate

### GET /api/v1/ip/{ip}

**Look up an IP address.** Details for one IP address.

- Country (ISO 3166-1 alpha-2 code), continent code, region, city, latitude/longitude
- The ASN with its organisation name, and the DB-IP range the address falls in
- IPv6 can be written directly in the path; IPv4-mapped addresses (::ffff:a.b.c.d) are looked up as IPv4
- An invalid address answers 400 and an address with no matching range answers 404; neither is charged

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `ip` | path | yes | string | An IPv4 or IPv6 address, e.g. 36.66.0.1 or 2001:4860:4860::8888. |

```bash
curl "https://use.apiindonesia.id/api/v1/ip/36.66.0.1" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": {
    "ip": "36.66.0.1",
    "version": 4,
    "reserved": false,
    "continent_code": "AS",
    "country_code": "ID",
    "region": "Jakarta",
    "city": "Jakarta",
    "latitude": -6.18354,
    "longitude": 106.824,
    "asn": {
      "number": 7713,
      "organization": "Telekomunikasi Indonesia (PT)"
    },
    "network": {
      "start": "36.66.0.0",
      "end": "36.66.0.255"
    }
  },
  "meta": {
    "attribution": {
      "source": "IP Geolocation by DB-IP",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://db-ip.com",
      "attribution_page": "https://db-ip.com/db/lite.php",
      "notice": "Data diubah: rentang IP dan lokasi dinormalisasi ke format JSON API Indonesia; rentang \"ZZ\" dilaporkan sebagai reserved. Bukan endorsement dari DB-IP."
    }
  }
}
```

### GET /api/v1/ip/me

**Look up the caller's IP.** Same as /ip/{ip}, for the address that called the API (the CF-Connecting-IP header). The answer still comes from the DB-IP tables, not from Cloudflare's own geolocation. Never edge-cached. On the RapidAPI surface the caller address is the RapidAPI gateway, so this endpoint answers 400 UNSUPPORTED there; use /ip/{ip}.

```bash
curl "https://use.apiindonesia.id/api/v1/ip/me" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": {
    "ip": "114.124.200.5",
    "version": 4,
    "reserved": false,
    "continent_code": "AS",
    "country_code": "ID",
    "region": "Jakarta",
    "city": "Central Jakarta",
    "latitude": -6.18051,
    "longitude": 106.828,
    "asn": {
      "number": 23693,
      "organization": "PT. Telekomunikasi Selular"
    },
    "network": {
      "start": "114.124.187.0",
      "end": "114.124.203.255"
    }
  },
  "meta": {
    "attribution": {
      "source": "IP Geolocation by DB-IP",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://db-ip.com",
      "attribution_page": "https://db-ip.com/db/lite.php",
      "notice": "Data diubah: rentang IP dan lokasi dinormalisasi ke format JSON API Indonesia; rentang \"ZZ\" dilaporkan sebagai reserved. Bukan endorsement dari DB-IP."
    }
  }
}
```

### POST /api/v1/ip/batch

**Look up many IP addresses.** Up to 100 addresses in one call, answered in input order.

- An invalid or uncovered address gets a per-item error object instead of failing the whole call
- Priced per CALL, not per IP: 100 credits for 1 to 100 addresses (1 credit per IP on a full batch)
- For fewer than 50 addresses, /ip/{ip} (2 credits per call) is cheaper
- A body with no valid address answers 400 and is not charged

| Body field | Required | Type | Description |
| --- | --- | --- | --- |
| `ips` | yes | array | List of 1-100 IPv4/IPv6 addresses. |

```bash
curl -X POST "https://use.apiindonesia.id/api/v1/ip/batch" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{"ips":["8.8.8.8","2001:4860:4860::8888","bukan-ip"]}'
```

Example response (shortened):

```json
{
  "success": true,
  "data": [
    {
      "query": "8.8.8.8",
      "ip": "8.8.8.8",
      "version": 4,
      "reserved": false,
      "continent_code": "NA",
      "country_code": "US",
      "region": "California",
      "city": "Mountain View",
      "latitude": 37.422,
      "longitude": -122.085,
      "asn": {
        "number": 15169,
        "organization": "Google LLC"
      },
      "network": {
        "start": "8.8.8.0",
        "end": "8.8.8.255"
      }
    },
    {
      "query": "2001:4860:4860::8888",
      "ip": "2001:4860:4860::8888",
      "version": 6,
      "reserved": false,
      "continent_code": "NA",
      "country_code": "CA",
      "region": "Quebec",
      "city": "Montreal",
      "latitude": 45.5019,
      "longitude": -73.5674,
      "asn": {
        "number": 15169,
        "organization": "Google LLC"
      },
      "network": {
        "start": "2001:4860:4802::",
        "end": "2001:4860:6dff:ffff:ffff:ffff:ffff:ffff"
      }
    }
  ],
  "meta": {
    "attribution": {
      "source": "IP Geolocation by DB-IP",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://db-ip.com",
      "attribution_page": "https://db-ip.com/db/lite.php",
      "notice": "Data diubah: rentang IP dan lokasi dinormalisasi ke format JSON API Indonesia; rentang \"ZZ\" dilaporkan sebagai reserved. Bukan endorsement dari DB-IP."
    }
  }
}
```

## Indonesian Legal Entity Identifiers (GLEIF Golden Copy)

Compliance & KYB category: Legal Entity Identifiers (LEI, ISO 17442) for legal entities whose legal or headquarters address is in Indonesia.

- Legal and other names
- Entity status and LEI registration status
- Legal form (ELF code)
- Legal and headquarters addresses
- Registration-authority number
- Registration and next-renewal dates
- The managing LOU
- Direct and ultimate parent, including parents abroad
- Data: the GLEIF Golden Copy files, licensed CC0

### GET /api/v1/lei

**Search legal entities.** Searches the 1,644 entities with an Indonesian legal or headquarters address (golden copy snapshot of 1 November 2026).

- q matches the legal name and other/transliterated names through a full-text index (word prefixes)
- The provinsi filter applies to both the legal and headquarters address
- Some GLEIF records still use retired island codes (for example ID-JW for Java) and those are not rolled up into provinces

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `q` | query | no | string | Words from the entity name, e.g. pertamina. |
| `status` | query | no | string | Entity status: ACTIVE, INACTIVE or NULL. |
| `registration_status` | query | no | string | LEI registration status, e.g. ISSUED or LAPSED. |
| `kota` | query | no | string | Part of the city on the legal or headquarters address, e.g. surabaya. City spelling follows GLEIF records ("Jakarta Selatan" or "SOUTH JAKARTA"). |
| `provinsi` | query | no | string | ISO 3166-2 code (ID-JK) or province name (DKI Jakarta, Jawa Timur). |
| `page` | query | no | integer | Page to retrieve. Defaults to 1. |
| `per_page` | query | no | integer | Items per page. Defaults to 20, maximum 100. |

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

Example response (shortened):

```json
{
  "success": true,
  "data": [
    {
      "lei": "254900X2NUD6BMNZKP36",
      "legal_name": "PT Kilang Pertamina Balikpapan",
      "entity_status": "ACTIVE",
      "registration_status": "ISSUED",
      "legal_form_code": "UD1V",
      "legal_city": "SOUTH JAKARTA",
      "legal_region": "ID-JK",
      "legal_country": "ID",
      "hq_city": "SOUTH JAKARTA",
      "hq_region": "ID-JK",
      "next_renewal_date": "2027-04-30T09:36:04.136Z",
      "legal_region_name": "DKI Jakarta",
      "hq_region_name": "DKI Jakarta"
    }
  ],
  "meta": {
    "total": 6,
    "page": 1,
    "per_page": 1,
    "total_pages": 6,
    "attribution": {
      "source": "GLEIF Golden Copy (LEI-CDF dan RR-CDF)",
      "license": "CC0 1.0",
      "license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
      "source_url": "https://goldencopy.gleif.org",
      "attribution_page": "https://www.gleif.org/en/meta/lei-data-terms-of-use",
      "notice": "Data diubah: difilter ke entitas beralamat di Indonesia beserta induknya dan dinormalisasi ke format JSON API Indonesia. API Indonesia tidak berafiliasi deng...",
      "file_date": "2026-11-01T00:00:00Z"
    }
  }
}
```

### GET /api/v1/lei/{lei}

**Retrieve an LEI.** One entity in full.

- Legal and headquarters addresses
- Registration number (registration_authority.id from the GLEIF authority list + entity_id)
- Registration status and managing LOU
- direct_parent and ultimate_parent (null when no relationship record exists)
- An LEI with the wrong shape or an invalid ISO 17442 checksum answers 400 INVALID_LEI; a valid LEI outside the dataset answers 404

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `lei` | path | yes | string | 20-character LEI, e.g. 254900NDAKGNZ2IBBL45. |

```bash
curl "https://use.apiindonesia.id/api/v1/lei/254900NDAKGNZ2IBBL45" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": {
    "lei": "254900NDAKGNZ2IBBL45",
    "legal_name": "Pt Pertamina (Persero)",
    "legal_name_lang": "en",
    "other_names": [],
    "entity_status": "ACTIVE",
    "entity_category": "GENERAL",
    "entity_sub_category": null,
    "legal_form": {
      "elf_code": "UD1V",
      "other": null
    },
    "legal_jurisdiction": "ID",
    "legal_address": {
      "first_line": "Jl. Medan Merdeka Timur No 1A",
      "address_number": null,
      "address_number_within_building": null,
      "mail_routing": null,
      "additional_lines": "Kel. Gambir. Kec. Gambir, Kota Adm",
      "city": "Jakarta",
      "region": "ID-JK",
      "region_name": "DKI Jakarta",
      "country": "ID",
      "postal_code": "10110"
    },
    "headquarters_address": {
      "first_line": "Jl. Medan Merdeka Timur No 1A",
      "city": "Jakarta",
      "region": "ID-JK",
      "region_name": "DKI Jakarta",
      "country": "ID",
      "postal_code": "10110"
    },
    "registration_authority": {
      "id": "RA000763",
      "other_id": null,
      "entity_id": "8120200840621"
    },
    "entity_creation_date": "2003-09-16T00:00:00.000Z",
    "entity_expiration_date": null,
    "entity_expiration_reason": null,
    "successor": null,
    "registration": {
      "status": "LAPSED",
      "initial_registration_date": "2018-10-08T12:47:19.402Z",
      "last_update_date": "2025-10-10T13:30:00.035Z",
      "next_renewal_date": "2025-10-09T20:52:21.329Z",
      "managing_lou": {
        "lei": "5493001KJTIIGC8Y1R12",
        "name": "Bloomberg Finance L.P."
      },
      "validation_sources": "FULLY_CORROBORATED"
    },
    "conformity_flag": "NON_CONFORMING",
    "indonesian_address": true,
    "direct_parent": {
      "lei": "529900FWX0GRR7WG5W79",
      "legal_name": "Republic of Indonesia",
      "country": "ID",
      "entity_status": "ACTIVE",
      "registration_status": "ISSUED",
      "relationship": {
        "type": "direct",
        "status": "ACTIVE",
        "start_date": "2003-09-17T00:00:00.000Z",
        "registration_status": "LAPSED",
        "accounting_standard": "OTHER_ACCOUNTING_STANDARD"
      }
    },
    "ultimate_parent": {
      "lei": "529900FWX0GRR7WG5W79",
      "legal_name": "Republic of Indonesia",
      "country": "ID",
      "entity_status": "ACTIVE",
      "registration_status": "ISSUED",
      "relationship": {
        "type": "ultimate",
        "status": "ACTIVE",
        "start_date": "2003-09-17T00:00:00.000Z",
        "registration_status": "LAPSED",
        "accounting_standard": "OTHER_ACCOUNTING_STANDARD"
      }
    },
    "children_count": {
      "direct": 0,
      "ultimate": 0
    }
  },
  "meta": {
    "attribution": {
      "source": "GLEIF Golden Copy (LEI-CDF dan RR-CDF)",
      "license": "CC0 1.0",
      "license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
      "source_url": "https://goldencopy.gleif.org",
      "attribution_page": "https://www.gleif.org/en/meta/lei-data-terms-of-use",
      "notice": "Data diubah: difilter ke entitas beralamat di Indonesia beserta induknya dan dinormalisasi ke format JSON API Indonesia. API Indonesia tidak berafiliasi deng...",
      "file_date": "2026-11-01T00:00:00Z"
    }
  }
}
```

### GET /api/v1/lei/{lei}/children

**List children.** Entities that report this LEI as their direct parent (type=direct, the default), ultimate parent (type=ultimate), or either (type=all). For a parent abroad, only the children held in this dataset (entities with an Indonesian address) are listed.

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `lei` | path | yes | string | Parent LEI, e.g. 529900FWX0GRR7WG5W79. |
| `type` | query | no | string | direct (default), ultimate or all. |
| `page` | query | no | integer | Page to retrieve. Defaults to 1. |
| `per_page` | query | no | integer | Items per page. Defaults to 20, maximum 100. |

```bash
curl "https://use.apiindonesia.id/api/v1/lei/529900FWX0GRR7WG5W79/children" \
  -H "x-api-key: YOUR_API_KEY"
```

Example response (shortened):

```json
{
  "success": true,
  "data": [
    {
      "lei": "254900G208H6Q0L5B953",
      "legal_name": "Perusahaan Penerbit Surat Berharga Syariah Negara Indonesia III",
      "country": "ID",
      "entity_status": "ACTIVE",
      "registration_status": "ISSUED",
      "relationship": {
        "type": "direct",
        "status": "ACTIVE",
        "start_date": "2011-12-22T00:00:00.000Z",
        "registration_status": "PUBLISHED",
        "accounting_standard": null
      }
    }
  ],
  "meta": {
    "total": 6,
    "page": 1,
    "per_page": 1,
    "total_pages": 6,
    "attribution": {
      "source": "GLEIF Golden Copy (LEI-CDF dan RR-CDF)",
      "license": "CC0 1.0",
      "license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
      "source_url": "https://goldencopy.gleif.org",
      "attribution_page": "https://www.gleif.org/en/meta/lei-data-terms-of-use",
      "notice": "Data diubah: difilter ke entitas beralamat di Indonesia beserta induknya dan dinormalisasi ke format JSON API Indonesia. API Indonesia tidak berafiliasi deng...",
      "file_date": "2026-11-01T00:00:00Z"
    }
  }
}
```
