---
schema: rendered-html/v1
title: "Project Custom Fields | Developer Portal for YouTrack and Hub Documentation"
source_url: https://www.jetbrains.com/help/youtrack/devportal/resource-api-admin-projects-projectID-customFields.html
generated_at: 2026-06-11T15:10:28.303293+00:00
---

Feedback

Thanks for your feedback!

Was this page helpful?

YesNo

Developer Portal for YouTrack and Hub

- Developer Portal
- Apps
- MCP Tools
- YouTrack Workflows
- YouTrack Import Scripts
- YouTrack Form API
- YouTrack REST API
- Get Started with REST API
- REST API Reference
- Entities
- Resources
- Activity Items
- Issue Activities Page
- Build Bundles
- Enum Bundles
- Owned Bundles
- State Bundles
- User Bundles
- Version Bundles
- Custom Fields
- Field Types
- Backup Files
- [Database Backup Settings](jetbrains__com__help__youtrack__devportal__resource-api-admin-databasebackup-settings.md)
- [Global Settings](jetbrains__com__help__youtrack__devportal__resource-api-admin-globalsettings.md)
- [Organizations](jetbrains__com__help__youtrack__devportal__resource-api-admin-organizations.md)
- Projects
- Operations with Specific Project
- Sub-resources
- [Project Articles](jetbrains__com__help__youtrack__devportal__resource-api-admin-projects-projectid-articles.md)
- [Project Custom Fields](resource-api-admin-projects-projectID-customFields.html)
- Operations with Specific ProjectCustomField
- [Issues](jetbrains__com__help__youtrack__devportal__resource-api-admin-projects-projectid-issues.md)
- Project Time Tracking Settings
- Telemetry data
- Global Time Tracking Settings
- Agiles
- Articles
- Assigned Roles
- Commands
- Command Suggestions
- User Groups
- Issue Link Types
- Issue Tag
- Issues
- Issue Count
- Permissions
- Roles
- Saved Queries
- Search Suggestions
- Tags
- Users
- My User Profile
- Issue Work Items
- REST API Use Cases
- REST API Troubleshooting
- Color Indices List
- Hub REST API

