# List provinces

Retrieve all level-1 administrative divisions for Cambodia or Laos.

Company: Metfone Express
API version: v1
Requested language: en
Content language: en
Source: https://mfexpress-partner-docs.zhst.app/mfexpress/en/provinces

Endpoint: GET /administrativedivision/country/{country-code}


```http
GET /tms-partner/api/v1/administrativedivision/country/{country-code}
```

## Usage and important notes

Use `KH` for Cambodia and `LA` for Laos. The result is an array, not a paginated object. Save both `id` and `code`; `code` is the next request’s `location-code`. `status=1` means active. Names may change with `Accept-Language`.

## Authentication headers



| Header | Requirement | Value / meaning |
| --- | --- | --- |
| X-Api-Token | Required | `${API_TOKEN}`: environment-specific token issued by TMS |
| X-Client-Source | Required | `${PARTNER_CODE}`: partner code paired with the token |
| Content-Type | With a JSON body | application/json |
| Accept | Required by source | application/json |
| Accept-Language | Optional | `vn`, `en`, `my`, `km`, `lo` |



## Path and query parameters



| Name | Location | Required | Description |
| --- | --- | --- | --- |
| country-code | path | Yes | ISO country code: KH Cambodia, LA Laos. |



## cURL example

`BASE_URL` must include `/tms-partner/api/v1`. Load the token and partner code from your private environment; never paste secrets into documentation or AI prompts.
```bash
curl --request GET "${BASE_URL}/administrativedivision/country/KH" \
  --header "X-Api-Token: ${API_TOKEN}" \
  --header "X-Client-Source: ${PARTNER_CODE}" \
  --header "Accept-Language: en" \
  --header "Accept: application/json"
```


## Example response

```json
[
  {
    "id": 4025109,
    "level": 1,
    "status": 1,
    "code": "BAN",
    "countrycode": "KH",
    "name": "Banteay Meanchey",
    "type": "PROVINCE",
    "short_name": "Banteay Meanchey",
    "parent_code": "KH",
    "refs": [
      {
        "sys": "VTP",
        "code": "BAN"
      },
      {
        "sys": "POSTCODE",
        "code": "01"
      }
    ]
  }
]
```


## Response fields



| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `[].id` | number | See description | Internal location ID. |
| `[].level` | number | See description | Administrative level: 1 province, 2 district, 3 village. |
| `[].status` | number | See description | 1 means active. |
| `[].code` | string | See description | Use the identifier returned by the API, not the illustrative value. |
| `[].countrycode` | string | See description | Country code. |
| `[].name` | string | See description | Localized location name. |
| `[].type` | string | See description | PROVINCE, DISTRICT or VILLAGE. |
| `[].short_name` | string | See description | Short name. |
| `[].parent_code` | string | See description | Parent location code; generally country code at level 1. |
| `[].refs` | array | See description | References to other systems. |
| `[].refs[].sys` | string | See description | Reference system, e.g. VTP or POSTCODE. |
| `[].refs[].code` | string | See description | Use the identifier returned by the API, not the illustrative value. |



## Error handling

See [HTTP codes and source limitations](reference). HTTP success does not prove COD, fees, or cancellation are correct; inspect the documented business fields. Do not assume create-order retries are safe.

