Translation API Describe Endpoints
Describe endpoints return metadata about translatable content. Use them to discover which languages are active, which types exist, which entities are translatable, and which items within an entity can be translated. All describe endpoints are GET requests.
Get Languages
GET /api/3.0/translations/languages
Returns every configured language with its activation state.
Response:
[
{ "language": "fr", "label": "French - Français", "isActive": true },
{ "language": "de", "label": "German - Deutsch", "isActive": true },
{ "language": "es", "label": "Spanish - Español", "isActive": false }
]
Use this to drive language pickers in tooling, or to validate that a language is active before submitting translations.
Describe All Translation Types
GET /api/3.0/translations/describe
With no parameters, returns the 11 translation types with their descriptions and requirements.
Response (abbreviated):
[
{ "type": "entity", "description": "Entity labels (Label, PluralLabel)", "requiresEntity": true },
{ "type": "field", "description": "Field labels and help text", "requiresEntity": true },
{ "type": "picklist", "description": "Picklist value labels", "requiresEntity": true },
{ "type": "button", "description": "Button labels and confirmation messages", "requiresEntity": true },
{ "type": "layout", "description": "Layout section names, form titles, related list titles", "requiresEntity": true },
{ "type": "recordtype", "description": "Record type names and descriptions", "requiresEntity": true },
{ "type": "validationrule", "description": "Validation rule error messages", "requiresEntity": true },
{ "type": "lookupfilter", "description": "Lookup filter error and window messages", "requiresEntity": true },
{ "type": "app", "description": "Application names", "requiresEntity": false },
{ "type": "tab", "description": "Menu item labels", "requiresEntity": false },
{ "type": "customlabel", "description": "Custom label values", "requiresEntity": false }
]
See the Translation Types Reference for the full per-type behavior including aspects.
Describe Translatable Entities
GET /api/3.0/translations/describe?type=entity
Returns every translatable entity in the portal.
Response:
[
{
"relatedToId": "a0B000000001abc",
"type": "Entity",
"name": "Account",
"aspects": [
{ "aspect": "Label", "masterValue": "Account" },
{ "aspect": "PluralLabel", "masterValue": "Accounts" }
]
},
{
"relatedToId": "a0B000000002def",
"type": "Entity",
"name": "Lead",
"aspects": [
{ "aspect": "Label", "masterValue": "Lead" },
{ "aspect": "PluralLabel", "masterValue": "Leads" }
]
}
]
Describe Fields for an Entity
GET /api/3.0/translations/describe?type=field&entityName=Account
| Parameter | Required | Description |
|---|
type | Yes | Must be field. |
entityName | Yes | Entity API name (e.g., Account, Lead). |
Response:
[
{
"relatedToId": "a0F000000001xyz",
"type": "Field",
"name": "AccountName",
"aspects": [
{ "aspect": "Label", "masterValue": "Account Name" },
{ "aspect": "Help Text", "masterValue": "The primary name of the account" }
]
},
{
"relatedToId": "a0F000000002abc",
"type": "Field",
"name": "Industry",
"aspects": [
{ "aspect": "Label", "masterValue": "Industry" }
]
}
]
The Help Text aspect appears only when the field has non-empty help text.
Describe Full Entity
GET /api/3.0/translations/describe?type=entity&entityName=Account
When both type=entity and entityName are provided, returns comprehensive metadata for the entire entity in a single call. Includes:
- Entity aspects (Label, PluralLabel).
- All fields with aspects and picklist values (where applicable).
- Lookup filters per field.
- Buttons with confirmation messages.
- Validation rules.
- Record types with descriptions.
This is the most complete describe call and avoids multiple round trips when building a full translation tool for one entity.
Response (abbreviated):
{
"relatedToId": "a0B000000001abc",
"type": "Entity",
"name": "Account",
"aspects": [
{ "aspect": "Label", "masterValue": "Account" },
{ "aspect": "PluralLabel", "masterValue": "Accounts" }
],
"fields": [
{
"relatedToId": "a0F000000001xyz",
"type": "Field",
"name": "AccountName",
"aspects": [ { "aspect": "Label", "masterValue": "Account Name" } ]
},
{
"relatedToId": "a0F000000003ghi",
"type": "Field",
"name": "Rating",
"aspects": [ { "aspect": "Label", "masterValue": "Rating" } ],
"picklistValues": [
{ "relatedToId": "a0P001", "name": "Hot", "masterValue": "Hot" },
{ "relatedToId": "a0P002", "name": "Warm", "masterValue": "Warm" },
{ "relatedToId": "a0P003", "name": "Cold", "masterValue": "Cold" }
],
"lookupFilter": {
"relatedToId": "a0K000000001abc",
"type": "LookupFilter",
"aspects": [ { "aspect": "Error Message", "masterValue": "Invalid selection" } ]
}
}
],
"buttons": [],
"validationRules": [],
"recordTypes": []
}
Describe Picklist Values
GET /api/3.0/translations/describe?type=picklist&entityName=Account&relatedId=FIELD_ID
| Parameter | Required | Description |
|---|
type | Yes | Must be picklist. |
entityName | Yes | Entity API name. |
relatedId | No | Field ID. With relatedId returns the picklist values; without it returns the list of picklist fields on the entity. |
Response (with relatedId):
[
{ "relatedToId": "a0P000000001def", "type": "Picklist", "name": "Hot", "masterValue": "Hot" },
{ "relatedToId": "a0P000000001ghi", "type": "Picklist", "name": "Warm", "masterValue": "Warm" },
{ "relatedToId": "a0P000000001jkl", "type": "Picklist", "name": "Cold", "masterValue": "Cold" }
]
Response (without relatedId):
[
{ "fieldId": "a0F000000003ghi", "fieldName": "Rating", "type": "Picklist", "description": "Use 'relatedId' parameter with this field ID to get picklist values." },
{ "fieldId": "a0F000000004jkl", "fieldName": "Industry", "type": "Picklist", "description": "Use 'relatedId' parameter with this field ID to get picklist values." }
]
Describe Apps, Tabs, Custom Labels
These three types are global — no entity context is required.
GET /api/3.0/translations/describe?type=app
GET /api/3.0/translations/describe?type=tab
GET /api/3.0/translations/describe?type=customlabel
Response (Apps):
[
{ "relatedToId": "a0A000000001mno", "type": "App", "masterValue": "Partner Management" },
{ "relatedToId": "a0A000000002pqr", "type": "App", "masterValue": "Sales" }
]
Response (Tabs):
[
{ "relatedToId": "a0T000000001abc", "type": "Tab", "name": "home", "masterValue": "Home" },
{ "relatedToId": "a0T000000002def", "type": "Tab", "name": "accounts", "masterValue": "Accounts" }
]
Module-feature Menu Items (Articles, Training, etc.) are excluded from the Tab list because they are translated through their owning module's resource files.
Response (Custom Labels):
[
{ "relatedToId": "a0L000000001ghi", "type": "CustomLabel", "name": "WelcomeMessage", "masterValue": "Welcome to the portal" },
{ "relatedToId": "a0L000000002jkl", "type": "CustomLabel", "name": "FooterText", "masterValue": "All rights reserved" }
]
Common Error Responses
// Invalid type
{ "success": false, "errors": ["Invalid translation type: 'foo'."] }
// Entity not found
{ "success": false, "errors": ["Entity 'InvalidName' not found."] }
// Entity required for type
{ "success": false, "errors": ["Parameter 'entityName' is required for type 'field'"] }
<< Translation REST API v3 Overview | Get and Submit Translations >>