---
title: "Create Custom Fields V1"
method: POST
path: "/v1/custom_fields"
tags: ["Custom Fields V1"]
---

# Create Custom Fields V1

`POST /v1/custom_fields`

Create a new custom field

## Request body

- CustomFieldsV1CreateRequestBody
  - `description` string, required — Description of the custom field
  - `field_type` 'single_select' | 'multi_select' | 'text' | 'link' | 'numeric', required — Type of custom field
  - `name` string, required — Human readable name for the custom field
  - `required` 'never' | 'before_closure' | 'always' — When this custom field must be set during the incident lifecycle. [DEPRECATED: please use required_v2 instead].
  - `required_v2` 'never' | 'before_resolution' | 'always' — When this custom field must be set during the incident lifecycle.
  - `show_before_closure` boolean, required — Whether a custom field should be shown in the incident resolve modal. If this custom field is required before resolution, but no value has been set for it, the field will be shown in the resolve modal whatever the value of this setting.
  - `show_before_creation` boolean, required — Whether a custom field should be shown in the incident creation modal. This must be true if the field is always required.
  - `show_before_update` boolean, required — Whether a custom field should be shown in the incident update modal.
  - `show_in_announcement_post` boolean — Whether a custom field should be shown in the list of fields as part of the announcement post when set.

## Response `201`

Created response.

- CustomFieldsV1CreateResponseBody
  - `custom_field` CustomFieldV1, required
    - `catalog_type_id` string — For catalog fields, the ID of the associated catalog type
    - `created_at` string, date-time, required — When the action was created
    - `description` string, required — Description of the custom field
    - `field_type` 'single_select' | 'multi_select' | 'text' | 'link' | 'numeric', required — Type of custom field
    - `id` string, required — Unique identifier for the custom field
    - `name` string, required — Human readable name for the custom field
    - `options` CustomFieldOptionV1[], required — What options are available for this custom field, if this field has options
      - `custom_field_id` string, required — ID of the custom field this option belongs to
      - `id` string, required — Unique identifier for the custom field option
      - `sort_key` integer, required — Sort key used to order the custom field options correctly
      - `value` string, required — Human readable name for the custom field option
    - `required` 'never' | 'before_closure' | 'always' — When this custom field must be set during the incident lifecycle. [DEPRECATED: please use required_v2 instead].
    - `required_v2` 'never' | 'before_resolution' | 'always' — When this custom field must be set during the incident lifecycle.
    - `show_before_closure` boolean, required — Whether a custom field should be shown in the incident resolve modal. If this custom field is required before resolution, but no value has been set for it, the field will be shown in the resolve modal whatever the value of this setting.
    - `show_before_creation` boolean, required — Whether a custom field should be shown in the incident creation modal. This must be true if the field is always required.
    - `show_before_update` boolean, required — Whether a custom field should be shown in the incident update modal.
    - `show_in_announcement_post` boolean — Whether a custom field should be shown in the list of fields as part of the announcement post when set.
    - `updated_at` string, date-time, required — When the action was last updated

---

[API](https://skmtc.net/incident/apis/incident-io.md) · [All operations](https://skmtc.net/incident/apis/incident-io/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/incident/incident-io/revisions/602fc25ddd76/schema)
