Skip to main content
Your coding agent defines the shape of your content. Your team fills in and updates that content in Studio. Use a Single for one set of content, such as a homepage or site settings. Use a Collection for repeated entries, such as posts, products, or team members.

Add editable content

1

Create a schema

Add src/schemas/BlogPost.json. The PascalCase filename must match the schema UID. Ask your coding agent to load the fimo-code schema reference before writing the file.
2

Register the schema

This updates the current Branch and generates the framework-specific client. Do not edit generated files.
3

Add content

For a Collection entry:
For a Single:
4

Render it

Ask your coding agent to load the matching fimo-code content and framework references. The generated client reads the content, and Fimo’s rendering components keep it editable in Studio.

Manage schemas

Pushing all schema files as one batch supports models that reference each other:
Review schema changes before pushing them to a Branch with content. Deleting fields, changing references, and switching between a Collection and a Single can remove or reshape stored values.
Media fields default to one object. Arrays need multiple: true in fields, even with one image:
Use target when a reference always points to one content type. Use targets when each value may point to one of several content types:
A polymorphic value includes the selected content type and stable entry ID:
Fixed and polymorphic references use the same field definitions and value shapes inside blocks. Nested references return their raw identities and cannot currently be populated or filtered.

Store true or false flags

A read returns a tracked value, not a plain true/false, so Studio knows which field an editor clicked. Render it with the generated <Boolean> component, and read .value everywhere else:
if (post.featured) is always true, even when the stored value is false. Every tracked value is an object, and JavaScript treats every object as truthy — TypeScript reports no error either. Read .value in conditions, comparisons, attributes, and calls into other libraries. A field without required: true reads as post.featured?.value.

Store dates and exact moments

Use date for a calendar day and datetime for an exact moment. A datetime value must include an ISO 8601 UTC offset, such as Z or +02:00.
Fimo preserves the complete instant when it stores, filters, and sorts the field. Render it with the generated <DateTime> component. See frameworks for the component surfaces.

Check that your site reads a content type

fimo validate reports a content type that nothing in the site appears to read:
This is common after a migration: the schema and its entries arrive before the page that renders them. The warning does not fail the command, and the check reads only the files in the site. Code that lives outside it, or a content type selected at run time, is invisible to it — so treat the warning as a question, not a verdict. With --json, the same warnings are in warnings[] as text and in data.warnings[] with a stable code, the schema file, and the evidence the check used.

Manage entries and Singles

fimo singles get reads an existing Single: it returns not found when the Single has no content yet, and fimo singles update creates it. Creating a Single through fimo entries create or fimo entries bulk-create returns SINGLE_CONTENT_TYPE in the CLI’s --json error envelope. Use fimo singles update <typeName> to create or update its content. REST callers receive HTTP 400 with code: "single_content_type"; the response message retains the update path, PUT /documents/<typeName>. Use --locale <locale> for a non-default language. A translated variant of an existing Collection entry also needs its documentId when you create it. See Locales. Entry lists use the shared pagination flags. The response includes nextCursor when another page exists. The older --offset flag remains accepted for existing scripts. --populate on entries list, entries get, and singles get takes comma-separated top-level field names. Reference fields return the linked entry, media fields return the asset’s current facts such as width and height, and naming a blocks field populates the media inside it. Nested paths are not supported. Run fimo schemas get BlogPost --json to see field names and types. Studio offers the everyday editing experience. Open Content → Collections or Content → Singles to add and update values without running commands. For field definitions, filters, bulk actions, rich text, references, and every command option, see the CLI reference.

What’s next

CMS in Studio

Edit content without using the CLI.

Media

Upload files for media fields.