---
title: "Create a field"
method: POST
path: "/field"
tags: ["Fields"]
---

# Create a field

`POST /field`

Creates a field.

## Headers

- `Accept` 'application/vnd.Creative Force.v2.3+json' | 'application/vnd.Creative Force.v2.3+xml', required
- `x-api-language` string[]

## Request body

- object
  - `type` 'checkbox' | 'checkboxlist' | 'content' | 'country' | 'currency' | 'date' | 'datetime' | 'drop-down-list' | 'email' | 'file' | 'lookup' | 'numeric' | 'phone' | 'radio' | 'table' | 'text' | 'textarea' | 'time' | 'url', required — Type of the field.
  - `tab` string, required — Slug of the tab the field belongs to.
  - `form` string — Slug of the form the field belongs to. The form must be valid for the active season and the field type.
  - `currency` string — Currency code. Required when `type` is `currency`.
  - `translated` object, required — Translated field values keyed by field name.
    - `title` object, required — Field title, keyed by language code. A value for the account default language is required.
    - `help_text` object — Values keyed by existing and enabled language code.
    - `hint_text` object — Values keyed by existing and enabled language code.

## Response `201`

Field created.

- Field
  - `entrant_read_access` boolean — Whether entrants can view this field.
  - `entrant_write_access` boolean — Whether entrants can edit this field.
  - `auto_scoring` integer — Score awarded automatically for the field, or `0` when automatic judging is not configured.
  - `categories` string[] — Category slugs the field is associated with. The single-element array `["*"]` indicates the field applies to every category.
  - `category_count` unknown
  - `conditional_field` object, nullable — Field whose value controls whether this field is shown, or `null` when the field is not conditional.
    - `slug` string — Short URL-safe identifier for the controlling field.
    - `link` string, uri — Canonical URL for the controlling field resource.
    - `name` object — Display name of the controlling field. Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
  - `created` string, date-time — Date and time when the field was created.
  - `file_types` string[] — Permitted file extensions for file fields. Empty when the field does not accept file uploads or no restriction applies.
  - `form` object, nullable — Form the field belongs to, or `null` when the field is not attached to a form.
    - `slug` string — Short URL-safe identifier for the form.
    - `link` string, uri — Canonical URL for the form resource.
    - `name` object — Display name of the form. Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
  - `help_text` object — Help text shown for the field, as an HTML fragment. Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
  - `hint_text` object — Hint text shown for the field, as an HTML fragment. Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
  - `label` object — Label of the field, as an HTML fragment. Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
  - `max_file_size` integer, nullable — Maximum upload size in megabytes for file fields, or `null` when no limit applies.
  - `maximum_characters` integer, nullable — Maximum number of characters accepted, or `null` when no limit applies.
  - `maximum_words` integer, nullable — Maximum number of words accepted, or `null` when no limit applies.
  - `minimum_characters` integer, nullable — Minimum number of characters required, or `null` when no limit applies.
  - `minimum_words` integer, nullable — Minimum number of words required, or `null` when no limit applies.
  - `options` string[] — Selectable options for choice fields (for example, drop-down or radio). Empty when the field type has no options.
  - `order` integer — Position of the field within its tab, used for ordering.
  - `protection` string — Protection level governing access to the data for the field (for example, `standard`, `elevated`, or `maximum`).
  - `registration` string, nullable — Registration attribute the field is mapped to, or `null` when the field is not mapped to a registration attribute.
  - `required` boolean — Whether a value is required for the field.
  - `resource` string — Resource the field collects data for (for example, the entry or application, `contributors`, `referees`, `attachments`, or `users`).
  - `searchable` boolean — Whether the field is included in search.
  - `season` object — Season the field belongs to.
    - `slug` string — Short URL-safe identifier for the season.
    - `link` string, uri — Canonical URL for the season resource.
    - `name` object — Display name of the season. Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
  - `slug` string — Short URL-safe identifier for the field.
  - `tab` object, nullable — Tab the field belongs to, or `null` when the field is not attached to a tab.
    - `slug` string — Short URL-safe identifier for the tab.
    - `link` string, uri — Canonical URL for the tab resource.
    - `name` object — Display name of the tab. Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
  - `title` object — Plain-text title of the field. Map keyed by locale code (for example, `en_GB` or `fr_FR`). Keys are drawn from the languages enabled on the account. Values are the translated string.
  - `type` string — Field type (for example, `text`, `textarea`, `drop-down-list`, `file`, `currency`, or `date`).
  - `updated` string, date-time — Date and time when the field was last updated.
  - `visibility` string[] — Contexts in which the field is visible (for example, `qualifying`, `top_pick`, `voting`, `gallery`, or `vip_judging`).

## Other responses

- `400` — Request was rejected before the endpoint could process it. Common causes: invalid `Accept` header, unsupported `x-api-language` code, empty request body on `POST` / `PUT`, invalid JSON in the request body, or an invalid slug format in a path parameter.
- `401` — Missing `x-api-key` header.
- `403` — Authenticated request denied. Common causes: invalid or unknown API key, suspended account, or `api` feature not enabled for the account.
- `422` — Request was syntactically valid but could not be processed. Returned in two scenarios: - **Field-level validation failure** — one or more request fields violated the endpoint's validation rules. The body includes an `errors` map keyed by field name with one or more validation messages each. - **Resource-state precondition failure** — the request fields were all valid, but the target resource was in a state that does not permit the requested operation. The body carries only `message` and `status_code`; no `errors` map.
- `429` — Rate limit of 60 requests per minute exceeded.
- `503` — Service is temporarily unavailable due to regional maintenance.

## Changes

- **2026-07-07** (v2) `9b9103538ceb` — 2 info
  - api tag `Fields` added
  - api tag `Field` removed
- **2026-07-04** (v2) `d62618a953f9` — 4 warning, 4 info
  - removed the optional property `applicant_read_access` from the response with the `201` status (media type: application/json)
  - removed the optional property `applicant_read_access` from the response with the `201` status (media type: application/xml)
  - removed the optional property `applicant_write_access` from the response with the `201` status (media type: application/json)
  - removed the optional property `applicant_write_access` from the response with the `201` status (media type: application/xml)
  - …4 more
- **2026-07-01** (v2) `e96a96d4507e` — 7 info
  - added the media type `application/xml` for the response with the status `201`
  - added the media type `application/xml` for the response with the status `400`
  - added the media type `application/xml` for the response with the status `401`
  - added the media type `application/xml` for the response with the status `403`
  - …3 more
- **2026-06-30** (v2) `6ba30bd1e070` — 2 breaking, 1 info
  - added the pattern `^[A-Za-z]{8}$` to the request property `form`
  - added the pattern `^[A-Za-z]{8}$` to the request property `tab`
  - the request property `form` became optional

[Change history](https://skmtc.dev/tectonic/apis/award-force-api/changes/field/post.md)

---

[API](https://skmtc.dev/tectonic/apis/award-force-api.md) · [All operations](https://skmtc.dev/tectonic/apis/award-force-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tectonic/award-force-api/revisions/e2511e46f9f2/schema)
