# Field Types

Each field in a content type has a **type** that determines what kind of data it stores and how it is validated.

## Type reference

| Type | API value | Description |
|---|---|---|
| [String](#string-subtypes) | `string` | Text values with optional format validation |
| Number | `number` | Numeric values (integer or decimal) |
| Boolean | `boolean` | True or false |
| Date | `date` | Date, time, or datetime |
| Array | `array` | A list of values |
| Attachment | `attachment` | One or more file references |
| Relation | `relation` | One or more entry references |
| JSON | `json` | Structured JSON data |

## String subtypes

String fields can be configured with an `input_type` that adds format validation and editor behavior:

| Subtype | Validation | Max length | Use case |
|---|---|---|---|
| (default) | None | 255 | Short text |
| `textarea` | None | 15,000 | Longer text |
| `richtext` | None (produces HTML) | 15,000 | Rich formatted content |
| `email` | Email format | 255 | Email addresses |
| `url` | URL format | 255 | Links |
| `slug` | Alpha-dash | 255 | URL-safe identifiers |
| `path` | Relative path prefix | 255 | Internal paths |
| `phone` | Phone characters | 255 | Phone numbers |
| `dropdown` | Must match configured options | 255 | Single selection from a list |
| `list` | Must match configured options | 255 | Multiple selection from a list |

Hosted forms define their own public question fields. Content entries still store only the field types listed above.

## Attachment fields

Attachment fields reference files owned by the same workspace.

### Settings

| Setting | Applies when | Description |
|---|---|---|
| `accept` | Always | Allowed MIME types (`image/*`, `application/pdf`, etc.) |
| `multiple` | Always | Allow multiple file attachments |
| `distinct` | `multiple: true` | Prevent selecting the same file twice |
| `cascade_on_delete` | Always | Delete attached file when the entry is deleted |

### Values and rendering

Single attachment fields store one file. Multiple attachment fields store a list of files. When rendered, attachment values resolve to file details such as name, ID, and download URL.

## Relation fields

Relation fields reference entries from selected content types in the **same content bucket**.

### Settings

| Setting | Applies when | Description |
|---|---|---|
| Allowed content types | Always | Which content types can be referenced |
| `multiple` | Always | Allow multiple entry relations |
| `distinct` | `multiple: true` | Prevent selecting the same entry twice |
| `cascade_on_delete` | Always | Delete related entries when the source entry is deleted |

### Values and rendering

Single relation fields store one entry reference. Multiple relation fields store a list of entry references. When rendered, relation values resolve to entry details in the requested locale.

> Warning: Relations can only reference entries in the same content bucket. Cross-content bucket relations are not supported.

## Default values

| Type | Default |
|---|---|
| `string` | `null` |
| `number` | `null` |
| `boolean` | `false` (or `checked_by_default` if set) |
| `date` | `null` (or current timestamp if `current_timestamp` is set) |
| `array` | `null` |
| `attachment` | `null` |
| `relation` | `null` |
| `json` | `null` |

## Related pages

- [Fields](/docs/content-modeling/fields) — Field configuration, settings, and shared properties.
- [Content Types](/docs/content-modeling/content-types) — How fields fit into content types.
- [Entries](/docs/content/entries) — How field values are stored and rendered.
- [API Entries](/docs/api/entries) — Submitting field values via the API.
