# Dataonline Bmkg — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Access Indonesia's weather station information and check the availability of meteorological data including rainfall, temperature, and sunshine duration readings. Search across different regions and station types to find the weather data you need.

**Category:** Weather | **Website:** [dataonline.bmkg.go.id/](https://dataonline.bmkg.go.id/) | **Docs:** [parse.bot/marketplace/45c32a60-766d-486e-99a0-24bfc3e1e0a4/dataonline-bmkg-go-id-api](https://parse.bot/marketplace/45c32a60-766d-486e-99a0-24bfc3e1e0a4/dataonline-bmkg-go-id-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/dataonline-bmkg/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get data availability

Retrieve data availability grid for a specific station and meteorological parameter. Returns a data array (year/month availability rows), a chart array with monthly availability percentages, station metadata, and the current year. Requires a CSRF token internally obtained from the portal page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `parameter` | string | Yes | Meteorological parameter to query availability for. |
| `province_id` | string | Yes | Province ID from get_provinces results (e.g. '17' for Bali). |
| `station_id` | string | Yes | Station number (WMO number) from get_stations results field station_number (e.g. '97230'). |
| `year` | string | No | Optional year to filter data availability (e.g. '2020'). Omitting returns all available years. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/dataonline-bmkg/get-data-availability \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"parameter":"<string>","province_id":"<string>","station_id":"<string>","year":"<string>"}'
```

### Get kabupaten kota

Retrieve the list of kabupaten/kota (regencies/cities) for a given province. Use province IDs from get_provinces. Returns administrative subdivisions useful for geographic filtering of stations.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `province_id` | string | Yes | Province ID from get_provinces results (e.g. '17' for Bali, '11' for DKI Jakarta). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/dataonline-bmkg/get-kabupaten-kota \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"province_id":"<string>"}'
```

### Get provinces

Retrieve the list of Indonesian provinces available for filtering weather stations and data availability queries. Province IDs are used as inputs to get_stations, get_kabupaten_kota, and get_data_availability.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/dataonline-bmkg/get-provinces \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### Get station types

Retrieve the list of station types (Jenis Stasiun) available for filtering weather stations. Returns the station type codes and their display names as published in the BMKG portal filter dropdown.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/dataonline-bmkg/get-station-types \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### Get stations

Retrieve the list of weather stations for a given province. Use province IDs from get_provinces. The station_number field in results is the WMO number used as station_id input for get_data_availability.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `province_id` | string | Yes | Province ID from get_provinces results (e.g. '17' for Bali, '11' for DKI Jakarta). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/dataonline-bmkg/get-stations \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"province_id":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://paywithlocus.com/agent/index.md): every Locus agent page.