# Get a specific title by ID

`GET /api/configuration/titles/{titleId}`

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

HTML version: [Get a specific title by ID](https://support.gladstonesoftware.cloud/reference/configuration/get-a-specific-title-by-id)

## Overview

Returns one title — the salutation shown before a member's name, such as Mr, Ms or Dr — and the gender option it is associated with.

**This endpoint returns less than the list endpoint does.** It does not look up the gender description or the translations, so `genderDescription` and `translations` come back null here even for titles where the list-titles endpoint populates them. If you need the translated forms, or the gender's label rather than its id, list the titles instead of fetching one.

**A title that does not exist returns `400`, not `404`.** The lookup finds nothing and the endpoint reports it as a bad request with the plain string `GetTitle could not find the id {titleId}`. This endpoint does not return `404`, so do not branch on it.

Titles are tenant configuration and are freely editable, so both the codes and the descriptions differ between environments. Take them from the list-titles endpoint rather than assuming a standard set.

## Endpoint

`GET {base_url}/api/configuration/titles/{titleId}`

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

## Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `titleId` | string | Yes | The title code, up to 15 characters, as returned by the list-titles endpoint or as the title recorded on a member. Codes are upper-cased — the create endpoint upper-cases whatever you supply, and system-generated ones are prefixed `TITL` — so send the upper-case form. A code that matches nothing returns `400`, not `404`. |

## Sample request

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

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Maximum 15 characters. |
| `description` | string | The salutation as it should be displayed — `Mr`, `Dr` and so on. This is the text to show a user; `id` is the value to send back when setting a member's title. |
| `genderId` | integer (int32) | The gender option this title is associated with, matching the `id` from the [gender endpoint](get-a-specific-gender-option-by-id.md). Titles are optionally associated with a gender, and a title with no association comes back as `0` rather than null — treat `0` as "not set" rather than as a real gender id. |
| `genderDescription` | string | The label of the associated gender. **Always null from this endpoint.** It is populated by the list-titles endpoint; if you need it from a single title, look `genderId` up against the gender endpoint. |
| `translations` | array of object | Translated forms of the title for other cultures. **Always null from this endpoint** for the same reason as `genderDescription` — it is populated only by the list-titles endpoint. The fields below describe the shape you get there. |
| `translations[].type` | string | Which part of the title the translation applies to, since a record can carry more than one translated field per culture. |
| `translations[].culture` | string | The culture code the translation is for, matching the codes configured in the cultures list. One entry exists per culture that has been translated; cultures with no translation are absent rather than present-and-empty. |
| `translations[].text` | string | The translated text itself, to be displayed in place of `description` when the user is in that culture. Fall back to `description` when no entry matches the culture you want. |
| `webVisible` | boolean | Whether this title should be offered on public-facing forms. Titles exist that are used by staff but deliberately kept off member-facing sign-up, so filter your dropdown on this rather than showing everything returned. It does not restrict what can be set through the API — a title with `webVisible` false can still be assigned to a member. |

## Sample response

```json title="200 OK"
{
  "id": "string",
  "description": "string",
  "genderId": 12345,
  "genderDescription": "string",
  "translations": [
    {
      "type": "string",
      "culture": "string",
      "text": "string"
    }
  ],
  "webVisible": true
}
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `400` | Bad request | No title has that code. The body is the plain string `GetTitle could not find the id {titleId}` — this is what a missing record returns, in place of a `404`. |
| `404` | Not found | Not returned by this endpoint — a missing title returns `400`. |
| `500` | Internal server error | The lookup itself failed. The body is empty. |
