Formfeed · Schema
TemplateVersionCreate
`html` is required for `pdf` and `image` templates.
PDFImage GenerationTemplatesDeveloper ToolsSoftware-as-a-Service
Properties
| Name | Type | Description |
|---|---|---|
| html | string | |
| css | string | |
| head | string | |
| settings | object | |
| sample_data | object | |
| data_schema | objectnull | |
| i18n | objectnull | |
| partials | object | Partials the template includes (`name` → source), as `formfeed templates push` collects them from the project's partials folder. |
| data_sets | object | Named sample data sets besides `sample_data` (`name` → data), as the editor shows them and `formfeed templates push` sends them from `data/*.json`. At most 50. |
| change_note | string | |
| base_checksum | string | Checksum of the version this draft was based on; conflict (409) if the latest version differs. |
| publish | boolean | |
| allow_breaking | boolean | With `publish`: publish although the data schema breaks callers of the published version (otherwise 409 `schema_breaking_change`). |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/formfeed/main/json-schema/formfeed-template-version-create-schema.json",
"title": "TemplateVersionCreate",
"description": "`html` is required for `pdf` and `image` templates.",
"x-generated": "2026-09-28",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/formfeed-openapi.json#/components/schemas/TemplateVersionCreate",
"type": "object",
"properties": {
"html": {
"type": "string"
},
"css": {
"type": "string"
},
"head": {
"type": "string"
},
"settings": {
"$ref": "#/$defs/Settings"
},
"sample_data": {
"type": "object",
"additionalProperties": true
},
"data_schema": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"i18n": {
"type": [
"object",
"null"
],
"additionalProperties": true
},
"partials": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Partials the template includes (`name` → source), as `formfeed templates push` collects them from the project's partials folder."
},
"data_sets": {
"type": "object",
"additionalProperties": true,
"description": "Named sample data sets besides `sample_data` (`name` → data), as the editor shows them and `formfeed templates push` sends them from `data/*.json`. At most 50."
},
"change_note": {
"type": "string"
},
"base_checksum": {
"type": "string",
"description": "Checksum of the version this draft was based on; conflict (409) if the latest version differs."
},
"publish": {
"type": "boolean",
"default": false
},
"allow_breaking": {
"type": "boolean",
"default": false,
"description": "With `publish`: publish although the data schema breaks callers of the published version (otherwise 409 `schema_breaking_change`)."
}
},
"$defs": {
"Settings": {
"type": "object",
"description": "Rendering settings. Deep-merged over the template's settings. See the settings reference.",
"additionalProperties": true,
"properties": {
"paper": {
"type": "object",
"properties": {
"format": {
"type": "string"
},
"width": {
"type": [
"string",
"null"
]
},
"height": {
"type": [
"string",
"null"
]
},
"landscape": {
"type": "boolean",
"default": false
}
}
},
"margin": {
"type": "object",
"properties": {
"top": {
"type": "string"
},
"right": {
"type": "string"
},
"bottom": {
"type": "string"
},
"left": {
"type": "string"
}
}
},
"header": {
"type": "object",
"description": "Printed across the whole page width inside the top margin.",
"properties": {
"html": {
"type": "string"
},
"height": {
"type": "string"
},
"padding": {
"type": "string",
"description": "CSS padding inside the header box; `0` for designs that run edge to edge.",
"default": "0 10mm"
}
}
},
"footer": {
"type": "object",
"description": "Printed across the whole page width inside the bottom margin.",
"properties": {
"html": {
"type": "string"
},
"height": {
"type": "string"
},
"padding": {
"type": "string",
"description": "CSS padding inside the footer box; `0` for designs that run edge to edge.",
"default": "0 10mm"
}
}
},
"printBackground": {
"type": "boolean",
"default": true
},
"scale": {
"type": "number",
"default": 1
},
"image": {
"type": "object",
"properties": {
"width": {
"type": "integer"
},
"height": {
"type": "integer"
},
"deviceScaleFactor": {
"type": "number",
"default": 2
},
"format": {
"type": "string",
"enum": [
"png",
"jpeg",
"webp"
],
"description": "Output of an image template when the request names no `output`. `jpg` is accepted as well."
},
"quality": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"fullPage": {
"type": "boolean",
"default": false
},
"transparent": {
"type": "boolean",
"default": false
}
}
},
"office": {
"type": "object",
"description": "Word and PowerPoint templates. Page setup, margins, headers and footers come from the document; the Chromium settings above do not apply.",
"properties": {
"output": {
"type": "string",
"enum": [
"docx",
"pptx",
"pdf"
],
"description": "Output when the request names none; the template's own format without it."
}
}
},
"locale": {
"type": "string"
},
"timezone": {
"type": "string"
},
"currency": {
"type": "string"
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/formfeed-template-version-create"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.