---
title: "Create custom field option"
method: POST
path: "/v3/custom_field_options"
tags: ["Custom Field Options"]
---

# Create custom field option

`POST /v3/custom_field_options`

Add a new selectable value to a `single_select` or `multi_select` custom field. The parent field is identified by `custom_field_id` in the request body. If an archived option with the same name already exists on the field, this call reactivates it in place (updating its `sort_order` and `external_id`) rather than creating a duplicate.

## Request body

- object
  - `name` string, required — Display label for the option. Must be unique among active options on the same custom field; if an archived option already has this name, it is silently reactivated instead of creating a duplicate.
  - `sort_order` integer, required — Display position within the dropdown. Lower values render first. Greenhouse does not normalize gaps, so partners managing reorderings typically space values (e.g. 10, 20, 30) to leave room for inserts.
  - `custom_field_id` integer, required — Id of the parent custom field. Must be a `single_select` or `multi_select` field in the caller's organization.
  - `external_id` string — Optional caller-supplied identifier from the partner's source system (e.g. an HRIS row id). Stored verbatim and returned on subsequent reads as `external_id`.

## Response `201`

Successful

- object
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `custom_field_id` integer — Id of the parent custom field this option belongs to. Only fields with `value_type` of `single_select` or `multi_select` carry options.
  - `name` string — Display label shown to recruiters and hiring managers in dropdowns (e.g. `Engineering`, `Bachelor's`, `Stanford University`). Unique among active options on the same parent custom field.
  - `external_id` string, nullable — Caller-supplied identifier from the partner's source system (typically an HRIS row id or legacy ATS id). Persisted verbatim as the column `offsite_hris_id` and not interpreted by Greenhouse.
  - `sort_order` integer — Display position within the parent custom field's dropdown. Lower values render first; ties fall back to insertion order. Alias of `priority` in V1/V2.
  - `active` boolean — `true` while the option is selectable. Set to `false` after deletion — historical selections on candidates, jobs, and offers are preserved so the value still resolves on existing records.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `422` — Unprocessable Content

---

[API](https://skmtc.net/greenhouse/apis/auth-api.md) · [All operations](https://skmtc.net/greenhouse/apis/auth-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/greenhouse/auth-api/versions/9517a2e54640/schema)
