---
updatedAt: 2026-08-14T17:44:54.000Z
---

# GET Languages for a Specific Language

`GET /reference-data/v1/languages/{langaugeLocalId}`

# Development Guide

<br />

Retrieves supported values and metadata for **a specific** supported language. The data returned by the endpoint provided accepted `userLanguage`, `langaugeLocaleId`, and accepted values. For example, the API will let you know the accepted values for `userLanguage`.

<br />

<br />

### 1. Prepare headers & authentication:

Call the '*[Retrieve Countries](https://developer.moneygram.com/moneygram-developer/reference/countries-2)*' endpoint with a GET HTTP method, providing the [OAuth](https://developer.moneygram.com/moneygram-developer/docs/o-auth-api) `access_token` in the header and all other required header values

<br />

> **Note**: MoneyGram uses the OAuth 2.0 framework. The application must use their  [OAuth client credentials](https://developer.moneygram.com/moneygram-developer/docs/o-auth-api) to generate an `accessToken` by calling the [Get access token](https://developer.moneygram.com/moneygram-developer/reference/getaccesstoken) endpoint. The token is valid for **1 hour** and must be passed as a header value in all subsequent API HTTP calls.  [Learn More](https://developer.moneygram.com/moneygram-developer/docs/o-auth-api)

<br />

> 🚀 Launch Code Example:
>
> <Recipe slug="reference-data-retrieve-languages-local-id-headers" title="Reference Data - Retrieve Languages Local ID - Headers" />

<br />

<br />

<br />

### 2. Provide `userLanguage` and `languageLocalId`as query parameter.

The application must provide the `userLanguage`and `languageLocalId`as a query parameter. MoneyGram will use this value and retrieve language information for a specific language locale identifier (e.g., en-US, fr-Fr).

<br />

> 🚀 Launch Code Example:
>
> <Recipe slug="reference-data-retrieve-langauges-locallanguageid" title="Reference Data - Retrieve Langauges - localLanguageId" />

<br />

<br />

<br />

### 3. Make the request and handle the response:

The application will call the Retrieve Languages endpoint with a GET HTTP method. The Retrieve Languages API will generate a response with an array of supported values and metadata for **a specified** language. The application must build to handle the following response scenarios.

<br />

* **Success | Parse the Response | 200 OK HTTP Status**<br />When the 'Retrieve Countries' endpoint responds with a 200 HTTP Status. An array of supported values and metadata for **all** countries

<br />

* **Failed | Handle the Error | 400 Bad Request HTTP Status**<br />When the 'Retrieve Countries' endpoint responds with 400 HTTP Status, specific error code/s will be returned with an array of offending fields. The application will need to resolve these errors and resubmit request.

<br />

> 🚀 Launch Code Example:
>
> <Recipe slug="reference-data-retrieve-languages-local-id-200-ok" title="Reference Data - Retrieve Languages Local Id - 200 OK" />
>
> .
>
> <Recipe slug="reference-data-retrieve-languages-local-id-400-bad-requests" title="Reference Data - Retrieve Languages Local Id - 400 Bad Requests" />

<br />

***

<br />

# Code Examples

<br />

```node
const axios = require('axios');
const { v4: uuidv4 } = require('uuid');

const countries = async () => {

    // Step 1: Read configuration values with upmost security
    const token = "your_access_token_from_oauth_response"
    // For production - api.moneygram.com & For test - sandboxapi.moneygram.com
    const host = "sandboxapi.moneygram.com";
    const url = 'https://' + host + '/reference-data/v1/countries';

    // Step 2: Create the GET request headers & params
    const headers = {
        'Content-Type': 'application/json',
        'X-MG-ClientRequestId': uuidv4(), // New UUID for each request tracing
        'Authorization': 'Bearer ' + token,
    };

    const params = {
        targetAudience: "AGENT_FACING",
        agentPartnerId: "your_partner_id",
        userLanguage: "en-US"
    }

    try {
        // Step 3: Send the request and obtain the response
        axios.get(url, { params, headers })
            .then(function (response) {
                // Step 4: Parse the success response and process further
                console.log(JSON.stringify(response.data, null, 2))
            })
            .catch(function (error) {
                // Step 5: Parse the error response and handle the errors
                if (error.response) {
                    console.log('Response status:', error.response.status);
                    console.log('Response body:', error.response.data);
                } else {
                    // TODO: handle generic errors
                    console.error('Error:', error.message);
                }
            });
    } catch (error) {
        // TODO: handle exception
        console.error('Error:', error.message);
    }
};

countries();

```
```python
import requests
import uuid
import json

def countries():

    # Step 1: Read configuration values with upmost security
    token = "your_access_token_from_oauth_response"
    # For production - api.moneygram.com & For test - sandboxapi.moneygram.com
    host = "sandboxapi.moneygram.com";
    url = 'https://' + host + '/reference-data/v1/countries';

    # Step 2: Create the GET request headers & params
    headers = {
        'Content-Type': 'application/json',
        'X-MG-ClientRequestId': str(uuid.uuid4()), # New UUID for each request tracing
        'Authorization': 'Bearer ' + token,
    }

    params = {
        'targetAudience': 'AGENT_FACING',
        'agentPartnerId': 'your_partner_id',
        'userLanguage': 'en-US'
    }

    try:
        # Step 3: Send the request and obtain the response
        response = requests.get(url, params=params, headers=headers)

        # Step 4: Parse the success response and process further
        if response.status_code == 200:
            parsed_response = json.dumps(json.loads(response.text), indent=2)
            print(parsed_response)
        else:
            # Print the error message if request fails
            # TODO: handle exception
            print("Request failed with status code:", response.status_code)
            print(json.loads(json.dumps(response.text, indent=4)))

    except requests.exceptions.RequestException as e:
        # Print any error that occurred during the request
        # TODO: handle exception
        print("An error occurred:", e)

countries()
```
```java
package status;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.UUID;

public class Countries {

    public static void main(String[] args) {
        // Step 1: Read configuration values with upmost security
        String token = "your_access_token_from_oauth_response";

        // For production - api.moneygram.com & For test - sandboxapi.moneygram.com
        String host = "sandboxapi.moneygram.com";

        // Step 2: Create the GET request headers & params
        // Mandatory Query params
        String agentPartnerId = "your_partner_id";
        String userLanguage = "en-US";

        // Optional Query params
        String targetAudience = "AGENT_FACING";

        String uri = "https://" + host + "/reference-data/v1/countries?"
                + "agentPartnerId=" + agentPartnerId
                + "&userLanguage=" + userLanguage
                + (targetAudience.isBlank() ? "" : "&targetAudience=" + targetAudience);

        HttpClient httpClient = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(uri))
                .GET()
                .setHeader("Authorization", "Bearer " + token)
                .setHeader("X-MG-ClientRequestId", String.valueOf(UUID.randomUUID()))
                .build();

        try {
            // Step 3: Send the request and obtain the response
            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

            // Retrieve the status code and body from the response
            int statusCode = response.statusCode();

            // Step 4: Parse the success response and process further
            if (statusCode == 200) {
                String responseBody = response.body();
                System.out.println(responseBody);
            } else {
                // Step 5: Parse the error response and handle the errors
                String responseBody = response.body();
                System.out.println(responseBody);
            }
        } catch (Exception e) {
            e.printStackTrace();
            // TODO: handle exception
        }

    }
}

```

<br />

***

<br />

# API Structure

<br />

## Header Parameters

| Field                  | Type   | Required/<br />Optional | Description                                                                                                                                                                                                                                                                                |
| :--------------------- | :----- | :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `X-MG-ClientRequestId` | String | Optional                | Client Request ID that can be passed by the client application. Client request ID must be unique within a single session for unique requests. This attribute can be used for ensuring idempotent request processing for some APIs. MoneyGram recommends using a UUID for this field value. |

<br />

***

<br />

## Query Parameters

| Field             | Type   | Required/<br />Optional | Description                                                                                                                                                                                                                                                                                                                                                               |
| :---------------- | :----- | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `targetAudience`  | String | Optional                | Tailors MoneyGram’s error messages and field metadata to an in-store, digital or crypto customer. (Enumerated value)<br /><br />*NOTE: For a full list of accepted target audience values. See the TARGET\_AUDIENCE enumeration from the <a href="https://developer.moneygram.com/moneygram-developer/reference/enumerations-2">Reference Data Enumerations endpoint</a>* |
| `agentPartnerId`  | String | Optional                | Unique agent or partner identifier                                                                                                                                                                                                                                                                                                                                        |
| `userLanguage`    | String | Required                | Language used by the user/operator                                                                                                                                                                                                                                                                                                                                        |
| `languageLocalId` | String | Required                | Language locale identifier (e.g., en-US, fr-FR, es-MX)                                                                                                                                                                                                                                                                                                                    |

<br />

***

<br />

## Response Fields

<Table align={["left","left","left","left"]}>
  <thead>
    <tr>
      <th>
        Field
      </th>

      <th>
        Type
      </th>

      <th>
        Required/<br />Optional
      </th>

      <th>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `languageInfo.languageCode`
      </td>

      <td>
        String
      </td>

      <td>
        Optional
      </td>

      <td>
        Two-letter language code
      </td>
    </tr>

    <tr>
      <td>
        `languageInfo.  
                                languageISOCode`
      </td>

      <td>
        string
      </td>

      <td>
        Optional
      </td>

      <td>
        Three-letter language code
      </td>
    </tr>

    <tr>
      <td>
        `languageInfo.languageName`
      </td>

      <td>
        string
      </td>

      <td>
        Optional
      </td>

      <td>
        Language name
      </td>
    </tr>

    <tr>
      <td>
        `languageInfo.  
                                defaultLanguageLocaleId`
      </td>

      <td>
        String
      </td>

      <td>
        Optional
      </td>

      <td>
        Default language locale identifier
      </td>
    </tr>

    <tr>
      <td>
        `languageLocaleInfos  
                                .languageLocaleID`
      </td>

      <td>
        Boolean
      </td>

      <td>
        Optional
      </td>

      <td>
        Language locale identifier (language-country code)
      </td>
    </tr>

    <tr>
      <td>
        `languageLocaleInfos  
                                .languageLocaleName`
      </td>

      <td>
        Boolean
      </td>

      <td>
        Optional
      </td>

      <td>
        Full name of the language locale
      </td>
    </tr>

    <tr>
      <td>
        `languageTranslations.  
                                localTextID`
      </td>

      <td>
        Boolean
      </td>

      <td>
        Optional
      </td>

      <td>
        Unique identifier for the locale text
      </td>
    </tr>

    <tr>
      <td>
        `languageTranslations.  
                                languageISOCode`
      </td>

      <td>
        Array
      </td>

      <td>
        Optional
      </td>

      <td>
        ISO code of the translation language
      </td>
    </tr>

    <tr>
      <td>
        `languageTranslations.  
                                languageLocaleID`
      </td>

      <td>
        Array
      </td>

      <td>
        Optional
      </td>

      <td>
        Locale identifier for the translation
      </td>
    </tr>

    <tr>
      <td>
        `languageTranslations.  
                                localeText`
      </td>

      <td>
        Array
      </td>

      <td>
        Optional
      </td>

      <td>
        Translated text/name of the language
      </td>
    </tr>
  </tbody>
</Table>

<br />

***

<br />