# Lapor — 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 official public complaints and get details about resolved cases and government institutions handling them. Search specific institutions and browse complaint data to understand how various agencies respond to citizen concerns.

**Category:** Government & Public Data | **Website:** [www.lapor.go.id/](https://www.lapor.go.id/) | **Docs:** [parse.bot/marketplace/45cf3af9-1d1a-42ce-97e8-cf9692347465/lapor-go-id-api](https://parse.bot/marketplace/45cf3af9-1d1a-42ce-97e8-cf9692347465/lapor-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/lapor/`
**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 institution detail

Get detailed information about a specific government institution by its slug. Returns the institution name, rating, followers count, and associated success stories. Additional fields (address, phone, email, website, sub_units) are included when available on the institution's page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `slug` | string | Yes | Institution slug identifier (e.g., 'kementerian-kesehatan'). Obtain slugs from search_institutions endpoint. |

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

### List complaints

List resolved complaints (Kisah Sukses / Success Stories) from LAPOR!. Returns a paginated list of complaints that have been successfully resolved. Each complaint includes title, description excerpt, author, comments count, and support count. All results carry status SELESAI (resolved). Paginate by incrementing the page parameter; has_next_page indicates whether more pages exist.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination (1-based) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/lapor/list-complaints \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>"}'
```

### Search institutions

Search connected government institutions on LAPOR!. Returns a paginated list of institutions matching the query keyword. Each institution includes name, slug, type, parent institution, and SMS prefix. Omitting the query returns all institutions. total_pages reflects the full result set size.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination (1-based) |
| `query` | string | No | Search keyword to filter institutions by name. Omitting returns all institutions. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/lapor/search-institutions \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","query":"<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.