Fields
Choose field types, set requirements, and design references.
A field is one input in your content. Each field has a display name, shown in the dashboard, and a field ID, which is the key in the API response.
For example, a field with the display name "Title" and the ID title appears in delivered JSON as { "title": "First entry" }. Owners can change the schema.
Types and usage
| Field type | API type | Delivered value | Use |
|---|---|---|---|
| Text field | text | String | Titles, short descriptions |
| Text area | textarea | String | Multi-line plain text |
| Rich text | richtext | HTML string | Body text with headings, images, and links |
| Image | image | { url, alt } | Featured image |
| Multiple images | images | Array of { url, alt } | Gallery |
| Date and time | datetime | Date and time string | Event date and time |
| Boolean value | boolean | true or false | Flags such as "featured" |
| Select field | select | Single selection is a string, multiple selection is a string array | Categories, tags |
| Content reference | reference | ID, expanded object, or null | Link to one entry, such as an author |
| Multiple content reference | references | Array of IDs or expanded objects | Related entries |
| Numbers | number | Number | Sort order, numeric data |
| File | file | URL string | Downloads such as PDFs |
| Integration block | extension | Objects depending on the provider | Maps, external files, videos, posts, designs, and code |
Optional fields can be empty, so check that a value exists before you display it. Rich text is returned as HTML, not as editor JSON. To render it, see React components.
Required and input conditions
A required field must have a value when you save an entry. Depending on the type, you can also set a length or number range, options, a default value, multiple selection, or the referenced API.
"Required" is not a rule that applies only when you publish. Remember that people also save entries they are still writing.
A default value is not added to entries you have already saved. After you add a field, check your existing entries too.
Connect entries with references
To share author information across entries, create an API for authors and reference it from the blog's author field. You then do not have to type the author's details into every entry.
The delivered shape depends on depth.
depth: 0: The ID of the referenced entry.depth: 1(default): Expands the referenced entry one level.depth: 2: Expands one more level, including references inside the referenced entry.
Only referenced entries that are available for delivery are expanded. If the referenced entry is a draft or has been deleted, a single reference is null, and a multiple reference drops it from the array. Previewing the parent entry does not expand referenced drafts.
The CLI generates unknown / unknown[] for reference fields. It does not generate or link the referenced type for you, so check the value where you use it or define the expected shape in your app.
Handling images and files
In an image's alt, describe what the image shows and why it is there. Pass it to the alt attribute of img on your site. The file URL comes from the delivery response.
If you replace a media file, the next fetch returns the new URL. If you store a fetched URL in another database, it will not follow the replacement. See Media.
Handle integration blocks
An integration block returns a value specific to its provider and may include embedUrl. Providers that have no iframe URL, such as Dropbox and X, omit embedUrl, so show those as links. For supported services and how to enter them, see Integration blocks.
Also check the sharing settings of the linked page and whether it allows embedding. Saving a URL in genko.me does not give visitors access to a private file.
For the format the API returns, see Response values. For the types you can filter on, see Query reference.
Last updated: October 6, 2026