Skip to main content

CLI overview

formfeed is the command line tool for working with templates as code and for everything you would otherwise click through in the app.

npx formfeed --help

It needs Node.js 22 or later. Installation covers installing it globally and logging in.

What it does​

TaskCommandsNeeds the API
Log in and check the keylogin, logout, whoamiyes
Read and write the user configconfig list, config get, config setno
Delete a workspaceworkspaces deleteyes
Start a project, sync templatesinit, templates list, templates pull, templates diff, templates pushyes
Preview with hot reloaddevno (only the true render uses it)
Check and testvalidate, testno
Write the XML of an e-invoice from a data seteinvoiceno
Render a real PDF or image, or fill a Word or PowerPoint templaterenderyes (free with a test key; the PDF of a Word or PowerPoint template needs the Starter plan)
Convert Word, Excel, PowerPoint and other office files to PDFpdf convertyes (Starter plan and above)
Sync the brand kit and shared partialsbrand pull, partials list, partials pull, partials pushyes
Sync the file libraryfiles list, files push, files pull, files deleteyes
Inspect and clean up rendersrenders list, renders get, renders delete-outputsyes
Reproduce a production render as a data set or testrenders pullyes
Develop webhooks locallylisten, webhooks resend, triggeryes
Preview changed templates in a pull requestci previewyes
Generate types for template datatypesonly with --remote or --channel, or outside a project
Move release channels, promote and roll backchannels list, channels set, channels promote, channels rollback, channels deleteyes
Import from other servicesimport apitemplate, import pdfmonkey, import jsreportno (PDFMonkey, and apitemplate.io with --key, are read through their own APIs)

The offline commands run the same template engine as the Formfeed servers, so what validate accepts renders in production. That includes Word and PowerPoint templates: the CLI fills them on your machine, and only their conversion to PDF goes through the API.

The commands that need the API use the key from --api-key, FORMFEED_API_KEY or the stored login, in that order. The key alone decides which workspace they act on; see Configuration.

The five commands you will use most​

formfeed dev invoice # live preview on http://localhost:4400
formfeed validate # check every template against its default data set
formfeed test # render every data set and compare with the approved snapshots
formfeed render invoice --out invoice.pdf # the PDF the API makes from your local files
formfeed templates push --publish # ship it

Scripting​

Every command accepts --json: it prints one JSON document to stdout instead of the text lines. The CLI never asks a question, so it runs unattended as it is. --ci only keeps formfeed login from opening a browser; a set CI environment variable does the same and also turns off the progress line that long commands draw on a terminal. Without --json, errors go to stderr as error: …. Exit codes are stable and documented in Exit codes:

formfeed renders list --status failed --since 2026-09-01T00:00:00Z --all --json | jq -r '.data[].id'

Next​