update_form
Update form details
Change a form's title, description, URL slug, settings (language, retention, thank-you message, redirect, welcome screen, presentation/layout, embed behavior) or branding/design (theme colors, font, logo, background image). Use this DIRECTLY for any design/theming request on a form — 'make it dark', 'use a serif font', 'add a background image', 'make the logo bigger', 'rounder corners', 'add a welcome screen' — no need to call get_form or get_brand_kit first: theme patches merge one level, and omitted tokens keep inheriting from the brand kit. A welcome screen (shown before the form starts, with a Start button) lives in settings.welcome: { title, message, buttonLabel, imageUrl (https) } — pass null to remove it. Design lives in branding.theme: { background, surface, ink, muted, accent, buttonBg, buttonFg (hex colors), radius (0–24 px), font ('system'|'humanist'|'geometric'|'rounded'|'serif'|'slab'|'mono'), density ('comfortable'|'compact'), align ('left'|'center'), backgroundImageUrl (https), backgroundOverlay (0–1), logoSize ('small'|'medium'|'large') } — validated, WCAG-AA contrast enforced, mobile-safe by construction. Theme values override the workspace brand kit (set_brand_kit); omit a token to inherit. branding.logoUrl sets a per-form logo; branding.customCss is a Pro escape hatch. Presentation lives in settings.presentation: layout 'single' | 'focus' (one question at a time, Typeform-style) | 'paged' (steps — define them with set_pages), progress 'bar' | 'counter' | 'none', and embed { mode: inline|popup|modal|slider|tab|fullpage, trigger: click|load|time|scroll|exit|idle|pages, triggerValue, position, label, cooldownDays } for how the form appears on the customer's own website. For changing fields use add_fields/update_field/remove_field/reorder_fields instead.
This is the settings tool — everything that isn’t a field: branding and after-submit, layout and progress, embed behavior, retention. Field changes use the dedicated field tools instead.
| Parameter | Type | Description |
|---|---|---|
| form_id | string | Form id (authenticated). From create_form/list_forms. |
| draft_token | string | Draft token (anonymous drafts, before sign-in). From create_form's draftToken. |
| title | string | |
| description | string | |
| slug | string | |
| settings | object | Partial settings patch: language, retentionDays, thankYouMessage, redirectUrl, allowedEmbedDomains, welcome ({ title, message, buttonLabel, imageUrl } or null), presentation ({ layout, progress, embed }) |
| branding | object | Partial branding patch: theme (design tokens — see the tool description), logoUrl (https), customCss (Pro). Patches merge one level: setting theme.accent keeps the other tokens. |
* required