1. YouTrack REST API
2. REST API Reference
3. Resources
4. Projects
5. [Sub-resources](#0)
6. [Project Custom Fields](#0)

# Project Custom Fields﻿

Last modified: 24 March 2026

This resource lets you access and configure custom fields in the specific project.

| Resource | ``` /api/admin/projects/{projectID}/customFields ``` |
| --- | --- |
| Returned entity | ProjectCustomField. For the description of the entity attributes, see [Supported Fields](/help/youtrack/devportal/resource-api-admin-projects-projectID-customFields.html#ProjectCustomField-supported-fields) section. |
| Supported methods | - `GET`: [Read a List of ProjectCustomFields](/help/youtrack/devportal/resource-api-admin-projects-projectID-customFields.html#get_all-ProjectCustomField-method). - `POST`: [Add a New ProjectCustomField](/help/youtrack/devportal/resource-api-admin-projects-projectID-customFields.html#create-ProjectCustomField-method). |

## ProjectCustomField attributes﻿

Represents settings for custom fields in a particular project.

### Related Resources﻿

Below you can find the list of resources that let you work with this entity.

- Project Custom Fields

### Attributes﻿

This table describes attributes of the `ProjectCustomField` entity.

- To receive an attribute in the response from the server, specify it explicitly in the `fields` request parameter.
- To update an attribute, provide it in the body of a POST request.

| Field | Type | Description |
| --- | --- | --- |
| id | String | The ID of the project custom field. `Read-only`. |
| field | CustomField | The custom field in the project. `Read-only`. `Can be null`. |
| project | Project | The project where the custom field belongs. `Read-only`. `Can be null`. |
| canBeEmpty | Boolean | If `true`, the custom field can have empty value, otherwise `false`. |
| emptyFieldText | String | The text that is shown as a placeholder when the custom field has an empty value. `Can be null`. |
| ordinal | Int | The position number of this field on the list of project custom fields. |
| isPublic | Boolean | If `true`, the basic **Read Issue** and **Update Issue** permissions are sufficient to access this field. If `false`, the **Read Issue Private Fields** and **Update Issue Private Fields** permissions are required. |
| hasRunningJob | Boolean | If `true`, there is a background job running for this field. In this case, some field operations may be temporary inaccessible. `Read-only`. |
| condition | CustomFieldCondition | The condition for showing the custom field. `Can be null`. |

## Read a List of ProjectCustomFields﻿

Read the list of custom fields that are attached to a specific project.

### Request syntax﻿

```
GET /api/admin/projects/{projectID}/customFields?{fields}&{$top}&{$skip}
```

| null | The database ID of ProjectCustomField |
| --- | --- |

### Request parameters﻿

| Parameter | Type | Description |
| --- | --- | --- |
| fields | String | A list of ProjectCustomField attributes that should be returned in the response. If no field is specified, only the `entityID` is returned. |
| $skip | Int | Optional. Lets you set a number of returned entities to skip before returning the first one. |
| $top | Int | Optional. Lets you specify the maximum number of entries that are returned in the response. If you don't set the $top value, the server limits the maximum number of returned entries.  The server returns a maximum of 42 entries for most resources that return collections. For more information, see Pagination. |

### Sample﻿

#### Sample request﻿

```
https://example.youtrack.cloud/api/admin/projects/0-0/customFields?$top=5&fields=id,field(name,fieldType($type)),project(shortName),canBeEmpty,isPublic
```

#### Sample response body﻿

```
[
  {
    "field": {
      "fieldType": {
        "$type": "FieldType"
      },
      "name": "Subsystem",
      "$type": "CustomField"
    },
    "project": {
      "shortName": "NP",
      "$type": "Project"
    },
    "canBeEmpty": true,
    "isPublic": true,
    "id": "82-8",
    "$type": "OwnedProjectCustomField"
  },
  {
    "field": {
      "fieldType": {
        "$type": "FieldType"
      },
      "name": "Priority",
      "$type": "CustomField"
    },
    "project": {
      "shortName": "NP",
      "$type": "Project"
    },
    "canBeEmpty": true,
    "isPublic": true,
    "id": "82-9",
    "$type": "EnumProjectCustomField"
  },
  {
    "field": {
      "fieldType": {
        "$type": "FieldType"
      },
      "name": "Type",
      "$type": "CustomField"
    },
    "project": {
      "shortName": "NP",
      "$type": "Project"
    },
    "canBeEmpty": false,
    "isPublic": true,
    "id": "82-10",
    "$type": "EnumProjectCustomField"
  },
  {
    "field": {
      "fieldType": {
        "$type": "FieldType"
      },
      "name": "State",
      "$type": "CustomField"
    },
    "project": {
      "shortName": "NP",
      "$type": "Project"
    },
    "canBeEmpty": false,
    "isPublic": true,
    "id": "82-11",
    "$type": "StateProjectCustomField"
  },
  {
    "field": {
      "fieldType": {
        "$type": "FieldType"
      },
      "name": "Fix versions",
      "$type": "CustomField"
    },
    "project": {
      "shortName": "NP",
      "$type": "Project"
    },
    "canBeEmpty": true,
    "isPublic": true,
    "id": "82-12",
    "$type": "VersionProjectCustomField"
  },
  {
    "field": {
      "fieldType": {
        "$type": "FieldType"
      },
      "name": "Assignee",
      "$type": "CustomField"
    },
    "project": {
      "shortName": "NP",
      "$type": "Project"
    },
    "canBeEmpty": true,
    "isPublic": true,
    "id": "84-111",
    "$type": "UserProjectCustomField"
  }
]
```

## Add a New ProjectCustomField﻿

Attach the custom field to the project.

Required fields: `field` (`id`) – the database ID of the CustomField prototype that you're attaching to the project, `$type` – the type of the ProjectCustomField that YouTrack will create as the result of this request. For the mapping between the prototype field type and the `ProjectCustomField` $type, see Type Mapping for Custom Fields.

### Required permissions﻿

Requires permissions: Update Project

### Request syntax﻿

```
POST /api/admin/projects/{projectID}/customFields?{fields}
```

| null | The database ID of ProjectCustomField |
| --- | --- |

### Request parameters﻿

| Parameter | Type | Description |
| --- | --- | --- |
| fields | String | A list of ProjectCustomField attributes that should be returned in the response. If no field is specified, only the `entityID` is returned. |

### Sample﻿

#### Sample request﻿

```
https://example.youtrack.cloud/api/admin/projects/81-1/customFields?fields=field(fieldType(valueType,id),name,id)
```

#### Sample request body﻿

```
{
  "field": {
    "name": "Last message related emails",
    "id": "46-21",
    "$type": "CustomField"
  },
  "$type": "SimpleProjectCustomField"
}
```

#### Sample response body﻿

```
{
  "field": {
    "fieldType": {
      "valueType": "string",
      "id": "string",
      "$type": "FieldType"
    },
    "name": "Last message related emails",
    "id": "46-21",
    "$type": "CustomField"
  },
  "$type": "SimpleProjectCustomField"
}
```

- [Project Custom Fields](/help/youtrack/devportal/resource-api-admin-projects-projectID-customFields.html)
- [ProjectCustomField attributes](/help/youtrack/devportal/resource-api-admin-projects-projectID-customFields.html#ProjectCustomField-supported-fields)
- [Read a List of ProjectCustomFields](/help/youtrack/devportal/resource-api-admin-projects-projectID-customFields.html#get_all-ProjectCustomField-method)
- [Add a New ProjectCustomField](/help/youtrack/devportal/resource-api-admin-projects-projectID-customFields.html#create-ProjectCustomField-method)

[Project Articles](jetbrains__com__help__youtrack__devportal__resource-api-admin-projects-projectid-articles.md)Operations with Specific ProjectCustomField

- Privacy & Security
- Terms Of Use
- Trademarks
- Legal

Copyright © 2000–2026 JetBrains s.r.o.
