Create project custom field
Creates a new custom field for capturing additional project information.
Required fields:
name: Display name for the field (e.g., “Priority Level”, “Region”)type: Field type enum value (Text, Textarea, Number, Date, Checkbox, Select, MultiSelect)translations: Array of translations for multilingual support
Optional fields:
id: Optional ID for the field (for updating existing fields)description: Additional context about the fieldselectOptions: Required for Select and MultiSelect types - array of option objects with:id: Optional identifier (use value if not provided)value: Display value for the optiontranslations: Array of translations for the option name
translationsDescriptions: Translations for the field description
Field type requirements:
- Select and MultiSelect types MUST include selectOptions array
- Other types do not use selectOptions
Values in project writes:
Use the configured field ID as a key in project customFields, with a value matching this definition type. Custom fields store typed data; they do not create native scheduling, relationship, or billing behavior.
Note: Once created, the custom field will appear when creating or editing projects. The field can be reordered using the sort endpoint.
POST
/administration/project-settings/custom-fieldsAuthorization
AuthorizationOAuth2 access token · headerrequiredScopes:
api:writeor
AuthorizationBearer token (JWT) · headerrequiredQuery parameters
fieldsToReturnstringComma-separated list of top-level response fields to return. Overrides the endpoint compact default unless responseShape=full is used.
responseShapestringAdvanced override. Omit for the endpoint compact default. Use full only when you need the complete endpoint response, including nested fields that are not selectable with fieldsToReturn.
Allowed:
compactfullHeader parameters
LT-Response-ShapestringAdvanced override. Set to full only when you need the complete endpoint response, including nested fields that are not selectable with fieldsToReturn.
Allowed:
fullRequest body
requiredapplication/jsondescriptionstringOptional description providing context about what information should be entered in this field. Helps users understand the purpose of the field.
idstringOptional unique identifier for the custom field. Only needed when updating an existing field. If omitted, a new field will be created.
namestringrequiredDisplay name for the custom field. Shown as the field label in project forms (e.g., "Priority Level", "Region", "Server Name").
selectOptionsProjectCustomFieldSelectOptionDto[]Array of select options. REQUIRED for Select and MultiSelect field types. Each option contains a value and translations. Not used for other field types.
Show propertiesHide properties
Array of
ProjectCustomFieldSelectOptionDtoidstringOptional unique identifier for the select option. If not provided, the value will be used as the identifier. Required when updating existing options.
translationsProjectCustomFieldSelectOptionTranslationDto[]requiredArray of translations for multilingual support. Each translation contains a language code and translated display name. The system automatically shows the correct language based on user preferences.
Show propertiesHide properties
Array of
ProjectCustomFieldSelectOptionTranslationDtolanguagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringrequiredTranslated display name for the select option in this language. Shown to users when selecting from dropdown options.
valuestringrequiredDisplay value for the select option. This is the value stored when the option is selected. Must be unique within the field.
translationsProjectCustomFieldTranslationDto[]requiredArray of translations for the field name. Each translation contains a language code and translated name. The system automatically displays the correct language based on user preferences.
Show propertiesHide properties
Array of
ProjectCustomFieldTranslationDtodescriptionstringTranslated description of the custom field in this language. Provides context about what information should be entered.
languagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringTranslated name of the custom field in this language. Used for multilingual display in project forms.
translationsDescriptionsProjectCustomFieldTranslationDto[]Optional array of translations for the field description. Each translation contains a language code and translated description. Used for multilingual help text.
Show propertiesHide properties
Array of
ProjectCustomFieldTranslationDtodescriptionstringTranslated description of the custom field in this language. Provides context about what information should be entered.
languagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringTranslated name of the custom field in this language. Used for multilingual display in project forms.
typestringrequiredField type enum value that determines what kind of input is used. Valid values: Text (single-line), Textarea (multi-line), Number, Date, Checkbox, Select (single choice), MultiSelect (multiple choices).
Allowed:
TextTextareaNumberDateCheckboxSelectMultiSelectCurrencyUrlResponses
201Project custom field created successfully
descriptionstringrequiredDescription providing context about what information should be entered in this field.
entitystringrequiredEntity type identifier. Always "Project" for project custom fields. Used internally to scope fields to specific entity types.
idstringrequiredUnique identifier (UUID) for the custom field. Used to reference this field when setting values on projects.
namestringrequiredDisplay name of the custom field. Shown as the field label in project forms.
selectOptionsProjectCustomFieldSelectOptionDto[]requiredArray of select options for Select and MultiSelect field types. Each option contains an ID, value, and translations. Empty array for other field types.
Show propertiesHide properties
Array of
ProjectCustomFieldSelectOptionDtoidstringOptional unique identifier for the select option. If not provided, the value will be used as the identifier. Required when updating existing options.
translationsProjectCustomFieldSelectOptionTranslationDto[]requiredArray of translations for multilingual support. Each translation contains a language code and translated display name. The system automatically shows the correct language based on user preferences.
Show propertiesHide properties
Array of
ProjectCustomFieldSelectOptionTranslationDtolanguagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringrequiredTranslated display name for the select option in this language. Shown to users when selecting from dropdown options.
valuestringrequiredDisplay value for the select option. This is the value stored when the option is selected. Must be unique within the field.
sortnumberrequiredNumeric sort order for display purposes. Lower numbers appear first in project forms. Determines the order in which fields are displayed.
translationsProjectCustomFieldTranslationDto[]requiredComplete array of translations for the field name. Each translation contains the language code and localized name.
Show propertiesHide properties
Array of
ProjectCustomFieldTranslationDtodescriptionstringTranslated description of the custom field in this language. Provides context about what information should be entered.
languagestringrequiredISO 639-1 language code for the translation (e.g., "en" for English, "de" for German)
namestringTranslated name of the custom field in this language. Used for multilingual display in project forms.
typestringrequiredField type enum value indicating the input type. Valid values: Text, Textarea, Number, Date, Checkbox, Select, MultiSelect.
Allowed:
TextTextareaNumberDateCheckboxSelectMultiSelectCurrencyUrl401Unauthorized - Invalid or missing authentication token
403Forbidden - Insufficient API scopes or permissions
Request
curl -X POST "https://leadtime.app/api/public/administration/project-settings/custom-fields" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "Priority level for the project",
"id": "string",
"name": "Priority Level",
"selectOptions": [
{
"id": "option-1",
"translations": [
{
"language": "en",
"name": "High Priority"
},
{
"language": "de",
"name": "Hohe Priorität"
}
],
"value": "High Priority"
}
],
"translations": [
{
"language": "en",
"name": "Priority Level"
},
{
"language": "de",
"name": "Prioritätsstufe"
}
],
"translationsDescriptions": [
{
"description": "Priority level for the project",
"language": "en",
"name": "Priority Level"
}
],
"type": "Select"
}'const response = await fetch("https://leadtime.app/api/public/administration/project-settings/custom-fields", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"description": "Priority level for the project",
"id": "string",
"name": "Priority Level",
"selectOptions": [
{
"id": "option-1",
"translations": [
{
"language": "en",
"name": "High Priority"
},
{
"language": "de",
"name": "Hohe Priorität"
}
],
"value": "High Priority"
}
],
"translations": [
{
"language": "en",
"name": "Priority Level"
},
{
"language": "de",
"name": "Prioritätsstufe"
}
],
"translationsDescriptions": [
{
"description": "Priority level for the project",
"language": "en",
"name": "Priority Level"
}
],
"type": "Select"
})
});import requests
response = requests.post(
"https://leadtime.app/api/public/administration/project-settings/custom-fields",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
json={
"description": "Priority level for the project",
"id": "string",
"name": "Priority Level",
"selectOptions": [
{
"id": "option-1",
"translations": [
{
"language": "en",
"name": "High Priority"
},
{
"language": "de",
"name": "Hohe Priorität"
}
],
"value": "High Priority"
}
],
"translations": [
{
"language": "en",
"name": "Priority Level"
},
{
"language": "de",
"name": "Prioritätsstufe"
}
],
"translationsDescriptions": [
{
"description": "Priority level for the project",
"language": "en",
"name": "Priority Level"
}
],
"type": "Select"
},
)Response
{
"description": "Priority level for the project",
"entity": "Project",
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Priority Level",
"selectOptions": [
{
"id": "option-1",
"translations": [
{
"language": "en",
"name": "High Priority"
},
{
"language": "de",
"name": "Hohe Priorität"
}
],
"value": "High Priority"
}
],
"sort": 1,
"translations": [
{
"description": "Priority level for the project",
"language": "en",
"name": "Priority Level"
}
],
"type": "Select"
}Unauthorized - Invalid or missing authentication token
Forbidden - Insufficient API scopes or permissions