Browse documentation

API reference

V1 exposes geographic resources, aerodromes, transport services and unified search.

Base URLhttps://api-fenua-api.pacificknowledge.dev/api/v1
SpecificationOpenAPI JSON Swagger UI

API v1 contract · DATA 2026.2 · verified 27 August 2026 · maintained by Pacific Knowledge.

Endpoints

Metadata

GET/meta

Describe the active API and DATA versions

Geography

GET/islands

List islands and atolls

GET/islands/{idOrSlug}

Retrieve an island

GET/communes

List communes

GET/communes/{idOrSlug}

Retrieve a commune

Aviation

GET/airports

List public aerodromes

GET/airports/{id}

Retrieve an aerodrome

GET/air-services

List published air services

GET/islands/{idOrSlug}/air-services

List an island’s air services

Maritime

GET/maritime-services

List published maritime services

GET/islands/{idOrSlug}/maritime-services

List an island’s maritime services

Search

GET/places/search

Search places

GET/places/autocomplete

Autocomplete a place name

Responses by endpoint

Each entry shows a complete response and only the errors possible for that operation. Inactive transport examples explicitly use active=false.

GET/metaVersions, status and attributions for the active dataset.

Parameters

No parameters.

Possible errors

Response200
{
  "data": {
    "apiVersion": "v1",
    "dataVersion": "2026.2",
    "dataUpdatedAt": "2026-08-27T00:00:00-10:00",
    "status": "operational",
    "attribution": [
      "Institut de la statistique de la Polynésie française (ODbL 1.0)",
      "OurAirports (Public Domain)"
    ]
  }
}
GET/islandsComplete list of islands and atolls.

Parameters

No parameters.

Possible errors

Response200
{
  "data": [
    {
      "id": "isl_031",
      "slug": "huahine",
      "name": "Huahine",
      "aliases": [],
      "kind": "ISLAND",
      "archipelago": "Îles Sous-le-Vent",
      "latitude": null,
      "longitude": null,
      "communeIds": [
        "com_24"
      ],
      "sourceRefs": [
        "src_ispf_admin_2022"
      ]
    }
  ],
  "meta": {
    "count": 1
  }
}
GET/islands/{idOrSlug}Stable identifier or slug, for example huahine.

Parameters

  • idOrSlug · path · string · required

Possible errors

Response200
{
  "data": {
    "id": "isl_031",
    "slug": "huahine",
    "name": "Huahine",
    "aliases": [],
    "kind": "ISLAND",
    "archipelago": "Îles Sous-le-Vent",
    "latitude": null,
    "longitude": null,
    "communeIds": [
      "com_24"
    ],
    "sourceRefs": [
      "src_ispf_admin_2022"
    ]
  }
}
GET/islands/{idOrSlug}/air-servicesActive air services touching the island. An empty list is valid.

Parameters

  • idOrSlug · path · string · required

Possible errors

Response200
{
  "data": [],
  "meta": {
    "count": 0
  }
}
GET/islands/{idOrSlug}/maritime-servicesActive maritime services calling at the island. An empty list is valid.

Parameters

  • idOrSlug · path · string · required

Possible errors

Response200
{
  "data": [],
  "meta": {
    "count": 0
  }
}
GET/communesCommunes and associated communes, filterable by island.

Parameters

  • island · query · string · optional

Possible errors

Response200
{
  "data": [
    {
      "id": "com_35",
      "officialId": "35",
      "slug": "papeete",
      "name": "Papeete",
      "aliases": [],
      "kind": "COMMUNE",
      "parentCommuneId": null,
      "islandIds": [
        "isl_090"
      ],
      "latitude": null,
      "longitude": null,
      "sourceRefs": [
        "src_ispf_admin_2022"
      ]
    }
  ],
  "meta": {
    "count": 1
  }
}
GET/communes/{idOrSlug}Commune by stable identifier or slug.

Parameters

  • idOrSlug · path · string · required

Possible errors

Response200
{
  "data": {
    "id": "com_35",
    "officialId": "35",
    "slug": "papeete",
    "name": "Papeete",
    "aliases": [],
    "kind": "COMMUNE",
    "parentCommuneId": null,
    "islandIds": [
      "isl_090"
    ],
    "latitude": null,
    "longitude": null,
    "sourceRefs": [
      "src_ispf_admin_2022"
    ]
  }
}
GET/airportsAerodromes filterable by island, IATA code and status.

