API Documentation
Free, no-auth REST API. Base URL is this host. All responses are JSON unless noted. Every value traces to a source record — see the source registry.
Please cache responses and keep request rates reasonable; this is public infrastructure.
GET/api/islands
List islands with filters and pagination.
| Parameter | Description |
|---|
atoll | Atoll code, e.g. K, HDh |
status | inhabited | uninhabited | resort | industrial | airport | agricultural |
q | Name search (official or Dhivehi) |
conflicts | true → only islands with unresolved conflicts |
min_completeness | 0–100 minimum overall completeness |
limit / offset | Pagination (limit ≤ 2000) |
curl "$BASE/api/islands?atoll=K&status=inhabited&limit=5"
{ "total": 1132, "count": 5, "islands": [ { "slug": "k-maafushi", "name": "Maafushi", "status": "inhabited", "overallScore": 78, "unresolvedConflicts": 2, "atoll": { "code": "K", "name": "Kaafu" }, … } ] }GET/api/islands/{slug}
Full island record: names, per-source geometries, population records, images, conflicts, match candidates and every source-attributed field value.
curl "$BASE/api/islands/k-maafushi"
{ "island": { …, "population": [...], "conflicts": [...] }, "fieldValues": [ { "fieldName": "population_total", "rawValue": "1438", "isCanonical": true, "source": { "slug": "census-2022" }, "sourceUrl": "https://census.gov.mv/…", "dateScraped": "2026-06-11T…" } ] }GET/api/atolls
All 21 administrative atolls with island counts.
curl "$BASE/api/atolls"
{ "atolls": [ { "code": "HA", "name": "Haa Alifu", "naturalAtoll": "Thiladhunmathi Uthuruburi", "_count": { "islands": 42 } } ] }GET/api/atolls/{code}
Single atoll with its islands and census population records.
curl "$BASE/api/atolls/K"
{ "atoll": { "code": "K", "islands": [ … ] } }GET/api/search
Global search over island names (official / Dhivehi / alternative), atolls, statuses and types.
| Parameter | Description |
|---|
q | Search term (required) |
curl "$BASE/api/search?q=maafushi"
{ "results": [ { "type": "island", "id": "k-maafushi", "label": "Maafushi — Kaafu", "href": "/islands/k-maafushi" } ] }GET/api/conflicts
Data conflicts with full per-source values.
| Parameter | Description |
|---|
status | unresolved | under_review | resolved | source_outdated | needs_external_confirmation |
severity | low | medium | high | critical |
field | Field name, e.g. population_total |
limit / offset | Pagination |
curl "$BASE/api/conflicts?severity=high&status=unresolved"
{ "total": 213, "conflicts": [ { "fieldName": "lat", "severity": "high", "canonicalValue": "4.0511", "sourceValues": "[{\"source\":\"onemap\",…}]" } ] }GET/api/sources
The full source registry incl. last scrape status and record counts.
curl "$BASE/api/sources"
{ "sources": [ { "slug": "onemap", "priority": 10, "last_scrape_status": "success", "records_collected": 1561 } ] }GET/api/snapshots
Published data snapshots and their files with checksums.
curl "$BASE/api/snapshots"
{ "snapshots": [ { "snapshotDate": "2026-06-11", "totalIslands": 1132, "files": [ { "path": "processed/islands_canonical.csv", "checksum": "…" } ] } ] }GET/api/downloads/{file}
Bulk dataset downloads, generated live from the database.