# Get all available cultures

`GET /api/translations/cultures`

- **Success:** `200 OK`
- **Products:** Operator (`FOH`)
- **Features:** Front of House Generic Access (`FOHGENERIC`)

HTML version: [Get all available cultures](https://support.gladstonesoftware.cloud/reference/configuration/get-all-available-cultures)

## Overview

Lists the cultures (language/locale pairs) the tenant has available for translated content. Use it to populate a language selector, and to learn which `code` values the translation endpoints will accept when you read or write translated text.

The list is **not** the .NET or CLDR culture list. Each tenant starts with a fixed set — `cy-gb`, `de`, `en-au`, `en-gb`, `en-ie`, `en-nz`, `en-us`, `es`, `fr`, `gd`, `gd-gb`, `pt` — after which the list belongs to the operator. Cultures can be added, edited or removed per tenant, so treat the contents as tenant data, not as a platform constant, and do not assume a code you saw in one tenant exists in another. Only `en-gb` is safe to assume in practice, and even that is a convention rather than something the platform enforces.

Unlike some other configuration lists, this one returns `200` with an empty array `[]` when no cultures are configured — it never returns `204`.

A culture the operator adds may not appear immediately.

## Endpoint

`GET {base_url}/api/translations/cultures`

`{base_url}` is the environment URL issued to your integration. See [Authenticating with Gladstone APIs](../../guides/authenticating-with-gladstone-apis.md).

## Sample request

```bash title="cURL"
curl -X GET '{base_url}/api/translations/cultures' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'
```

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `[].code` | string | The culture identifier, and the value you pass wherever the translation endpoints take a culture. Maximum 20 characters and unique within your tenant. The starter values are **lower-case** BCP 47-style tags (`en-gb`, `cy-gb`, `fr`) rather than the mixed-case form .NET and most browsers use (`en-GB`), and some are language-only with no region. Do not feed the value straight into a case-sensitive lookup, and do not construct it yourself — always echo back a code that appeared in this response. |
| `[].description` | string | The English name of the culture as entered by the operator, for example `English (United Kingdom)`. Maximum 100 characters. It can be `null` even when `code` is populated. It is free text an operator can edit, so use it for display only — never parse it or match on it. |
| `[].localeDescription` | string | The culture's name in its own language, intended for a language picker where each option should read naturally to a speaker of that language. Maximum 255 characters. **Never `null` in practice**: when the operator has not set it, `description` is returned in its place, so the two fields can be identical. That substitution means an empty `localeDescription` is indistinguishable from one that deliberately matches the English name. |

## Sample response

```json title="200 OK"
[
  {
    "code": "string",
    "description": "string",
    "localeDescription": "string"
  }
]
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `500` | Internal server error | Any unexpected server-side failure while reading the culture list. The response is a bare status code with **no body**, so there is no error detail to act on. Retry with backoff and fall back to a cached copy. |