Parameters

  • island · query · string · optional
  • iata · query · string(3) · optional
  • active · query · true|false · optional

Possible errors

Response200
{
  "data": [
    {
      "id": "apt_ntaa",
      "name": "Fa'a'ā International Airport",
      "aliases": [
        "Papeete"
      ],
      "iataCode": "PPT",
      "icaoCode": "NTAA",
      "islandId": "isl_090",
      "latitude": -17.553472,
      "longitude": -149.606936,
      "active": true,
      "sourceRefs": [
        "src_dac_airports_2025",
        "src_ourairports_2026_08_26"
      ]
    }
  ],
  "meta": {
    "count": 1
  }
}
GET/airports/{id}Aerodrome by ID, IATA code or ICAO code.

Parameters

  • id · path · string · required

Possible errors

Response200
{
  "data": {
    "id": "apt_ntaa",
    "name": "Fa'a'ā International Airport",
    "aliases": [
      "Papeete"
    ],
    "iataCode": "PPT",
    "icaoCode": "NTAA",
    "islandId": "isl_090",
    "latitude": -17.553472,
    "longitude": -149.606936,
    "active": true,
    "sourceRefs": [
      "src_dac_airports_2025",
      "src_ourairports_2026_08_26"
    ]
  }
}
GET/air-services?active=falseDirectional services. active=true by default; published records are historical.

Parameters

  • island · airline · origin · destination · airport · query · optional
  • active · query · true|false · optional (default true)

Possible errors

Response200
{
  "data": [
    {
      "id": "air_2014_vt_ahe_ppt",
      "airlineId": "aln_air_tahiti",
      "originAirportId": "apt_nthe",
      "destinationAirportId": "apt_ntaa",
      "active": false,
      "validFrom": null,
      "validUntil": "2014-06-30",
      "sourceRefs": [
        "src_openflights_routes_2014"
      ]
    }
  ],
  "meta": {
    "count": 1
  }
}
GET/maritime-services?active=falseCandidate maritime lines, filterable by island, operator, origin, destination and type.

Parameters

  • island · operator · origin · destination · query · optional
  • serviceType · query · PASSENGERS|FREIGHT|MIXED|UNKNOWN
  • active · query · true|false · optional (default true)

Possible errors

Response200
{
  "data": [
    {
      "id": "mar_tuhaa_pae_iv_candidate",
      "operatorId": "mop_navigation_australes",
      "name": "Tuhaa Pae IV — réseau candidat",
      "serviceType": "UNKNOWN",
      "active": false,
      "validFrom": "2026-08-27",
      "validUntil": null,
      "stops": [
        {
          "islandId": "isl_090",
          "stopOrder": 1,
          "role": "ORIGIN"
        },
        {
          "islandId": "isl_077",
          "stopOrder": 6,
          "role": "TERMINUS"
        }
      ],
      "sourceRefs": [
        "src_osm_tuhaa_pae_2026_08_27"
      ]
    }
  ],
  "meta": {
    "count": 1
  }
}
GET/places/search?q=huahine&limit=10Deterministic search across names, aliases and codes.

Parameters

  • q · query · string · required
  • types · query · island,commune,associated_commune,airport
  • limit · query · integer 1–50 · default 10

Possible errors

Response200
{
  "data": [
    {
      "id": "isl_031",
      "slug": "huahine",
      "name": "Huahine",
      "type": "island",
      "subtitle": "Îles Sous-le-Vent",
      "codes": []
    }
  ],
  "meta": {
    "count": 1
  }
}
GET/places/autocomplete?q=hua&limit=10Compact, display-ready suggestions.

Parameters

  • q · query · string · required
  • types · query · island,commune,associated_commune,airport
  • limit · query · integer 1–50 · default 10

Possible errors

Response200
{
  "data": [
    {
      "id": "isl_031",
      "slug": "huahine",
      "name": "Huahine",
      "type": "island",
      "subtitle": "Îles Sous-le-Vent",
      "codes": []
    }
  ],
  "meta": {
    "count": 1
  }
}

By default, these endpoints return active services only—none at present. Use active=false to inspect dated candidates and provenance; do not present them as current schedules.

View service status