Mettre à jour un formulaire
Une mise à jour partielle. `document` remplace le brouillon en entier, et un formulaire en ligne continue d'afficher sa version publiée jusqu'à ce que vous publiiez. `settings` est fusionné champ par champ et prend effet immédiatement.
Exécute le véritable appel sur votre espace de travail.
PATCH /forms/{id}
Une mise à jour partielle. document remplace le brouillon en entier, et un formulaire en ligne continue d'afficher sa version publiée jusqu'à ce que vous publiiez. settings est fusionné champ par champ et prend effet immédiatement.
Exemple
Nécessite forms:write, et aussi emails:send quand l'appel active le double opt-in, désigne un expéditeur ou modifie l'e-mail de confirmation. Envoyez le updatedAt que vous avez lu dans expectedUpdatedAt : si quelqu'un a enregistré le formulaire entre-temps, votre modification est refusée au lieu d'écraser la sienne.
curl -X PATCH "$OE/forms/frm_3b9d2e7a1c4f80d56e2a9b14" -H "$AUTH" -H 'content-type: application/json' -d '{ "settings": { "successAction": "redirect", "redirectUrl": "https://acme.com/thanks" }, "expectedUpdatedAt": "2026-09-12T08:00:00.000Z"}'{ "object": "form", "id": "frm_3b9d2e7a1c4f80d56e2a9b14", "name": "Newsletter sign-up", "description": null, "status": "live", "url": "https://openemail.uk/form/frm_3b9d2e7a1c4f80d56e2a9b14", "subscribeUrl": "https://api.openemail.uk/subscribe/frm_3b9d2e7a1c4f80d56e2a9b14", "audienceIds": ["aud_4c1b8e2a7d9f05c36b4e8a71"], "doubleOptIn": true, "hasUnpublishedChanges": true, "document": { "fields": [ { "id": "fld_k2m8q4w9z1x7", "type": "email", "key": "email", "label": "Email", "placeholder": "[email protected]", "help": null, "required": true, "defaultValue": null, "options": [], "mapsTo": "email", "width": "full", "minLength": null, "maxLength": null, "min": null, "max": null } ], "copy": { "title": "Join our list", "description": "News from us, about once a month.", "submitLabel": "Subscribe", "successTitle": "You are on the list", "successMessage": "Thanks for signing up.", "pendingTitle": "Check your inbox", "pendingMessage": "Open the email we sent and confirm to finish.", "closedTitle": "This form is closed", "closedMessage": "It is not taking new sign-ups right now.", "footer": null }, "style": { "accent": "#18181b", "background": "#f4f4f5", "surface": "#ffffff", "text": "#18181b", "font": "system", "radius": "md", "width": "normal", "layout": "card", "align": "left", "logoUrl": null } }, "publishedDocument": { "fields": ["…"], "copy": { "title": "Join the list" }, "style": { "accent": "#18181b" } }, "settings": { "audienceIds": ["aud_4c1b8e2a7d9f05c36b4e8a71"], "doubleOptIn": true, "senderAddress": "[email protected]", "confirmSubject": "Please confirm your subscription", "confirmMessage": "Confirm your email address to start getting our messages.", "confirmButton": "Confirm my subscription", "successAction": "message", "redirectUrl": null, "notifyAddresses": ["[email protected]"] }, "audiences": [{ "id": "aud_4c1b8e2a7d9f05c36b4e8a71", "name": "Newsletter", "builtin": false }], "senderIssue": null, "senderProblem": null, "stats": { "views": 1840, "submissions": 212, "added": 198, "pending": 14, "lastSubmittedAt": "2026-09-30T16:42:11.000Z" }, "publishedAt": "2026-09-12T08:00:00.000Z", "createdAt": "2026-09-10T14:20:00.000Z", "updatedAt": "2026-09-12T08:00:00.000Z"}Un expectedUpdatedAt périmé donne un 409 version_conflict, et rien n'est écrit. Relisez le formulaire et refaites la modification.
Une valeur au mauvais format, comme une couleur qui n'est pas #rrggbb ou une redirectUrl qui n'est pas une URL http ou https, donne un 422 invalid_parameter, ou unknown_parameter pour une clé que le corps n'accepte pas. Une règle enfreinte par le document ou les paramètres pris ensemble donne un 422 invalid_form. Les deux nomment le champ dans param, comme document.fields.2.key ou settings.redirectUrl.
Pour modifier un champ du document, lisez le formulaire, modifiez-le et renvoyez le document entier.