Skip to content

Every question a template can ask, and blank answers on the API

2026.10.15Ferrith ChatAPI15 Oct 2026
Highlights
  • A document template on the API now lists every question a document made from it could ask, including the questions of blocks that join only when a condition holds.
  • Answers to those conditional questions are accepted with the rest, so a block that joins on a condition prints complete.
  • An empty string is accepted as a blank answer on a text field, and a strict request no longer refuses it.
  • A text field's default in the library may be left blank, which means no default.

A small update to document templates on the API, with two changes in Ferrith Chat that come with it.

What's new

  • API. A document template's inputSchema now carries every question a document made from it could ask: the questions of the blocks the template always starts with, and the questions of every block that joins the document only when a condition holds. A conditional question is marked x-conditional and its description names the block it belongs to and when that block joins; it is never required. Send an answer with the rest and, when the block joins, its text prints with the answer; when it does not, the answer is kept and nothing prints. fieldKeys still names the template's own questions, and the new conditionalFieldKeys names the rest.
  • Ferrith Chat. The template editor and the template's card on the library page count those conditional questions with the template's fields, and a workflow's draft step lists them as optional rows in its check against the previous step's output.

Changes to be aware of

  • API. An empty string on a text, long-text or address field is now a blank answer rather than a refused value: it is stored, prints nothing where the field is merged, counts as answered, so a request with strict on no longer refuses it, and reads as not given in a block's condition. A field's own rules still apply, so a minimum length or a pattern still refuses a blank. Leave a field out to leave it unanswered, as before. A choice, date or number field still refuses an empty string.
  • Ferrith Chat. A text field in the drafting library may now be saved with a blank default, which means the field has no default; until now a blank default was refused. A workflow's draft step accepts a blank text value from the previous step in the same way.

Fixed

  • A document made from a template through the API, or by a workflow's draft step, printed a block that joined on a condition with its questions shown as unanswered, because the answers to those questions were refused as unknown. The questions are now published, the answers accepted, and the block prints complete.

← All release notes