NueForm

Themes API

Customize the visual appearance of your forms with granular theme properties.

The Themes API lets you read and update the full visual theme for a form. Theme properties control colors, fonts, branding, and layout for both the form itself and individual UI elements like buttons, indicators, and options.

All request and response bodies use snake_case field names.

Get Form Theme

GET/api/v1/forms/:id/theme

Retrieves all theme properties for a form.

Path Parameters

idstring

The form ID

Response

json
{
  "theme_color": "#6366f1",
  "background_color": "#0a0a0a",
  "text_color": "#ffffff",
  "answer_text_color": "#e5e7eb",
  "placeholder_color": "#6b7280",
  "button_color": "#6366f1",
  "button_text_color": "#ffffff",
  "title_color": "#f9fafb",
  "description_color": "#d1d5db",
  "option_text_color": "#e5e7eb",
  "indicator_bg_color": "#1f2937",
  "indicator_text_color": "#9ca3af",
  "font_family": "Inter",
  "font_family_answer": "Inter",
  "font_family_button": "Inter",
  "font_family_description": "Inter",
  "font_family_option": "Inter",
  "font_family_indicator": "Inter",
  "question_font_size": "24px",
  "custom_css": null,
  "show_progress_bar": true,
  "branding_logo_url": null,
  "branding_footer_text": null,
  "hide_branding": false,
  "top_logo_url": null,
  "top_logo_size": null,
  "top_logo_alignment": "center",
  "top_logo_css": null,
  "watermark_css": null,
  "welcome_title": "Welcome",
  "welcome_description": null,
  "welcome_button_text": "Start",
  "thank_you_title": "Thank you!",
  "thank_you_description": null
}

Code Examples

bash
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/theme" \
  -H "Authorization: Bearer YOUR_API_KEY"

Update Form Theme

PUT/api/v1/forms/:id/theme

Updates theme properties for a form. Only include the fields you want to change. Unspecified fields retain their current values.

Path Parameters

idstring

The form ID

Request Body

Include any combination of theme properties from the Theme Properties Reference below.

Request Example

json
{
  "theme_color": "#2563eb",
  "background_color": "#ffffff",
  "text_color": "#111827",
  "button_color": "#2563eb",
  "button_text_color": "#ffffff",
  "font_family": "Poppins",
  "question_font_size": "28px",
  "show_progress_bar": true,
  "hide_branding": true,
  "top_logo_url": "https://cdn.example.com/logo.svg",
  "top_logo_size": "140px",
  "top_logo_alignment": "left"
}

Response

Returns the complete, updated theme object (same schema as Get Form Theme).

Code Examples

bash
curl -X PUT "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/theme" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "theme_color": "#2563eb",
    "background_color": "#ffffff",
    "text_color": "#111827",
    "font_family": "Poppins"
  }'

Theme Properties Reference

Below is the complete list of theme properties available for customization.

Color Properties

theme_colorstring

Primary accent color used throughout the form (focus rings, highlights). Default: "#6366f1"

background_colorstring

Form background color. Default: "#0a0a0a"

text_colorstring

Primary question text color. Default: null

answer_text_colorstring

Color of text typed into answer inputs. Default: null

placeholder_colorstring

Placeholder text color for empty inputs. Default: null

button_colorstring

Background color for submit/next buttons. Default: null

button_text_colorstring

Text color for submit/next buttons. Default: null

title_colorstring

Question title text color (overrides text_color for titles). Default: null

description_colorstring

Question description text color. Default: null

option_text_colorstring

Text color for multiple-choice and dropdown options. Default: null

indicator_bg_colorstring

Background color for the step/question number indicator. Default: null

indicator_text_colorstring

Text color for the step/question number indicator. Default: null

Font Properties

font_familystring

Font family for question titles. Supports any Google Font or system font. Default: null

font_family_answerstring

Font family for answer input text. Default: null

font_family_buttonstring

Font family for button labels. Default: null

font_family_descriptionstring

Font family for question descriptions. Default: null

font_family_optionstring

Font family for multiple-choice option labels. Default: null

font_family_indicatorstring

Font family for step/question number indicators. Default: null

question_font_sizestring

Font size for question titles (e.g., "24px", "1.5rem"). Default: null

Layout & Progress

show_progress_barboolean

Whether to display a progress bar at the top of the form. Default: true

Branding

branding_logo_urlstring

URL for a branding logo displayed in the footer area. Default: null

branding_footer_textstring

Custom text displayed in the form footer. Default: null

hide_brandingboolean

Hide the default NueForm branding footer. Default: false

top_logo_urlstring

URL for a logo displayed at the top of the form. Default: null

top_logo_sizestring

Size of the top logo (e.g., "120px", "80px"). Default: null

top_logo_alignmentstring

Horizontal alignment of the top logo: "left", "center", "right". Default: null

top_logo_cssstring

Custom CSS applied to the top logo container. Default: null

watermark_cssstring

Custom CSS applied to the branding watermark. Default: null

Welcome & Thank-You Screens

welcome_titlestring

Title text displayed on the welcome screen. Default: null

welcome_descriptionstring

Description text on the welcome screen. Default: null

welcome_button_textstring

Button label on the welcome screen. Default: "Start"

thank_you_titlestring

Title text on the completion screen. Default: "Thank you!"

thank_you_descriptionstring

Description text on the completion screen. Default: null

Advanced

custom_cssstring

Arbitrary CSS injected into the form renderer. Use for advanced customizations that theme properties do not cover. Default: null


Error Responses

Standard error responses returned by these endpoints.

Error Codes

401Unauthorized

Missing or invalid API key

403Forbidden

Insufficient permissions for team forms

404Not Found

Form not found

500Server Error

Internal server error

Error Example

json
{
  "error": "Form not found"
}
Last updated: April 6, 2026