Field formats
Pro
Most fields read and write the same value. A few read back richer data than they accept: choice fields return a label, media returns an object, relations return references. When a write doesn't round-trip, check this page first.
Text and numbers
| Field type | Read | Write |
|---|---|---|
| Text, Textarea, Email, URL, Phone, Color | string | string. Phone in international format (+351912345678); Color as #RRGGBB or #RRGGBBAA |
| Rich text | HTML string | HTML string, cleaned on save |
| Markdown (Pro) | { content, formatted }, where formatted is HTML | the Markdown string only |
| Code | { content, language, filename } | { code, language, filename } or a plain string. The code is content on read and code on write. |
| Number, Stepper | number, or null | number, rounded to the decimals the field's Step allows: whole by default, one decimal on a step of 0.5 |
| Slider | number, or null | number, kept within range and snapped to the step |
| Range slider | { start, end } | { start, end } or [start, end] |
| List | array of strings | array of strings |
Choices
| Field type | Read | Write |
|---|---|---|
| Select, Radio Buttons, Button Group | { value, label } | the value string only |
| Multiselect, Checkboxes | array of { value, label } | array of value strings |
| Switcher | true or false | boolean ("1" and "0" also accepted) |
A value that isn't one of the field's choices is cleared.
Dates
| Field type | Read | Write |
|---|---|---|
| Date | "2026-06-12" | "2026-06-12" |
| Date & Time | "2026-06-12 19:00:00" | "2026-06-12 19:00:00" |
| Time | "19:00" | "19:00:00": seconds are required on write |
| Date range | { start, end } | { start, end }; end on or after start |
| Recurring Date (Pro) | [ { start, end, tz, allday, rrule } ] | the same |
Media
| Field type | Read | Write |
|---|---|---|
| Image, SVG, Video, Audio | a media object | an attachment ID |
| Gallery, Files (Pro) | array of media objects | array of attachment IDs, in order |
A media object is { id, url, alt, title, caption, mime }. Alt text is on images only, and audio adds duration. See Uploading media.
Relations
| Field type | Read | Write |
|---|---|---|
| Select Post, Post Relation (Pro) | array of { id, type, title, url, vx } | array of post IDs |
| Select User, User Relation (Pro) | array of user references | array of user IDs |
| Taxonomy | array of term references | array of term IDs. On posts, this sets the post's terms. |
Fields limited to one item accept one ID. "Has one" and "belongs to one" relations take over a link held by another entry; see Reassignment.
Containers
| Field type | Read | Write |
|---|---|---|
| Group | { sub_key: value, … } | the whole object; omitted sub-fields are cleared |
| Repeater, Field Table (Pro) | array of row objects | array of row objects; replaces every row |
| Content sections (Pro) | [ { id, layout, layout_label, fields } ] | [ { layout, fields } ] |
| Clone (Pro) | expanded: the cloned fields appear as if defined here | write the cloned fields directly |
Content sections: read each row's layout before its fields, since two layouts can use the same key for different things. An unknown layout on write is an error. A row whose layout was removed reads with an empty layout_label and no fields.
Geo
| Field type | Read | Write |
|---|---|---|
| Location (Pro) | { address, lat, lng, street, locality, postcode, country, … } | the same; coordinates rounded to 5 decimals |
| Area (Pro) | not included | not writable |
Never included
Password fields, layout fields and Area shapes are never read or written through the API.
Technical details for LLMs
- Asymmetric types:
select/radio/button_group(read object, write value),multiselect/checkboxes,markdown(read{content, formatted}, write string),code(readcontent, writecode),time(readHH:MM, writeHH:MM:SS),range_slider(write array or object), media and relations (read objects, write ids),content_sections(layout_labelread-only),recurring_date(storedid/multidayomitted on read). - Numbers:
number/stepperstore any number as given, rounded only at 10 decimals — theirstepis presentation and constrains nothing;sliderclamps and snaps;range_sliderorders[start, end]. - Limits enforced on write:
max_counton relations (truncated),max_entrieson recurring dates, media policy. Advisory:min_*,max_rows, lengths →vx_warnings. - Not serialized:
password,ui_*,area.cloneexpands before serialization and isn't itself a key.