---
title: "Create Custom Field Definition"
method: POST
path: "/v1/custom-fields"
tags: ["Custom Fields"]
---

# Create Custom Field Definition

`POST /v1/custom-fields`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/custom-fields`
- Auth: one of:
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `https://gateway.remote.com/company.manage`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `custom_field:write`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `all:write`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `custom_field:write`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `all:write`
  - HTTP bearer

Creates a new custom field definition.

## Authentication

This endpoint accepts any one of the following token types:

- **Company-scoped access token** (`OAuth2AuthorizationCode`) — obtained by a company manager through the Authorization Code flow or the Refresh Token flow. See [Authentication for partners](https://developer.remote.com/docs/authentication-for-partners).
- **Company-scoped access token (assertion)** (`OAuth2CompanyManagerAssertion`) — obtained through the `urn:ietf:params:oauth:grant-type:jwt-bearer` grant for a company manager. See [OAuth Assertion](https://developer.remote.com/docs/authorization-method-oauth-assertion).
- **Customer API token** (`CustomerAPIToken`) — generated by the customer on their Integration Settings page, with the scopes they choose there. See [Authorization for customers](https://developer.remote.com/docs/authorization-for-customers).

## Scopes

Any one of the scopes in a token type's row is enough. `all:write` works too.

| Token type | Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|---|
| Company-scoped access token | Manage employments (`employments`) | - | Manage custom fields (`custom_field:write`) |
| Company-scoped access token (assertion) | Manage employments (`employments`) | - | Manage custom fields (`custom_field:write`) |
| Customer API token | Manage employments (`employments`) | - | Manage custom fields (`custom_field:write`) |

## Request body

- union: Schema for creating a custom field definition
  - object: Schema for creating a general custom field definition
    - `data_entry_access` 'company_admin_only' | 'employee_only' | 'everyone', required: Who can enter or edit values for this custom field. Controls which users see the field as editable vs read-only.
    - `name` string, required
    - `required` boolean, required
    - `type` 'string' | 'text' | 'integer' | 'date' | 'boolean' | 'percentage' | 'decimal' | 'link', required: The datatype of the custom field
    - `visibility_scope` 'company_admin_only' | 'everyone', required: Who can see this custom field and its values. Controls visibility across different user roles.
  - object: Schema for creating a single select custom field definition
    - `data_entry_access` 'company_admin_only' | 'employee_only' | 'everyone', required: Who can enter or edit values for this custom field. Controls which users see the field as editable vs read-only.
    - `metadata` SingleSelectMetadata, required: The metadata for a single select custom field
      - `options` string[], required
    - `name` string, required
    - `required` boolean, required
    - `type` 'single_select', required
    - `visibility_scope` 'company_admin_only' | 'everyone', required: Who can see this custom field and its values. Controls visibility across different user roles.
  - object: Schema for creating a currency custom field definition
    - `data_entry_access` 'company_admin_only' | 'employee_only' | 'everyone', required: Who can enter or edit values for this custom field. Controls which users see the field as editable vs read-only.
    - `metadata` object, required
      - `currency` string, nullable: Currency code in [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format.
    - `name` string, required
    - `required` boolean, required
    - `type` 'currency', required
    - `visibility_scope` 'company_admin_only' | 'everyone', required: Who can see this custom field and its values. Controls visibility across different user roles.

## Response `200`

Success

- CreateEmploymentCustomFieldResponse: Response returned after successfully creating a new custom field definition.
  - `data` object, required
    - `custom_field` EmploymentCustomField, required: A custom field definition that can be applied to employments within a company. Custom fields allow you to store additional structured data on employments beyond the standard fields.
      - `data_entry_access` 'company_admin_only' | 'employee_only' | 'everyone', required: Who can enter or edit values for this custom field. Controls which users see the field as editable vs read-only.
      - `id` string, required: The unique identifier (UUID) of the custom field definition.
      - `metadata` object, nullable, required: Additional configuration for the field. For `single_select` fields, contains the list of selectable options. For `currency` fields, contains the currency code. Null for simple field types.
      - `name` string, required: The display name of the custom field (e.g., "Internal ID", "T-Shirt Size").
      - `required` boolean, required: Whether this custom field is required for all employments in the company.
      - `type` 'string' | 'text' | 'integer' | 'date' | 'boolean' | 'percentage' | 'decimal' | 'link' | 'currency' | 'single_select', required: The datatype of the custom field
      - `visibility_scope` 'company_admin_only' | 'everyone', required: Who can see this custom field and its values. Controls visibility across different user roles.

## Other responses

- `401`: Unauthorized
- `404`: Not Found
- `422`: Unprocessable Entity

---

[API](https://skmtc.dev/remote-com/apis/integrations.md) - [All operations](https://skmtc.dev/remote-com/apis/integrations/llms.txt) - [OpenAPI document](https://skmtc.dev/remote-com/apis/integrations/revisions/1798c3c003d5?raw)
