Sign Customiser

Navigation

Dark mode

Dry-run a labels merge patch without persisting anything.

POST/api/v3/customisers/{customiser_id}/labels/validate-update
POSTValidate customiser labels
POST/api/v3/customisers/{customiser_id}/labels/validate-update

Validate customiser labels

Dry-run a labels merge patch without persisting anything. The request body is the same merge patch the update operation accepts, and the response is exactly what that update would produce on the failing paths: the identical 422 problem (`validation_failed` with pointers and `allowed_values`, or `unknown_field`) — the same validation code path runs, only persistence is skipped. On a patch that would apply, the response is a 200 `customiser_labels_validation` confirmation. Nothing is written, no caches are touched, no idempotency key is consumed, and no activity is recorded, so the operation is always safe to repeat. The verdict is advisory: nothing binds it to a later update, and the labels can legitimately change between the two calls. Requires the `customisers:write` scope (it is the write's dry-run twin). A 400 problem means the body is not valid JSON; a 422 problem with code `invalid_document` means the body is not a JSON object. 401/403/404/429 behave as on the read operation, with `customisers:write` as the required scope.

Authorisation

The Authorization header expects a Bearer token. Generate one on the API keys page in your dashboard.

Path

The customiser id, from the list customisers operation.

Body
Validate customiser labels

Overview

The request body is the same merge patch the update operation accepts, and the response is exactly what that update would produce on the failing paths: the identical 422 problem (validation_failed with pointers and allowed_values, or unknown_field) — the same validation code path runs, only persistence is skipped. On a patch that would apply, the response is a 200 customiser_labels_validation confirmation. Nothing is written, no caches are touched, no idempotency key is consumed, and no activity is recorded, so the operation is always safe to repeat. The verdict is advisory: nothing binds it to a later update, and the labels can legitimately change between the two calls. Requires the customisers:write scope (it is the write's dry-run twin). A 400 problem means the body is not valid JSON; a 422 problem with code invalid_document means the body is not a JSON object. 401/403/404/429 behave as on the read operation, with customisers:write as the required scope.

Authorisation

Bearer token required. Include it in the Authorization header.

Required scope: customisers:write

Path parameters

customiser_idstringpathrequired

The customiser id, from the list customisers operation.

Example: 1

Request body

adding_to_cartstringbody
allow_custom_backgroundbooleanbody
apply_stylestringbody
aspect_ratio_warningstringbody
backboard_upload_errorstringbody
backgroundsstringbody
backlight_titlestringbody
border_includedstringbody
bottom_sidestringbody
braille_fixed_size_info_labelstringbody
braille_frame_too_small_messagestringbody
braille_overview_fitted_to_screen_labelstringbody
braille_translation_failed_messagestringbody
braille_translation_pending_messagestringbody
braille_untranslatable_modal_button_labelstringbody
braille_untranslatable_modal_labelstringbody
cancelstringbody
char_limit_reachedstringbody
character_limit_messagestringbody
character_textstringbody
click_word_desktopstringbody
cm_buttonstringbody
colour_min_size_messagestringbody
colour_titlestringbody
contact_descriptionstringbody
contact_headerstringbody
copy_buttonstringbody
create_product_failedstringbody
creating_productstringbody
crop_confirmstringbody
crop_modal_titlestringbody
crop_uploadstringbody
custom_design_button_labelstringbody
custom_design_form_file_labelstringbody
custom_design_form_file_type_errorstringbody
custom_design_form_input_errorstringbody
custom_design_form_message_errorstringbody
custom_design_form_message_successstringbody
custom_design_form_size_errorstringbody
custom_design_form_submit_messagestringbody
custom_design_form_total_size_errorstringbody
custom_design_steps_headerstringbody
custom_design_tab_titlestringbody
custom_design_typestringbody
custom_sizing_messagestringbody
default_background_height_cmintegerbody
default_background_width_cmintegerbody
default_textstringbody
display_initial_background_imagebooleanbody
display_initial_review_imagebooleanbody
edit_designstringbody
editing_wordstringbody
etsy_buttonstringbody
etsy_copied_buttonstringbody
etsy_copy_details_buttonstringbody
etsy_customisation_summary_labelstringbody
etsy_download_preview_buttonstringbody
etsy_listing_url_missingstringbody
etsy_preparing_imagestringbody
etsy_preview_errorstringbody
etsy_return_buttonstringbody
etsy_step1stringbody
etsy_step2stringbody
etsy_step3stringbody
etsy_suggested_price_labelstringbody
etsy_summary_colour_labelstringbody
etsy_summary_descriptionstringbody
etsy_summary_design_labelstringbody
etsy_summary_face_colour_labelstringbody
etsy_summary_halo_colour_labelstringbody
etsy_summary_icon_labelstringbody
etsy_summary_line_labelstringbody
etsy_summary_nostringbody
etsy_summary_not_selectedstringbody
etsy_summary_side_colour_labelstringbody
etsy_summary_titlestringbody
etsy_summary_trim_colour_labelstringbody
etsy_summary_tube_colour_labelstringbody
etsy_summary_uploaded_design_labelstringbody
etsy_summary_yesstringbody
examplestringbody
extra_colour_exclusion_messagestringbody
extras_titlestringbody
ai_build_accepted_formatsstringbody
ai_build_content_mismatchstringbody
ai_build_credits_required_descriptionstringbody
ai_build_credits_required_titlestringbody
ai_build_designing_descriptionstringbody
ai_build_designing_titlestringbody
ai_build_failed_upload_desktopstringbody
ai_build_failed_upload_mobilestringbody
ai_build_form_request_buttonstringbody
ai_build_optimising_imagestringbody
ai_build_pdf_command_failedstringbody
ai_build_pdf_invalidstringbody
ai_build_pdf_too_largestringbody
ai_build_pdf_unavailablestringbody
ai_build_pricing_unverifiedstringbody
ai_build_progress_descriptionstringbody
ai_build_progress_titlestringbody
ai_build_provider_refused_descriptionstringbody
ai_build_provider_refused_no_form_descriptionstringbody
ai_build_ready_descriptionstringbody
ai_build_ready_titlestringbody
ai_build_refining_descriptionstringbody
ai_build_refining_titlestringbody
ai_build_refused_descriptionstringbody
ai_build_refused_titlestringbody
ai_build_remove_imagestringbody
ai_build_review_required_descriptionstringbody
ai_build_review_required_titlestringbody
ai_build_save_form_save_versionstringbody
ai_build_save_form_saved_descriptionstringbody
ai_build_save_form_saved_titlestringbody
ai_build_saved_close_notestringbody
ai_build_saved_notestringbody
ai_build_svg_text_elementsstringbody
ai_build_throttled_descriptionstringbody
ai_build_throttled_titlestringbody
ai_build_unsupported_file_typestringbody
ai_build_uploaded_artworkstringbody
ai_build_width_above_maximumstringbody
ai_build_width_below_minimumstringbody
ai_build_width_unconfirmedstringbody
file_labelstringbody
file_upload_labelstringbody
font_titlestringbody
generating_imagestringbody
header_textstringbody
height_inputstringbody
icon_button_labelstringbody
icon_titlestringbody
inch_buttonstringbody
inclusionsstringbody
inclusions_headerstringbody
invalid_charactersstringbody
emoji_not_allowedstringbody
jacket_colour_exclusion_messagestringbody
jacket_titlestringbody
label_under_pricestringbody
left_sidestringbody
letter_parts_descriptionstringbody
letter_parts_titlestringbody
lightbox_product_type_titlestringbody
line_limit_reachedstringbody
lines_textstringbody
loading_manual_clear_textstringbody
logo_button_textstringbody
logo_textstringbody
logo_upload_design_readystringbody
logo_upload_failed_descriptionstringbody
logo_upload_failed_titlestringbody
logo_upload_file_too_largestringbody
logo_upload_pending_descriptionstringbody
logo_upload_pending_titlestringbody
logo_upload_try_anotherstringbody
main_tab_titlestringbody
manual_buttonstringbody
material_mounting_exclusion_messagestringbody
material_support_exclusion_messagestringbody
material_titlestringbody
max_sign_charstringbody
max_sign_modal_button_labelstringbody
max_sign_modal_labelstringbody
min_character_messagestringbody
min_height_sign_warningstringbody
mounting_colour_exclusion_messagestringbody
mounting_colour_min_size_messagestringbody
mounting_colour_titlestringbody
mounting_letter_part_titlestringbody
mounting_support_exclusion_messagestringbody
mounting_titlestringbody
options_tabstringbody
preview_notestringbody
pricestringbody
price_after_labelstringbody
price_box_textstringbody
price_button_addstringbody
price_button_buy_nowstringbody
price_button_finishstringbody
product_titlestringbody
product_type_titlestringbody
qualities_headerstringbody
quote_buttonstringbody
real_size_captionstringbody
real_size_descriptionstringbody
real_size_no_roomstringbody
real_size_sign_sizestringbody
real_size_unavailablestringbody
recenterstringbody
recenter_warningstringbody
retrystringbody
right_sidestringbody
rotationstringbody
shape_finished_sizestringbody
shape_proportions_fixed_bystringbody
shape_size_adjusted_to_fixed_proportionsstringbody
shape_size_adjusted_to_rangestringbody
shape_sizing_empty_feasible_rangestringbody
shape_sizing_invalid_canonical_boundsstringbody
shape_sizing_invalid_intentstringbody
shape_sizing_preset_requires_customstringbody
share_designstringbody
share_design_modal_descriptionstringbody
share_design_modal_titlestringbody
show_background_previewbooleanbody
show_contact_sectionbooleanbody
show_custom_designbooleanbody
show_custom_design_linkbooleanbody
show_inclusion_sectionbooleanbody
show_preview_notebooleanbody
show_review_imagesbooleanbody
show_review_sectionbooleanbody
show_styled_notebooleanbody
show_text_editor_overlaybooleanbody
sign_headerstringbody
size_titlestringbody
slider_buttonstringbody
summary_headerstringbody
support_colour_min_size_messagestringbody
support_colour_titlestringbody
support_titlestringbody
tap_word_mobilestringbody
text_align_centerstringbody
text_align_leftstringbody
text_align_rightstringbody
text_align_titlestringbody
text_button_labelstringbody
text_labelstringbody
text_orientation_horizontalstringbody
text_orientation_titlestringbody
text_orientation_vertical_stackedstringbody
text_template_custom_widthstringbody
text_template_custom_width_rangestringbody
text_template_field_outside_framestringbody
text_template_field_overflow_largerstringbody
text_template_fields_overlapstringbody
text_template_lettering_not_pricedstringbody
text_template_field_letters_touchstringbody
text_template_field_letters_touch_largerstringbody
text_template_lettering_sizestringbody
text_template_diameter_sizestringbody
text_template_custom_diameterstringbody
text_template_custom_diameter_rangestringbody
text_template_letter_heightstringbody
text_template_finish_titlestringbody
text_template_diameter_titlestringbody
text_template_merchant_artworkstringbody
text_template_size_unavailablestringbody
text_template_field_overflowstringbody
text_template_field_requiredstringbody
text_template_field_too_longstringbody
text_template_font_failedstringbody
text_template_order_unavailablestringbody
text_template_restartstringbody
text_template_supersededstringbody
text_template_keep_out_overlapstringbody
text_template_lettering_coveredstringbody
text_template_not_one_piecestringbody
text_template_structure_failedstringbody
text_template_graphic_requiredstringbody
text_template_graphic_failedstringbody
text_template_graphic_touches_letteringstringbody
text_template_graphic_horizontalstringbody
text_template_graphic_verticalstringbody
text_template_graphic_sizestringbody
text_template_graphic_resetstringbody
text_template_customer_artworkstringbody
text_template_graphic_uploadstringbody
text_template_graphic_processingstringbody
text_template_graphic_upload_failedstringbody
text_template_graphic_upload_waitstringbody
text_template_graphic_upload_unavailablestringbody
text_template_graphic_retrystringbody
text_template_graphic_keep_currentstringbody
text_template_graphic_use_defaultstringbody
text_template_font_forstringbody
text_template_font_every_linestringbody
text_template_artwork_not_makeablestringbody
text_template_field_too_finestringbody
text_template_metal_too_finestringbody
curved_text_labelstringbody
curved_text_line_labelstringbody
curved_text_straightstringbody
curved_text_reset_positionsstringbody
curved_text_straighten_allstringbody
curved_text_straighten_linestringbody
curved_text_icon_on_curved_linestringbody
curved_text_value_upstringbody
curved_text_value_downstringbody
curved_text_readout_upstringbody
curved_text_readout_downstringbody
curved_text_vertical_blockedstringbody
curved_text_font_failedstringbody
curved_text_block_feature_offstringbody
curved_text_block_unsupported_signstringbody
curved_text_block_vertical_orientationstringbody
curved_text_block_rtlstringbody
curved_text_icon_on_linestringbody
curved_text_moved_wordsstringbody
curved_text_empty_linestringbody
curved_text_conflict_feature_offstringbody
curved_text_conflict_unsupported_signstringbody
curved_text_conflict_vertical_orientationstringbody
curved_text_conflict_rtlstringbody
curved_text_font_pendingstringbody
curved_text_shaping_failedstringbody
curved_text_missing_space_glyphstringbody
curved_text_sweep_too_tightstringbody
curved_text_glyph_collisionstringbody
curved_text_field_radius_too_smallstringbody
curved_text_letter_reference_missingstringbody
curved_text_incorrect_curvestringbody
curved_text_order_font_failedstringbody
curved_text_order_icon_on_linestringbody
curved_text_order_empty_linestringbody
curved_text_order_incorrect_curvestringbody
text_titlestringbody
top_sidestringbody
upload_backgroundstringbody
uploading_imagesstringbody
user_bg_scale_cancelstringbody
user_bg_scale_continuestringbody
user_bg_scale_descriptionstringbody
user_bg_scale_errorstringbody
user_bg_scale_titlestringbody
view_switch_designstringbody
view_switch_real_sizestringbody
visualiser_offstringbody
visualiser_onstringbody
width_inputstringbody
zoom_instringbody
zoom_outstringbody

Request body example

application/json
{
  "adding_to_cart": "Adding to Cart",
  "allow_custom_background": true,
  "apply_style": "Apply to all",
  "aspect_ratio_warning": "Values may be modified to maintain the required aspect ratio",
  "backboard_upload_error": "Maximum upload size 2mb",
  "backgrounds": "Backgrounds",
  "backlight_title": "Backlight",
  "border_included": "(includes {border} border)",
  "bottom_side": "Bottom",
  "braille_fixed_size_info_label": "Braille dots stay at their accessibility-standard size; larger sign sizes carry larger tactile lettering.",
  "braille_frame_too_small_message": "Choose a bigger sign size so the braille can fit at its fixed size.",
  "braille_overview_fitted_to_screen_label": "Overview — fitted to screen",
  "braille_translation_failed_message": "Braille translation could not refresh. Please try again.",
  "braille_translation_pending_message": "Translating to Braille…",
  "braille_untranslatable_modal_button_label": "Get a custom quote",
  "braille_untranslatable_modal_label": "Some of your text cannot be turned into braille automatically. Send us your design and we will quote it for you.",
  "cancel": "Cancel",
  "char_limit_reached": "You have exceeded the maximum number of characters for the current size.",
  "character_limit_message": "The maximum number of characters for this current size has been reached.",
  "character_text": "characters max per line for current size",
  "click_word_desktop": "Click on a word to begin customising it.",
  "cm_button": "Use cm",
  "colour_min_size_message": "The selected colour is only available for larger sizes.",
  "colour_title": "Color",
  "contact_description": "Feel free to reach out through our Live Chat, read through our FAQ page or send us an email.",
  "contact_header": "Have some questions? We're here for you!",
  "copy_button": "Copy",
  "create_product_failed": "Something went wrong",
  "creating_product": "Creating Product",
  "crop_confirm": "Confirm",
  "crop_modal_title": "Resize your image",
  "crop_upload": "Upload your own image",
  "custom_design_button_label": "Got a logo? Get a quote",
  "custom_design_form_file_label": "Accepted file types include JPEG, PNG, WebP, AVIF, GIF, BMP, SVG, PDF, AI and EPS.",
  "custom_design_form_file_type_error": "We cannot accept this file type. Upload a JPEG, PNG, WebP, AVIF, GIF, BMP, SVG, PDF, AI or EPS file.",
  "custom_design_form_input_error": "Invalid input.",
  "custom_design_form_message_error": "Form submission failed. Please try again.",
  "custom_design_form_message_success": "Thank you for your submission.",
  "custom_design_form_size_error": "File size cannot exceed 10MB.",
  "custom_design_form_submit_message": "Submitting form, please wait.",
  "custom_design_form_total_size_error": "Total file size cannot exceed 20MB.",
  "custom_design_steps_header": "How it works",
  "custom_design_tab_title": "Custom",
  "custom_design_type": "form",
  "custom_sizing_message": "Enter text to set a custom size",
  "default_background_height_cm": 300,
  "default_background_width_cm": 300,
  "default_text": "Start Typing",
  "display_initial_background_image": true,
  "display_initial_review_image": true,
  "edit_design": "Edit my design",
  "editing_word": "Editing",
  "etsy_button": "Continue to Etsy",
  "etsy_copied_button": "Copied",
  "etsy_copy_details_button": "Copy details",
  "etsy_customisation_summary_label": "Customisation summary",
  "etsy_download_preview_button": "Download preview",
  "etsy_listing_url_missing": "Your Etsy listing link hasn't been set up yet. Contact the shop to get the link.",
  "etsy_preparing_image": "Preparing image",
  "etsy_preview_error": "Preview couldn't be generated. Please try again.",
  "etsy_return_button": "Return To Etsy To Place An Order",
  "etsy_step1": "Copy your details",
  "etsy_step2": "Return to Etsy",
  "etsy_step3": "Paste into the personalisation box",
  "etsy_suggested_price_label": "Suggested price",
  "etsy_summary_colour_label": "Colour",
  "etsy_summary_description": "Copy these details into the personalisation box on Etsy, then add this item to your basket there.",
  "etsy_summary_design_label": "Design",
  "etsy_summary_face_colour_label": "Face",
  "etsy_summary_halo_colour_label": "Halo",
  "etsy_summary_icon_label": "Icon",
  "etsy_summary_line_label": "Line",
  "etsy_summary_no": "No",
  "etsy_summary_not_selected": "Not selected",
  "etsy_summary_side_colour_label": "Side",
  "etsy_summary_title": "Your Etsy order details",
  "etsy_summary_trim_colour_label": "Trim",
  "etsy_summary_tube_colour_label": "Tube",
  "etsy_summary_uploaded_design_label": "Uploaded design",
  "etsy_summary_yes": "Yes",
  "example": "Example",
  "extra_colour_exclusion_message": "The selected option is not available with this colour.",
  "extras_title": "Extras",
  "ai_build_accepted_formats": "JPG, PNG, WebP, AVIF, SVG, PDF (Max 5MB, 25MB for PDF)",
  "ai_build_content_mismatch": "This file's contents don't match its name. Open it in your design tool and export it again rather than renaming it.",
  "ai_build_credits_required_description": "This store has no AI conversion credits remaining. Please contact the store owner.",
  "ai_build_credits_required_title": "Credits Required",
  "ai_build_designing_description": "Turning your image into clean lines and shapes.",
  "ai_build_designing_title": "Designing your sign",
  "ai_build_failed_upload_desktop": "Drop another image here or tap to browse",
  "ai_build_failed_upload_mobile": "Tap to choose another image",
  "ai_build_form_request_button": "Submit as a form request",
  "ai_build_optimising_image": "Optimising image…",
  "ai_build_pdf_command_failed": "We could not read this PDF. It may be password-protected or use unsupported features. Please upload a PNG, JPG, or SVG, or a flattened PDF.",
  "ai_build_pdf_invalid": "This PDF could not be read. Please upload a PNG, JPG, or SVG, or a flattened PDF.",
  "ai_build_pdf_too_large": "We could read this PDF, but it becomes too large to process as an image. Please upload a simpler PDF or a PNG, JPG, or SVG under {limit}MB.",
  "ai_build_pdf_unavailable": "PDF rasterisation is temporarily unavailable. Please upload a PNG, JPG, or SVG instead.",
  "ai_build_pricing_unverified": "Your design pricing could not be verified. Please upload it again.",
  "ai_build_progress_description": "We will add it to the editor when it is ready.",
  "ai_build_progress_title": "Creating your design",
  "ai_build_provider_refused_description": "Our AI can't recreate this image, often because of copyright. Try another image, or send it using the form below.",
  "ai_build_provider_refused_no_form_description": "Our AI can't recreate this image, often because of copyright. Try another image.",
  "ai_build_ready_description": "Your design is ready.",
  "ai_build_ready_title": "Putting it all together",
  "ai_build_refining_description": "Detailed images take a little longer.",
  "ai_build_refining_title": "Refining your design",
  "ai_build_refused_description": "Send it to us with the form and we'll design it for you.",
  "ai_build_refused_title": "We can't make this one automatically",
  "ai_build_remove_image": "Remove image",
  "ai_build_review_required_description": "We couldn't turn this image into a production-ready design. Try again or choose another image.",
  "ai_build_review_required_title": "Design review required",
  "ai_build_save_form_save_version": "Save this version",
  "ai_build_save_form_saved_description": "We have your details. We will contact you about your design.",
  "ai_build_save_form_saved_title": "Your design is saved",
  "ai_build_saved_close_note": "Your design is saved. You can close this page.",
  "ai_build_saved_note": "Your image is saved. Keep this page open.",
  "ai_build_svg_text_elements": "Text elements are not supported. Convert text to outlines in the SVG.",
  "ai_build_throttled_description": "Wait a few minutes and try again — there is nothing wrong with your image.",
  "ai_build_throttled_title": "Too many uploads just now",
  "ai_build_unsupported_file_type": "We can't read that file type. Save your artwork as a JPG, PNG, WebP, AVIF, SVG, or PDF and upload it again.",
  "ai_build_uploaded_artwork": "Uploaded artwork",
  "ai_build_width_above_maximum": "This design needs a sign no wider than {width}. Choose a smaller size.",
  "ai_build_width_below_minimum": "This design needs a sign at least {width} wide. Choose a larger size.",
  "ai_build_width_unconfirmed": "We cannot confirm the size of this design. Choose a different size.",
  "file_label": "Upload your logo",
  "file_upload_label": "Drop an image here or tap to browse",
  "font_title": "Font",
  "generating_image": "Generating Image",
  "header_text": "CREATE YOUR CUSTOM SIGN",
  "height_input": "Height",
  "icon_button_label": "Icons",
  "icon_title": "Icons",
  "inch_button": "Use inches",
  "inclusions": "Your Custom Sign\nPower Supply\nDigital Installation Guide\nFree Express Shipping\n12-Month Warranty",
  "inclusions_header": "What's included in your custom sign?",
  "invalid_characters": "Text contains invalid characters: {characters}. Please try another font.",
  "emoji_not_allowed": "Emojis are not supported on this sign: {characters}. Remove them to continue.",
  "jacket_colour_exclusion_message": "The selected jacket option is not available for this colour.",
  "jacket_title": "Jacket",
  "label_under_price": "",
  "left_side": "Left",
  "letter_parts_description": "",
  "letter_parts_title": "",
  "lightbox_product_type_title": "Lightbox",
  "line_limit_reached": "You have exceeded the maximum number of lines for the current size.",
  "lines_text": "lines",
  "loading_manual_clear_text": "Your design is being added to the cart. Please wait...",
  "logo_button_text": "Submit Custom Design",
  "logo_text": "To Submit a Custom Design, please click on the button below",
  "logo_upload_design_ready": "Design Ready!",
  "logo_upload_failed_description": "Fill out the form to send us an inquiry, we'll automatically attach this image",
  "logo_upload_failed_title": "We couldn't process your image",
  "logo_upload_file_too_large": "This file is too large. Choose a file up to {limit} MB.",
  "logo_upload_pending_description": "Depending on the complexity of the image, this may take a few minutes.",
  "logo_upload_pending_title": "Processing your image",
  "logo_upload_try_another": "Try another image",
  "main_tab_title": "Text",
  "manual_button": "Enter dimensions manually",
  "material_mounting_exclusion_message": "The selected material is not available with this mounting option.",
  "material_support_exclusion_message": "The selected material is not available with this backboard.",
  "material_title": "Material",
  "max_sign_char": "characters max",
  "max_sign_modal_button_label": "Get a quote",
  "max_sign_modal_label": "Size is over the limit. Contact us for a quote.",
  "min_character_message": "or more characters are required for this size, please add more characters.",
  "min_height_sign_warning": "The overall sign height is too small. Please increase the height.",
  "mounting_colour_exclusion_message": "The selected mounting option is not available with this colour.",
  "mounting_colour_min_size_message": "This colour requires a larger sign size.",
  "mounting_colour_title": "Mounting colour",
  "mounting_letter_part_title": "Mounting Side",
  "mounting_support_exclusion_message": "The selected mounting option is not available with this backboard.",
  "mounting_title": "Mounting",
  "options_tab": "Options",
  "preview_note": "Colours may appear different in real life",
  "price": "",
  "price_after_label": "",
  "price_box_text": "Free shipping, One year guarantee",
  "price_button_add": "Add to Bag",
  "price_button_buy_now": "Buy it now",
  "price_button_finish": "Finish",
  "product_title": "Custom Sign:",
  "product_type_title": "Letter Type",
  "qualities_header": "Good to know",
  "quote_button": "Finalize Quote",
  "real_size_caption": "The person is {height} tall. Change the sign size in the sidebar to see it here.",
  "real_size_description": "The sign is shown next to a person who is {height} tall.",
  "real_size_no_room": "Make the preview larger to see the real size.",
  "real_size_sign_size": "The sign is {size}.",
  "real_size_unavailable": "Make your design first to see its real size.",
  "recenter": "Recenter",
  "recenter_warning": "Click to reset position",
  "retry": "Try Again",
  "right_side": "Right",
  "rotation": "Rotation",
  "shape_finished_size": "Finished size: {width} × {height} {unit}",
  "shape_proportions_fixed_by": "Proportions fixed by {shape}",
  "shape_size_adjusted_to_fixed_proportions": "Your saved size was adjusted to match this shape’s fixed proportions.",
  "shape_size_adjusted_to_range": "Size adjusted to fit the available range.",
  "shape_sizing_empty_feasible_range": "This shape cannot be sized within the available minimum and maximum dimensions.",
  "shape_sizing_invalid_canonical_bounds": "This shape is unavailable because its proportions could not be loaded.",
  "shape_sizing_invalid_intent": "Enter a valid size to continue.",
  "shape_sizing_preset_requires_custom": "Choose a custom size for this shape.",
  "share_design": "Share my design",
  "share_design_modal_description": "",
  "share_design_modal_title": "Share Your Design",
  "show_background_preview": true,
  "show_contact_section": true,
  "show_custom_design": true,
  "show_custom_design_link": true,
  "show_inclusion_section": true,
  "show_preview_note": true,
  "show_review_images": true,
  "show_review_section": true,
  "show_styled_note": true,
  "show_text_editor_overlay": true,
  "sign_header": "YOUR SIGN",
  "size_title": "Size",
  "slider_button": "Switch back to slider",
  "summary_header": "YOUR SIGN DETAILS:",
  "support_colour_min_size_message": "The selected backboard colour is only available for larger sizes.",
  "support_colour_title": "Backboard Color",
  "support_title": "Backboard",
  "tap_word_mobile": "Tap on a word to begin customising it.",
  "text_align_center": "Center",
  "text_align_left": "Left",
  "text_align_right": "Right",
  "text_align_title": "Text Align",
  "text_button_label": "Got a text sign? Customise now",
  "text_label": "Write your text",
  "text_orientation_horizontal": "Horizontal",
  "text_orientation_title": "Orientation",
  "text_orientation_vertical_stacked": "Vertical",
  "text_template_custom_width": "Width ({unit})",
  "text_template_custom_width_range": "Type a width from {min} to {max}.",
  "text_template_field_outside_frame": "The text goes outside the sign. Make the text shorter.",
  "text_template_field_overflow_larger": "The text does not fit in the space for this field. Make the text shorter or select a larger size.",
  "text_template_fields_overlap": "The text touches the text of a different field. Make the text shorter.",
  "text_template_lettering_not_priced": "The text is larger than the sizes you can order. Make the text shorter or select a smaller size.",
  "text_template_field_letters_touch": "The letters touch on this curve. Change the text.",
  "text_template_field_letters_touch_larger": "The letters touch on this curve. Select a larger size or change the text.",
  "text_template_lettering_size": "Lettering: {size}",
  "text_template_diameter_size": "{size} diameter",
  "text_template_custom_diameter": "Diameter ({unit})",
  "text_template_custom_diameter_range": "Type a diameter from {min} to {max}.",
  "text_template_letter_height": "Letter height: {size}",
  "text_template_finish_title": "Finish",
  "text_template_diameter_title": "Diameter",
  "text_template_merchant_artwork": "Design artwork",
  "text_template_size_unavailable": "This size is not available for this design. Select a different size.",
  "text_template_field_overflow": "The text does not fit in the space for this field. Make the text shorter.",
  "text_template_field_required": "Type the text for this field.",
  "text_template_field_too_long": "The text has more than {max} characters. Make the text shorter.",
  "text_template_font_failed": "The font did not load. Select a different font.",
  "text_template_order_unavailable": "We could not check this design. Add it to the cart again.",
  "text_template_restart": "Start again with the current design",
  "text_template_superseded": "The sign design changed after you saved your text. Start again with the current design.",
  "text_template_keep_out_overlap": "The text is too near a mounting hole. Change the text.",
  "text_template_lettering_covered": "The frame covers part of the text. Change the text.",
  "text_template_not_one_piece": "Some parts of the letters do not touch the frame. Change the text.",
  "text_template_structure_failed": "We cannot show this design. Contact us.",
  "text_template_graphic_required": "Add artwork to this area.",
  "text_template_graphic_failed": "We cannot show this artwork. Contact us.",
  "text_template_graphic_touches_lettering": "The artwork touches the text. Move the artwork or make it smaller.",
  "text_template_graphic_horizontal": "Horizontal position",
  "text_template_graphic_vertical": "Vertical position",
  "text_template_graphic_size": "Size",
  "text_template_graphic_reset": "Reset position",
  "text_template_customer_artwork": "Your artwork",
  "text_template_graphic_upload": "Upload your artwork",
  "text_template_graphic_processing": "We are making your artwork into a shape to cut. This can take some minutes.",
  "text_template_graphic_upload_failed": "We cannot use this artwork. Try again, or keep the current artwork.",
  "text_template_graphic_upload_wait": "There are too many uploads now. Wait some minutes, then try again.",
  "text_template_graphic_upload_unavailable": "You cannot upload artwork now.",
  "text_template_graphic_retry": "Try again",
  "text_template_graphic_keep_current": "Keep current artwork",
  "text_template_graphic_use_default": "Use design artwork",
  "text_template_font_for": "Font for {field}",
  "text_template_font_every_line": "Use for every line",
  "text_template_artwork_not_makeable": "We cannot cut this artwork in the sign. Move the artwork or use different artwork.",
  "text_template_field_too_fine": "The letters are too thin or too close together to cut. Change the text.",
  "text_template_metal_too_fine": "Some parts of the sign are too thin or too close together to cut. Change the text.",
  "curved_text_label": "Curve",
  "curved_text_line_label": "Curve for line {line}",
  "curved_text_straight": "Straight",
  "curved_text_reset_positions": "Reset positions",
  "curved_text_straighten_all": "Make all lines straight",
  "curved_text_straighten_line": "Make this line straight",
  "curved_text_icon_on_curved_line": "You cannot add an icon to a curved line. Make this line straight to add the icon.",
  "curved_text_value_up": "Curve up, {degrees} degrees",
  "curved_text_value_down": "Curve down, {degrees} degrees",
  "curved_text_readout_up": "Up {degrees}°",
  "curved_text_readout_down": "Down {degrees}°",
  "curved_text_vertical_blocked": "Make all lines straight to use vertical text.",
  "curved_text_font_failed": "The font did not load. Select a different font, or make the line straight.",
  "curved_text_block_feature_off": "Curved text is not available.",
  "curved_text_block_unsupported_sign": "Curved text is not available for this sign.",
  "curved_text_block_vertical_orientation": "Curved text is not available for vertical text.",
  "curved_text_block_rtl": "Curved text is not available for right-to-left text.",
  "curved_text_icon_on_line": "Remove the icon from this line to curve it.",
  "curved_text_moved_words": "You moved or turned some words. Reset the positions to curve this line.",
  "curved_text_empty_line": "Type text on this line to curve it.",
  "curved_text_conflict_feature_off": "Curved text is not available. Make all lines straight to order.",
  "curved_text_conflict_unsupported_sign": "Curved text is not available for this sign. Make all lines straight to order.",
  "curved_text_conflict_vertical_orientation": "Curved text is not available for vertical text. Make all lines straight to order.",
  "curved_text_conflict_rtl": "Curved text is not available for right-to-left text. Make all lines straight to order.",
  "curved_text_font_pending": "The font is loading. Wait a moment.",
  "curved_text_shaping_failed": "This font cannot make curved text. Select a different font, or make the line straight.",
  "curved_text_missing_space_glyph": "This font cannot make curved text with spaces. Select a different font, or make the line straight.",
  "curved_text_sweep_too_tight": "The curve is too tight for this text. Make the curve smaller.",
  "curved_text_glyph_collision": "The curve is too tight for these letters. Make the curve smaller.",
  "curved_text_field_radius_too_small": "The circle for this text field is too small for its letters.",
  "curved_text_letter_reference_missing": "This font cannot set the letter height. Select a different font.",
  "curved_text_incorrect_curve": "The curve on this line is not correct. Make it straight.",
  "curved_text_order_font_failed": "We cannot show the curved text. Make the line straight, or select a different font.",
  "curved_text_order_icon_on_line": "Remove the icon from the curved line, or make the line straight.",
  "curved_text_order_empty_line": "Type text on the curved line, or make the line straight.",
  "curved_text_order_incorrect_curve": "The curve on one line is not correct. Make the line straight.",
  "text_title": "Text",
  "top_side": "Top",
  "upload_background": "Upload Background",
  "uploading_images": "Uploading Images",
  "user_bg_scale_cancel": "Cancel",
  "user_bg_scale_continue": "Continue",
  "user_bg_scale_description": "Specify the width and height this image represents in order to see your sign at a realistic scale.",
  "user_bg_scale_error": "Width and height must be numbers greater than 0.",
  "user_bg_scale_title": "Relative Scale",
  "view_switch_design": "Design",
  "view_switch_real_size": "Real size",
  "visualiser_off": "Off",
  "visualiser_on": "On",
  "width_input": "Width",
  "zoom_in": "Zoom In",
  "zoom_out": "Zoom Out"
}
Validate customiser labels
curl https://web.signcustomiser.com/api/v3/customisers/1/labels/validate-update \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "adding_to_cart": "Adding to Cart",
  "allow_custom_background": true,
  "apply_style": "Apply to all",
  "aspect_ratio_warning": "Values may be modified to maintain the required aspect ratio",
  "backboard_upload_error": "Maximum upload size 2mb",
  "backgrounds": "Backgrounds",
  "backlight_title": "Backlight",
  "border_included": "(includes {border} border)",
  "bottom_side": "Bottom",
  "braille_fixed_size_info_label": "Braille dots stay at their accessibility-standard size; larger sign sizes carry larger tactile lettering.",
  "braille_frame_too_small_message": "Choose a bigger sign size so the braille can fit at its fixed size.",
  "braille_overview_fitted_to_screen_label": "Overview — fitted to screen",
  "braille_translation_failed_message": "Braille translation could not refresh. Please try again.",
  "braille_translation_pending_message": "Translating to Braille…",
  "braille_untranslatable_modal_button_label": "Get a custom quote",
  "braille_untranslatable_modal_label": "Some of your text cannot be turned into braille automatically. Send us your design and we will quote it for you.",
  "cancel": "Cancel",
  "char_limit_reached": "You have exceeded the maximum number of characters for the current size.",
  "character_limit_message": "The maximum number of characters for this current size has been reached.",
  "character_text": "characters max per line for current size",
  "click_word_desktop": "Click on a word to begin customising it.",
  "cm_button": "Use cm",
  "colour_min_size_message": "The selected colour is only available for larger sizes.",
  "colour_title": "Color",
  "contact_description": "Feel free to reach out through our Live Chat, read through our FAQ page or send us an email.",
  "contact_header": "Have some questions? We'"'"'re here for you!",
  "copy_button": "Copy",
  "create_product_failed": "Something went wrong",
  "creating_product": "Creating Product",
  "crop_confirm": "Confirm",
  "crop_modal_title": "Resize your image",
  "crop_upload": "Upload your own image",
  "custom_design_button_label": "Got a logo? Get a quote",
  "custom_design_form_file_label": "Accepted file types include JPEG, PNG, WebP, AVIF, GIF, BMP, SVG, PDF, AI and EPS.",
  "custom_design_form_file_type_error": "We cannot accept this file type. Upload a JPEG, PNG, WebP, AVIF, GIF, BMP, SVG, PDF, AI or EPS file.",
  "custom_design_form_input_error": "Invalid input.",
  "custom_design_form_message_error": "Form submission failed. Please try again.",
  "custom_design_form_message_success": "Thank you for your submission.",
  "custom_design_form_size_error": "File size cannot exceed 10MB.",
  "custom_design_form_submit_message": "Submitting form, please wait.",
  "custom_design_form_total_size_error": "Total file size cannot exceed 20MB.",
  "custom_design_steps_header": "How it works",
  "custom_design_tab_title": "Custom",
  "custom_design_type": "form",
  "custom_sizing_message": "Enter text to set a custom size",
  "default_background_height_cm": 300,
  "default_background_width_cm": 300,
  "default_text": "Start Typing",
  "display_initial_background_image": true,
  "display_initial_review_image": true,
  "edit_design": "Edit my design",
  "editing_word": "Editing",
  "etsy_button": "Continue to Etsy",
  "etsy_copied_button": "Copied",
  "etsy_copy_details_button": "Copy details",
  "etsy_customisation_summary_label": "Customisation summary",
  "etsy_download_preview_button": "Download preview",
  "etsy_listing_url_missing": "Your Etsy listing link hasn'"'"'t been set up yet. Contact the shop to get the link.",
  "etsy_preparing_image": "Preparing image",
  "etsy_preview_error": "Preview couldn'"'"'t be generated. Please try again.",
  "etsy_return_button": "Return To Etsy To Place An Order",
  "etsy_step1": "Copy your details",
  "etsy_step2": "Return to Etsy",
  "etsy_step3": "Paste into the personalisation box",
  "etsy_suggested_price_label": "Suggested price",
  "etsy_summary_colour_label": "Colour",
  "etsy_summary_description": "Copy these details into the personalisation box on Etsy, then add this item to your basket there.",
  "etsy_summary_design_label": "Design",
  "etsy_summary_face_colour_label": "Face",
  "etsy_summary_halo_colour_label": "Halo",
  "etsy_summary_icon_label": "Icon",
  "etsy_summary_line_label": "Line",
  "etsy_summary_no": "No",
  "etsy_summary_not_selected": "Not selected",
  "etsy_summary_side_colour_label": "Side",
  "etsy_summary_title": "Your Etsy order details",
  "etsy_summary_trim_colour_label": "Trim",
  "etsy_summary_tube_colour_label": "Tube",
  "etsy_summary_uploaded_design_label": "Uploaded design",
  "etsy_summary_yes": "Yes",
  "example": "Example",
  "extra_colour_exclusion_message": "The selected option is not available with this colour.",
  "extras_title": "Extras",
  "ai_build_accepted_formats": "JPG, PNG, WebP, AVIF, SVG, PDF (Max 5MB, 25MB for PDF)",
  "ai_build_content_mismatch": "This file'"'"'s contents don'"'"'t match its name. Open it in your design tool and export it again rather than renaming it.",
  "ai_build_credits_required_description": "This store has no AI conversion credits remaining. Please contact the store owner.",
  "ai_build_credits_required_title": "Credits Required",
  "ai_build_designing_description": "Turning your image into clean lines and shapes.",
  "ai_build_designing_title": "Designing your sign",
  "ai_build_failed_upload_desktop": "Drop another image here or tap to browse",
  "ai_build_failed_upload_mobile": "Tap to choose another image",
  "ai_build_form_request_button": "Submit as a form request",
  "ai_build_optimising_image": "Optimising image…",
  "ai_build_pdf_command_failed": "We could not read this PDF. It may be password-protected or use unsupported features. Please upload a PNG, JPG, or SVG, or a flattened PDF.",
  "ai_build_pdf_invalid": "This PDF could not be read. Please upload a PNG, JPG, or SVG, or a flattened PDF.",
  "ai_build_pdf_too_large": "We could read this PDF, but it becomes too large to process as an image. Please upload a simpler PDF or a PNG, JPG, or SVG under {limit}MB.",
  "ai_build_pdf_unavailable": "PDF rasterisation is temporarily unavailable. Please upload a PNG, JPG, or SVG instead.",
  "ai_build_pricing_unverified": "Your design pricing could not be verified. Please upload it again.",
  "ai_build_progress_description": "We will add it to the editor when it is ready.",
  "ai_build_progress_title": "Creating your design",
  "ai_build_provider_refused_description": "Our AI can'"'"'t recreate this image, often because of copyright. Try another image, or send it using the form below.",
  "ai_build_provider_refused_no_form_description": "Our AI can'"'"'t recreate this image, often because of copyright. Try another image.",
  "ai_build_ready_description": "Your design is ready.",
  "ai_build_ready_title": "Putting it all together",
  "ai_build_refining_description": "Detailed images take a little longer.",
  "ai_build_refining_title": "Refining your design",
  "ai_build_refused_description": "Send it to us with the form and we'"'"'ll design it for you.",
  "ai_build_refused_title": "We can'"'"'t make this one automatically",
  "ai_build_remove_image": "Remove image",
  "ai_build_review_required_description": "We couldn'"'"'t turn this image into a production-ready design. Try again or choose another image.",
  "ai_build_review_required_title": "Design review required",
  "ai_build_save_form_save_version": "Save this version",
  "ai_build_save_form_saved_description": "We have your details. We will contact you about your design.",
  "ai_build_save_form_saved_title": "Your design is saved",
  "ai_build_saved_close_note": "Your design is saved. You can close this page.",
  "ai_build_saved_note": "Your image is saved. Keep this page open.",
  "ai_build_svg_text_elements": "Text elements are not supported. Convert text to outlines in the SVG.",
  "ai_build_throttled_description": "Wait a few minutes and try again — there is nothing wrong with your image.",
  "ai_build_throttled_title": "Too many uploads just now",
  "ai_build_unsupported_file_type": "We can'"'"'t read that file type. Save your artwork as a JPG, PNG, WebP, AVIF, SVG, or PDF and upload it again.",
  "ai_build_uploaded_artwork": "Uploaded artwork",
  "ai_build_width_above_maximum": "This design needs a sign no wider than {width}. Choose a smaller size.",
  "ai_build_width_below_minimum": "This design needs a sign at least {width} wide. Choose a larger size.",
  "ai_build_width_unconfirmed": "We cannot confirm the size of this design. Choose a different size.",
  "file_label": "Upload your logo",
  "file_upload_label": "Drop an image here or tap to browse",
  "font_title": "Font",
  "generating_image": "Generating Image",
  "header_text": "CREATE YOUR CUSTOM SIGN",
  "height_input": "Height",
  "icon_button_label": "Icons",
  "icon_title": "Icons",
  "inch_button": "Use inches",
  "inclusions": "Your Custom Sign\nPower Supply\nDigital Installation Guide\nFree Express Shipping\n12-Month Warranty",
  "inclusions_header": "What'"'"'s included in your custom sign?",
  "invalid_characters": "Text contains invalid characters: {characters}. Please try another font.",
  "emoji_not_allowed": "Emojis are not supported on this sign: {characters}. Remove them to continue.",
  "jacket_colour_exclusion_message": "The selected jacket option is not available for this colour.",
  "jacket_title": "Jacket",
  "label_under_price": "",
  "left_side": "Left",
  "letter_parts_description": "",
  "letter_parts_title": "",
  "lightbox_product_type_title": "Lightbox",
  "line_limit_reached": "You have exceeded the maximum number of lines for the current size.",
  "lines_text": "lines",
  "loading_manual_clear_text": "Your design is being added to the cart. Please wait...",
  "logo_button_text": "Submit Custom Design",
  "logo_text": "To Submit a Custom Design, please click on the button below",
  "logo_upload_design_ready": "Design Ready!",
  "logo_upload_failed_description": "Fill out the form to send us an inquiry, we'"'"'ll automatically attach this image",
  "logo_upload_failed_title": "We couldn'"'"'t process your image",
  "logo_upload_file_too_large": "This file is too large. Choose a file up to {limit} MB.",
  "logo_upload_pending_description": "Depending on the complexity of the image, this may take a few minutes.",
  "logo_upload_pending_title": "Processing your image",
  "logo_upload_try_another": "Try another image",
  "main_tab_title": "Text",
  "manual_button": "Enter dimensions manually",
  "material_mounting_exclusion_message": "The selected material is not available with this mounting option.",
  "material_support_exclusion_message": "The selected material is not available with this backboard.",
  "material_title": "Material",
  "max_sign_char": "characters max",
  "max_sign_modal_button_label": "Get a quote",
  "max_sign_modal_label": "Size is over the limit. Contact us for a quote.",
  "min_character_message": "or more characters are required for this size, please add more characters.",
  "min_height_sign_warning": "The overall sign height is too small. Please increase the height.",
  "mounting_colour_exclusion_message": "The selected mounting option is not available with this colour.",
  "mounting_colour_min_size_message": "This colour requires a larger sign size.",
  "mounting_colour_title": "Mounting colour",
  "mounting_letter_part_title": "Mounting Side",
  "mounting_support_exclusion_message": "The selected mounting option is not available with this backboard.",
  "mounting_title": "Mounting",
  "options_tab": "Options",
  "preview_note": "Colours may appear different in real life",
  "price": "",
  "price_after_label": "",
  "price_box_text": "Free shipping, One year guarantee",
  "price_button_add": "Add to Bag",
  "price_button_buy_now": "Buy it now",
  "price_button_finish": "Finish",
  "product_title": "Custom Sign:",
  "product_type_title": "Letter Type",
  "qualities_header": "Good to know",
  "quote_button": "Finalize Quote",
  "real_size_caption": "The person is {height} tall. Change the sign size in the sidebar to see it here.",
  "real_size_description": "The sign is shown next to a person who is {height} tall.",
  "real_size_no_room": "Make the preview larger to see the real size.",
  "real_size_sign_size": "The sign is {size}.",
  "real_size_unavailable": "Make your design first to see its real size.",
  "recenter": "Recenter",
  "recenter_warning": "Click to reset position",
  "retry": "Try Again",
  "right_side": "Right",
  "rotation": "Rotation",
  "shape_finished_size": "Finished size: {width} × {height} {unit}",
  "shape_proportions_fixed_by": "Proportions fixed by {shape}",
  "shape_size_adjusted_to_fixed_proportions": "Your saved size was adjusted to match this shape’s fixed proportions.",
  "shape_size_adjusted_to_range": "Size adjusted to fit the available range.",
  "shape_sizing_empty_feasible_range": "This shape cannot be sized within the available minimum and maximum dimensions.",
  "shape_sizing_invalid_canonical_bounds": "This shape is unavailable because its proportions could not be loaded.",
  "shape_sizing_invalid_intent": "Enter a valid size to continue.",
  "shape_sizing_preset_requires_custom": "Choose a custom size for this shape.",
  "share_design": "Share my design",
  "share_design_modal_description": "",
  "share_design_modal_title": "Share Your Design",
  "show_background_preview": true,
  "show_contact_section": true,
  "show_custom_design": true,
  "show_custom_design_link": true,
  "show_inclusion_section": true,
  "show_preview_note": true,
  "show_review_images": true,
  "show_review_section": true,
  "show_styled_note": true,
  "show_text_editor_overlay": true,
  "sign_header": "YOUR SIGN",
  "size_title": "Size",
  "slider_button": "Switch back to slider",
  "summary_header": "YOUR SIGN DETAILS:",
  "support_colour_min_size_message": "The selected backboard colour is only available for larger sizes.",
  "support_colour_title": "Backboard Color",
  "support_title": "Backboard",
  "tap_word_mobile": "Tap on a word to begin customising it.",
  "text_align_center": "Center",
  "text_align_left": "Left",
  "text_align_right": "Right",
  "text_align_title": "Text Align",
  "text_button_label": "Got a text sign? Customise now",
  "text_label": "Write your text",
  "text_orientation_horizontal": "Horizontal",
  "text_orientation_title": "Orientation",
  "text_orientation_vertical_stacked": "Vertical",
  "text_template_custom_width": "Width ({unit})",
  "text_template_custom_width_range": "Type a width from {min} to {max}.",
  "text_template_field_outside_frame": "The text goes outside the sign. Make the text shorter.",
  "text_template_field_overflow_larger": "The text does not fit in the space for this field. Make the text shorter or select a larger size.",
  "text_template_fields_overlap": "The text touches the text of a different field. Make the text shorter.",
  "text_template_lettering_not_priced": "The text is larger than the sizes you can order. Make the text shorter or select a smaller size.",
  "text_template_field_letters_touch": "The letters touch on this curve. Change the text.",
  "text_template_field_letters_touch_larger": "The letters touch on this curve. Select a larger size or change the text.",
  "text_template_lettering_size": "Lettering: {size}",
  "text_template_diameter_size": "{size} diameter",
  "text_template_custom_diameter": "Diameter ({unit})",
  "text_template_custom_diameter_range": "Type a diameter from {min} to {max}.",
  "text_template_letter_height": "Letter height: {size}",
  "text_template_finish_title": "Finish",
  "text_template_diameter_title": "Diameter",
  "text_template_merchant_artwork": "Design artwork",
  "text_template_size_unavailable": "This size is not available for this design. Select a different size.",
  "text_template_field_overflow": "The text does not fit in the space for this field. Make the text shorter.",
  "text_template_field_required": "Type the text for this field.",
  "text_template_field_too_long": "The text has more than {max} characters. Make the text shorter.",
  "text_template_font_failed": "The font did not load. Select a different font.",
  "text_template_order_unavailable": "We could not check this design. Add it to the cart again.",
  "text_template_restart": "Start again with the current design",
  "text_template_superseded": "The sign design changed after you saved your text. Start again with the current design.",
  "text_template_keep_out_overlap": "The text is too near a mounting hole. Change the text.",
  "text_template_lettering_covered": "The frame covers part of the text. Change the text.",
  "text_template_not_one_piece": "Some parts of the letters do not touch the frame. Change the text.",
  "text_template_structure_failed": "We cannot show this design. Contact us.",
  "text_template_graphic_required": "Add artwork to this area.",
  "text_template_graphic_failed": "We cannot show this artwork. Contact us.",
  "text_template_graphic_touches_lettering": "The artwork touches the text. Move the artwork or make it smaller.",
  "text_template_graphic_horizontal": "Horizontal position",
  "text_template_graphic_vertical": "Vertical position",
  "text_template_graphic_size": "Size",
  "text_template_graphic_reset": "Reset position",
  "text_template_customer_artwork": "Your artwork",
  "text_template_graphic_upload": "Upload your artwork",
  "text_template_graphic_processing": "We are making your artwork into a shape to cut. This can take some minutes.",
  "text_template_graphic_upload_failed": "We cannot use this artwork. Try again, or keep the current artwork.",
  "text_template_graphic_upload_wait": "There are too many uploads now. Wait some minutes, then try again.",
  "text_template_graphic_upload_unavailable": "You cannot upload artwork now.",
  "text_template_graphic_retry": "Try again",
  "text_template_graphic_keep_current": "Keep current artwork",
  "text_template_graphic_use_default": "Use design artwork",
  "text_template_font_for": "Font for {field}",
  "text_template_font_every_line": "Use for every line",
  "text_template_artwork_not_makeable": "We cannot cut this artwork in the sign. Move the artwork or use different artwork.",
  "text_template_field_too_fine": "The letters are too thin or too close together to cut. Change the text.",
  "text_template_metal_too_fine": "Some parts of the sign are too thin or too close together to cut. Change the text.",
  "curved_text_label": "Curve",
  "curved_text_line_label": "Curve for line {line}",
  "curved_text_straight": "Straight",
  "curved_text_reset_positions": "Reset positions",
  "curved_text_straighten_all": "Make all lines straight",
  "curved_text_straighten_line": "Make this line straight",
  "curved_text_icon_on_curved_line": "You cannot add an icon to a curved line. Make this line straight to add the icon.",
  "curved_text_value_up": "Curve up, {degrees} degrees",
  "curved_text_value_down": "Curve down, {degrees} degrees",
  "curved_text_readout_up": "Up {degrees}°",
  "curved_text_readout_down": "Down {degrees}°",
  "curved_text_vertical_blocked": "Make all lines straight to use vertical text.",
  "curved_text_font_failed": "The font did not load. Select a different font, or make the line straight.",
  "curved_text_block_feature_off": "Curved text is not available.",
  "curved_text_block_unsupported_sign": "Curved text is not available for this sign.",
  "curved_text_block_vertical_orientation": "Curved text is not available for vertical text.",
  "curved_text_block_rtl": "Curved text is not available for right-to-left text.",
  "curved_text_icon_on_line": "Remove the icon from this line to curve it.",
  "curved_text_moved_words": "You moved or turned some words. Reset the positions to curve this line.",
  "curved_text_empty_line": "Type text on this line to curve it.",
  "curved_text_conflict_feature_off": "Curved text is not available. Make all lines straight to order.",
  "curved_text_conflict_unsupported_sign": "Curved text is not available for this sign. Make all lines straight to order.",
  "curved_text_conflict_vertical_orientation": "Curved text is not available for vertical text. Make all lines straight to order.",
  "curved_text_conflict_rtl": "Curved text is not available for right-to-left text. Make all lines straight to order.",
  "curved_text_font_pending": "The font is loading. Wait a moment.",
  "curved_text_shaping_failed": "This font cannot make curved text. Select a different font, or make the line straight.",
  "curved_text_missing_space_glyph": "This font cannot make curved text with spaces. Select a different font, or make the line straight.",
  "curved_text_sweep_too_tight": "The curve is too tight for this text. Make the curve smaller.",
  "curved_text_glyph_collision": "The curve is too tight for these letters. Make the curve smaller.",
  "curved_text_field_radius_too_small": "The circle for this text field is too small for its letters.",
  "curved_text_letter_reference_missing": "This font cannot set the letter height. Select a different font.",
  "curved_text_incorrect_curve": "The curve on this line is not correct. Make it straight.",
  "curved_text_order_font_failed": "We cannot show the curved text. Make the line straight, or select a different font.",
  "curved_text_order_icon_on_line": "Remove the icon from the curved line, or make the line straight.",
  "curved_text_order_empty_line": "Type text on the curved line, or make the line straight.",
  "curved_text_order_incorrect_curve": "The curve on one line is not correct. Make the line straight.",
  "text_title": "Text",
  "top_side": "Top",
  "upload_background": "Upload Background",
  "uploading_images": "Uploading Images",
  "user_bg_scale_cancel": "Cancel",
  "user_bg_scale_continue": "Continue",
  "user_bg_scale_description": "Specify the width and height this image represents in order to see your sign at a realistic scale.",
  "user_bg_scale_error": "Width and height must be numbers greater than 0.",
  "user_bg_scale_title": "Relative Scale",
  "view_switch_design": "Design",
  "view_switch_real_size": "Real size",
  "visualiser_off": "Off",
  "visualiser_on": "On",
  "width_input": "Width",
  "zoom_in": "Zoom In",
  "zoom_out": "Zoom Out"
}'
Response
{
  "data": {
    "object": "customiser_labels_validation",
    "operation": "update",
    "customiser_id": 42,
    "valid": true
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/labels/validate-update",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}

Type a question and press Enter. Use the arrow keys to move between the results.