Form design config

Use the optional design object in your form config to set the form’s appearance. Design is part of the draft config, so you can save it with your form and publish it for respondents.

Properties

PropertyTypeAllowed values
logoObject{ url, is_rounded }
logo_sizeStringsm, md, lg
cover_imageStringAn image URL
cover_image_brightnessNumber40–140
cover_image_fitStringcover, contain
cover_image_positionObject{ x, y }, each from 0–100
cover_image_heightStringshort, medium, tall
fontStringA supported Google Font family name, with exact spelling
themeStringsystem, light, dark
theme_presetStringA preset ID, custom, or randomized
background_colorStringSix-digit hex color, with or without #
primary_colorStringSix-digit hex color, with or without #
accent_colorStringSix-digit hex color, with or without #
foreground_colorStringSix-digit hex color, with or without #
primary_foreground_colorStringSix-digit hex color, with or without #
border_radiusInteger0–32
question_alignmentStringleft, center
form_positionStringleft, center
form_widthStringnarrow, default, wide
custom_cssStringCSS text; applied on hosted and embedded pages when the form owner is on a paid plan

All keys are optional, and unknown keys are kept. Image sources must be HTTPS URLs on a host Makeform accepts, or absolute paths starting with /. When you set primary_color for the first time without setting accent_color, Makeform copies the primary color to the accent color.

Embeds follow the visitor's system theme by default. Direct /f/ pages are light unless the form's design or ft says otherwise.

Add design to a form config

The config requires a pages array. This example includes one question page and a design:

{ "mode": "page", "pages": [ { "type": "form", "id": "p1", "ui": [ { "type": "short_text_input", "name": "full_name", "label": "What is your name?", "required": true } ] } ], "design": { "logo_size": "md", "cover_image": "/images/cover.jpg", "cover_image_brightness": 100, "cover_image_fit": "cover", "cover_image_position": { "x": 50, "y": 50 }, "cover_image_height": "medium", "theme": "light", "theme_preset": "custom", "background_color": "#FFFFFF", "primary_color": "#2F6FED", "border_radius": 12, "question_alignment": "left", "form_position": "center", "form_width": "default" } }

Save and publish design changes

The form config is stored as a draft in preview_config. To update it through the REST API, send the complete config to PATCH /forms/{id}. The update replaces the whole draft and requires its current draft_hash (or the equivalent If-Match header). You can read the current config and hash with GET /forms/{id}. Publish the saved draft with POST /forms/{id}/publish to make it live.

Use managed images

You can upload a logo or cover image with POST https://api.makeform.ai/forms/{id}/image-assets. Send a multipart request with file and target; accepted formats are GIF, JPEG, PNG, and WebP. Logo and cover image uploads are limited to 4 MiB and are available on any plan. Attach the uploaded image to the form with the MCP tool update_form, using image_asset with the target and asset ID.