Make
Die Formfeed-App für Make hat zehn Module, einen Trigger und das universelle Modul Make an API call. Sie ist gebaut und in der Prüfung durch Make: Bis Make sie freigibt, steht sie nicht in Makes App-Liste. Bis dahin erledigt das HTTP-Modul dieselbe Aufgabe mit einer Anfrage, siehe das Ende dieser Seite.
Die App ist englischsprachig; Module und Felder heißen in Make so, wie sie hier stehen.
Verbinden
Legen Sie eine Formfeed-Verbindung an und fügen Sie einen API-Schlüssel aus
der App ein (API-Schlüssel). Ein ff_test_-Schlüssel rendert kostenlos (im Free-Plan mit
Wasserzeichen), genau richtig beim Bauen eines Szenarios. Die Verbindung erscheint als
Organisation / Workspace, mehrere Workspaces bleiben also unterscheidbar.
Die Vorgabe-Scopes eines neuen Schlüssels (render:create, render:read, template:read,
account:read) decken den Verbindungstest, Vorlagenliste und Felder, die Render- und Batch-Module
sowie Get a render / Get a batch ab. Die übrigen Module brauchen je einen weiteren
Scope, den ein neuer Schlüssel nur hat, wenn Sie ihn ankreuzen:
| Modul | Scope |
|---|---|
| Watch events | webhook:manage (es registriert einen Webhook-Endpunkt) |
| Upload a file | file:write |
| List files | file:read (in file:write enthalten) |
| Delete a file | file:delete |
Die erweiterte Einstellung API URL ist für eine Adresse, die Ihnen der Formfeed-Support nennt, etwa
ein Staging-Gateway, ohne /v1 und ohne Schrägstrich am Ende. Leer bleibt es bei
https://api.formfeed.dev. Sie lässt sich nur beim Anlegen der Verbindung setzen, weil der
API-Schlüssel nur an diese Adresse geht; für eine andere Adresse legen Sie eine neue Verbindung an.
Module
| Modul | Was es tut |
|---|---|
| Create a document | Rendert eine veröffentlichte Vorlage als PDF, PNG, JPG oder WebP und eine Word- oder PowerPoint-Vorlage als DOCX, PPTX oder PDF. Mit der Auswahl der Vorlage lädt Make deren Felder. |
| Create a document from HTML | Rendert HTML, das früher im Szenario gebaut wurde, in der Vorlagensprache Ihrer Wahl. |
| Create a document from a URL | Rendert eine öffentliche Seite. |
| Convert a document to PDF | Wandelt eine Word-, Excel-, PowerPoint-, OpenDocument- oder RTF-Datei aus einem vorherigen Modul (bis 20 MB, wird nicht gespeichert) oder das Rendering einer Word- oder PowerPoint-Vorlage in ein PDF um, mit der Datei für das nächste Modul. Ab dem Starter-Tarif. |
| Get a render | Liefert ein Rendering anhand seiner ID, mit der Datei, sobald es erfolgreich war. |
| Create a batch | Reiht bis zu 1.000 Dokumente aus einer Vorlage ein, auf Wunsch mit einem Zip aller Dokumente. |
| Get a batch | Liefert den Fortschritt eines Batch, seine Dokumente und die Zip-URL. |
| Watch events | Startet das Szenario bei render.completed, render.failed, job.completed, job.failed, quota.warning oder quota.exceeded. |
| Upload a file | Legt ein Bild oder PDF aus einem vorherigen Modul in der Dateibibliothek ab, wo Vorlagen es mit asset() verwenden. Derselbe Name ersetzt die Datei. |
| List files | Gibt die Dateien der Bibliothek zurück, optional nur einen Ordner (brand/). |
| Delete a file | Entfernt eine Datei anhand ihrer fil_…-ID aus der Bibliothek. |
| Make an API call | Ruft jeden anderen Endpunkt mit dem Schlüssel der Verbindung auf, etwa /v1/pdf/merge. |
Die Felder der Module:
| Modul | Felder |
|---|---|
| Create a document | Template (Pflicht), dann die eigenen Felder der Vorlage und, bei Release Channels, Version; Output (leer: das Format der Vorlage, PDF bei einer PDF-Vorlage, ihr Bildformat bei einer Bildvorlage, ihre Vorgabe bei einer Word- oder PowerPoint-Vorlage; Word-Vorlagen rendern DOCX oder PDF, PowerPoint-Vorlagen PPTX oder PDF), File name, Locale (etwa de-DE, ersetzt das der Vorlage und wählt ihre Übersetzungen), Download the document (voreingestellt an) |
| Create a document from HTML | HTML (Pflicht), Template language (Jinja2, die Vorgabe, Liquid oder Handlebars), Data (JSON), Output (PDF, die Vorgabe, PNG, JPG oder WebP), File name, Download the document, Settings (JSON) (Papier, Ränder, Kopf- und Fußzeile oder die Bildgröße, wie unter Einstellungen pro Anfrage überschreiben) |
| Create a document from a URL | URL (Pflicht, eine öffentliche Seite; private Netze und interne Hosts werden abgelehnt), Output (PDF, die Vorgabe, PNG, JPG oder WebP), File name, Download the document, Settings (JSON) |
| Convert a document to PDF | Document: A file from an earlier module (File name und Data: DOCX, XLSX, PPTX, ODT, ODS, ODP, DOC, XLS, PPT oder RTF, bis 20 MB; der Typ wird aus dem Inhalt gelesen) oder The render of a Word or PowerPoint template (Render ID, rnd_… eines Renderings mit Ausgabe DOCX oder PPTX); Page ranges (etwa 1-3,5, leer alle), Landscape, One page per sheet (für Tabellen und Dokumente ohne eigenes Seiten-Setup), File name (leer der Name der hochgeladenen Datei mit .pdf), Download the document |
| Get a render | Render ID (Pflicht, rnd_…), Download the document |
| Create a batch | Template (Pflicht), Documents (Pflicht, bis zu 1.000, jedes mit den Feldern der Vorlage, File name, Output und Locale), Zip all documents (voreingestellt an) |
| Get a batch | Batch ID (Pflicht, job_…) |
| Watch events | Events (Pflicht, voreingestellt Render completed) |
| Upload a file | File name und Data (Pflicht: PNG, JPEG, WebP, GIF, SVG, AVIF oder PDF, bis 10 MB), Name in library (der Name, den Vorlagen mit asset() verwenden, etwa brand/logo.png; leer der eigene Name der Datei) |
| List files | Name starts with (etwa brand/), Limit (voreingestellt 10) |
| Delete a file | File ID (Pflicht, fil_…). Vorlagen, die die Datei verwenden, zeigen danach ein fehlendes Bild |
| Make an API call | URL (Pflicht, ein Pfad wie /v1/templates, immer an die Adresse der Verbindung angehängt), Method, Headers, Query string, Body. Den Header Authorization ergänzt die Verbindung |
Felder aus Ihrer Vorlage
Die Liste Template zeigt die Vorlagen des Workspace mit Name und Art und markiert die
unveröffentlichten; rendern lassen sich nur veröffentlichte. Mit der Auswahl einer Vorlage lädt Make
die Felder ihres Datenschemas oder, wenn die Vorlage keines hat, die
Felder ihrer Beispieldaten. Verschachtelte Objekte werden zu Gruppen, Listen wie Rechnungspositionen
zu Arrays: Ordnen Sie ihnen einen Array aggregator zu, und die Bundles eines früheren Moduls werden
zu Positionen. Eine Vorlage ohne Schema und ohne Beispieldaten bietet stattdessen ein Feld
Data (JSON) an. Eine Vorlage mit Release Channels neben
published erhält zusätzlich ein Select Version, das sie listet.
Die Datei für das nächste Modul
Mit Download the document (voreingestellt) liefern die Dokument-Module neben dem Rendering auch die Datei, das nächste Modul übernimmt sie also direkt: den Anhang in Gmail, den Upload zu Google Drive oder Dropbox, eine FTP-Übertragung. Schalten Sie es aus, wenn die Download-URL genügt.
Ein Rendering, das länger als eine Minute dauert, läuft im Hintergrund weiter. Das Modul prüft dann fünf Minuten lang alle fünf Sekunden und liefert das Rendering, sobald es fertig ist; danach gibt es das Rendering im aktuellen Stand zurück, und Get a render oder Watch events holt es später ab.
Watch events liest jedes Rendering- und Batch-Ereignis über die API nach, bevor das Szenario es sieht. Das Bundle trägt so eine frische Download-URL, und ein Rendering- oder Batch-Ereignis, das nicht von Formfeed stammt, endet mit einem Fehler, statt Ihr Szenario mit erfundenen Daten laufen zu lassen. Kontingent-Ereignisse kommen so durch, wie sie eintreffen.
Fehler kommen mit Statuscode, Problembeschreibung und Code zurück, etwa
[404] No published template "invoice-de" in workspace fennlor (template_not_found), sodass die
Fehlerbehandlung eines Szenarios danach verzweigen kann. Vorlagen- und Datenfehler (422) und ein
Rendering, das scheitert, während das Modul darauf wartet, kommen als Datenfehler (DataError) an,
sodass eine Fehlerbehandlung sie vom Rest unterscheiden kann. Fehler listet jeden
Code.
Batches
Create a batch nimmt ein Array von Dokumenten: die Daten und optional Dateiname, Ausgabeformat und Locale je Dokument. Ein Szenario sieht meist so aus:
- ein Suchmodul (Google Sheets, Airtable, eine Datenbank), das je Zeile ein Bundle liefert,
- ein Array aggregator mit Create a batch als Zielstruktur, der die Spalten den Feldern der Vorlage zuordnet,
- Create a batch, das sofort mit der Batch-ID antwortet.
Ein zweites Szenario, das mit Watch events auf Batch completed beginnt, erhält die Zip-URL, sobald der Batch fertig ist, und Get a batch listet seine Dokumente. Wie sich Batches verhalten, beschreibt Async und Batch.
Bis zur Veröffentlichung
Make a request des HTTP-Moduls funktioniert schon heute mit jedem Formfeed-Endpunkt:
- URL
https://api.formfeed.dev/v1/renders, MethodePOST - Header
Authorization: Bearer ff_test_… - Body type Raw, Content type JSON, Request content
{"template": "invoice-de", "data": {"invoice": {"number": "2026-0042"}}} - Parse response eingeschaltet
Die Antwort enthält download_url, die ein zweites HTTP-Modul (Get a file) in eine Datei
verwandelt. Die Form der Anfrage beschreibt Rendern.