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

# Create Custom Field Definition

`POST /v1/custom-fields`

Creates a new custom field definition.

## Scopes

| Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|
| Manage employments (`employments`) | View custom fields (`custom_field:read`) | 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 of the SWIFT fee. Only present when processing_fee is set.
    - `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.net/remote-com/apis/remote.md) · [All operations](https://skmtc.net/remote-com/apis/remote/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/remote-com/remote/versions/7e6a0c61ac82/schema)
