> ## Documentation Index
> 
> Fetch the complete documentation index at: [/docs/llms.txt](/docs/llms.txt)
> 
> Use this file to discover all available pages before exploring further.

[Skip to main content](#content-area)

osforms supports 15 field types across input, choice, scale, display, and layout categories.

## 

[​

](#text-inputs)

Text Inputs

### 

[​

](#text)

text

Single-line text input.

```
{
  "id": "full_name",
  "type": "text",
  "label": "Full name",
  "required": true,
  "validation": {
    "minLength": 2,
    "maxLength": 100
  }
}
```

### 

[​

](#email)

email

Single-line input with email format validation.

```
{
  "id": "email",
  "type": "email",
  "label": "Email address",
  "required": true
}
```

### 

[​

](#tel)

tel

Phone number input. No format enforcement — accepts any string.

```
{
  "id": "phone",
  "type": "tel",
  "label": "Phone number"
}
```

### 

[​

](#url)

url

URL input with format validation.

```
{
  "id": "website",
  "type": "url",
  "label": "Website URL",
  "placeholder": "https://example.com"
}
```

### 

[​

](#number)

number

Numeric input. Supports `min` / `max` validation.

```
{
  "id": "age",
  "type": "number",
  "label": "Age",
  "validation": { "min": 18, "max": 120 }
}
```

### 

[​

](#textarea)

textarea

Multi-line text input. Defaults to 4 rows.

```
{
  "id": "message",
  "type": "textarea",
  "label": "Message",
  "config": { "rows": 6 }
}
```

* * *

## 

[​

](#choice)

Choice

### 

[​

](#select)

select

Dropdown single-select. Supports optional search.

```
{
  "id": "country",
  "type": "select",
  "label": "Country",
  "options": [
    { "id": "us", "label": "United States", "value": "US" },
    { "id": "gb", "label": "United Kingdom", "value": "GB" }
  ],
  "config": { "searchable": true }
}
```

### 

[​

](#radio)

radio

Single-choice visible option list. Auto-advances in conversational mode.

```
{
  "id": "plan",
  "type": "radio",
  "label": "Which plan are you on?",
  "options": [
    { "id": "free", "label": "Free", "value": "free" },
    { "id": "pro", "label": "Pro", "value": "pro" }
  ],
  "config": { "layout": "vertical" }
}
```

**Layout options**: `vertical` (default), `horizontal`, `grid`

### 

[​

](#checkbox)

checkbox

Multi-select option list. Submitted as an array of selected values.

```
{
  "id": "interests",
  "type": "checkbox",
  "label": "What are you interested in?",
  "options": [
    { "id": "a", "label": "API integrations", "value": "api" },
    { "id": "b", "label": "React SDK", "value": "sdk" },
    { "id": "c", "label": "Webhooks", "value": "webhooks" }
  ]
}
```

### 

[​

](#date)

date

Date picker. Value submitted as `YYYY-MM-DD`.

```
{
  "id": "dob",
  "type": "date",
  "label": "Date of birth"
}
```

* * *

## 

[​

](#scale-&-rating)

Scale & Rating

### 

[​

](#rating)

rating

Star (or icon) rating. Defaults to 1–5. Auto-advances in conversational mode.

```
{
  "id": "satisfaction",
  "type": "rating",
  "label": "How satisfied are you?",
  "config": {
    "maxRating": 5,
    "ratingIcon": "star"
  }
}
```

**Icon options**: `star` (default), `heart`, `thumb`

### 

[​

](#scale)

scale

NPS-style numeric scale. Auto-advances in conversational mode.

```
{
  "id": "nps",
  "type": "scale",
  "label": "How likely are you to recommend us?",
  "config": {
    "scaleMin": 0,
    "scaleMax": 10,
    "scaleLowLabel": "Not likely",
    "scaleHighLabel": "Very likely"
  }
}
```

* * *

## 

[​

](#file-upload)

File Upload

### 

[​

](#file)

file

File upload input.

```
{
  "id": "resume",
  "type": "file",
  "label": "Upload your resume",
  "validation": {
    "fileTypes": [".pdf", ".doc", ".docx"],
    "maxFileSize": 5242880
  }
}
```

`maxFileSize` is in bytes. Default: `10485760` (10 MB). `fileTypes` accepts MIME types (`image/*`, `application/pdf`) or extensions (`.pdf`, `.jpg`).

* * *

## 

[​

](#display)

Display

### 

[​

](#statement)

statement

Display-only text block. No input collected. Use for instructions, section headers, or legal notices.

```
{
  "id": "intro",
  "type": "statement",
  "label": "Before you continue",
  "description": "Please read our privacy policy before submitting."
}
```

### 

[​

](#divider)

divider

Visual separator. Supported in `classic` and `stepped` modes only. No input collected.

```
{
  "id": "sep1",
  "type": "divider",
  "label": ""
}
```

* * *

## 

[​

](#common-field-properties)

Common Field Properties

Every field shares these properties:

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Unique identifier within the form. Used as the key in submissions. |
| `type` | `FieldType` | Yes | One of the 15 types above. |
| `label` | `string` | Yes | Question text shown to the user. |
| `description` | `string` | No | Helper text displayed below the label. |
| `placeholder` | `string` | No | Input placeholder text. |
| `required` | `boolean` | No | Default: `false`. |
| `options` | `FieldOption[]` | For choice types | Array of `{ id, label, value }`. |
| `validation` | `FieldValidation` | No | See below. |
| `conditionalLogic` | `ConditionalLogic` | No | Show/hide rules. See [Conditional Logic](/docs/docs/core/conditional-logic). |
| `config` | `FieldConfig` | No | Type-specific config. |

## 

[​

](#validation-reference)

Validation Reference

| Property | Types | Description |
| --- | --- | --- |
| `minLength` | `text`, `textarea` | Minimum character count |
| `maxLength` | `text`, `textarea` | Maximum character count |
| `min` | `number`, `scale`, `rating` | Minimum numeric value |
| `max` | `number`, `scale`, `rating` | Maximum numeric value |
| `pattern` | `text`, `email`, `tel` | Regex string for format validation |
| `patternError` | `text`, `email`, `tel` | Custom error message on pattern mismatch |
| `fileTypes` | `file` | Allowed MIME types or extensions |
| `maxFileSize` | `file` | Max file size in bytes |

[Quick Start](/docs/quickstart)[Conditional Logic](/docs/core/conditional-logic)

⌘I