---
summary: Every built-in field type with validation and editor UI.
title: Field types reference
path: reference/field-types
status: published
---

# Field types reference

All field types are defined in `backend/src/scaicms/models/content_type.py`.

| Slug | Editor | Notes |
|---|---|---|
| `text` | textarea | Single/multi-line plain text. |
| `richtext` | RichTextEditor (WYSIWYG) | `</> Source` toggle for raw HTML. |
| `markdown` | MarkdownEditor with live preview | Use for technical content. |
| `number` | `<input type="number">` | Integer/decimal — the value is stored as a number, not a string. |
| `boolean` | checkbox | Stored as a boolean. |
| `date` | `<input type="date">` | Date only. |
| `datetime` | `<input type="datetime-local">` | Date + time, no TZ in editor (UTC over the wire). |
| `select` | dropdown | `options` array in field config; multi-select with `multiple: true`. |
| `asset` | AssetPicker | Stores a single asset UUID; previews thumbnail. |
| `blocks` | BlocksEditor | Ordered JSON array; block types declared in the **template pack manifest**. |
| `json` | mono textarea | Raw JSON with validation. |
| `slug` | typed input | URL-safe; auto-generated from `title` if blank. |
| `email` | `<input type="email">` | RFC validation. |
| `url` | `<input type="url">` | http(s) only. |
| `relation` | (input + picker WIP) | Reference another content item. |

## Field definition flags

Beyond `field_type`, each field can carry:

| Flag | Meaning |
|---|---|
| `is_required` | Empty values rejected by validation. |
| `is_translatable` | The value can be overridden per-locale in `content_translations`. |
| `is_searchable` | Indexed into Weaviate so search can hit this field. |
| `validation` | Per-type config: `{"max_length": 200, "regex": "..."}`. |
| `default_value` | Used when creating new content. |
| `config` | Type-specific: `options` for `select`, `accept` for `asset`. |
