Sign Customiser

Navigation

Dark mode

Retrieve every customer-facing label on the customiser as one canonical document. Most properties are the copy for a single piece of the storefront customiser — a step heading (text_title, size_title, colour_title), a button (price_button_add, quote_button), a warning (char_limit_reached, min_height_sign_warning) or a placeholder.

GET/api/v3/customisers/{customiser_id}/labels
GETGet customiser labels
GET/api/v3/customisers/{customiser_id}/labels

Get customiser labels

Retrieve every customer-facing label on the customiser as one canonical document. Most properties are the copy for a single piece of the storefront customiser — a step heading (`text_title`, `size_title`, `colour_title`), a button (`price_button_add`, `quote_button`), a warning (`char_limit_reached`, `min_height_sign_warning`) or a placeholder. A handful are section switches (`show_contact_section`, `show_inclusion_section`, `show_review_section` and friends), which turn a block of the storefront on rather than word it, and `custom_design_type` is the one closed set: `none`, `link`, `form`, or `live`. The values are the effective copy the storefront renders: your saved copy for a text label you have worded, and the built-in default for one you have not worded or have cleared with null. A text label reads back as null only when it has no built-in default. A read is therefore a description of the storefront rather than a patch body — echo one back and you would store every built-in default as an explicit override of your own, and its read-only properties would be refused besides. Send only the labels you are changing, which is what a merge patch is for. Six properties are read-only on the merge patch. Three carry uploaded files: `product_image_url`, `background_images` (each with its `name`, `image_url`, the `width_cm`/`height_cm` the photograph depicts, the `sign_area` box where the shopper's sign may appear, the `linked_size_ids` and `is_default_background` that link it to sizes, and a `mobile` version with the same fields for the preview on narrow screens, or null) and `additional_information` (reinsurance cards, each with `header`, `description`, and `image_url`). A `*_url` string is a description of a stored file rather than a shape you could send back, so files move through the staged-upload flow instead: `PUT /api/v3/customisers/{customiser_id}/labels/product-image` sets the product image and `DELETE` on the same address clears it. The other two lists have no write yet. The other three read-only properties are the list labels: `highlights` (up to three short strings) and `qualities` and `custom_design_steps` (lists of `header`/`description` pairs). A list label's membership is shared between the customiser's stored labels and its default-language copy, and the two disagree about who owns it, so a patch that shortened a list would be undone before you could read it back. Rather than publish an operation whose effect it cannot state, this version refuses the write. Edit the five without a write in the merchant admin. The operation is read-only, has no side effects, and is always safe to retry. Requires the `customisers:read` scope. A 404 problem with code `resource_not_found` means the customiser does not exist on the store your API key belongs to. A 401 problem means the key is missing, invalid, or expired; a 403 problem with code `insufficient_scope` means the key lacks `customisers:read`; a 429 problem means too many requests — wait `retry_after` seconds, then retry. Error responses use RFC 9457 problem+json with a machine-readable `code` and a `request_id` to quote when contacting support.

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.

Get customiser labels

Click Send to see the live response.

Overview

A handful are section switches (show_contact_section, show_inclusion_section, show_review_section and friends), which turn a block of the storefront on rather than word it, and custom_design_type is the one closed set: none, link, form, or live. The values are the effective copy the storefront renders: your saved copy for a text label you have worded, and the built-in default for one you have not worded or have cleared with null. A text label reads back as null only when it has no built-in default. A read is therefore a description of the storefront rather than a patch body — echo one back and you would store every built-in default as an explicit override of your own, and its read-only properties would be refused besides. Send only the labels you are changing, which is what a merge patch is for. Six properties are read-only on the merge patch. Three carry uploaded files: product_image_url, background_images (each with its name, image_url, the width_cm/height_cm the photograph depicts, the sign_area box where the shopper's sign may appear, the linked_size_ids and is_default_background that link it to sizes, and a mobile version with the same fields for the preview on narrow screens, or null) and additional_information (reinsurance cards, each with header, description, and image_url). A *_url string is a description of a stored file rather than a shape you could send back, so files move through the staged-upload flow instead: PUT/api/v3/customisers/{customiser_id}/labels/product-image sets the product image and DELETE on the same address clears it. The other two lists have no write yet. The other three read-only properties are the list labels: highlights (up to three short strings) and qualities and custom_design_steps (lists of header/description pairs). A list label's membership is shared between the customiser's stored labels and its default-language copy, and the two disagree about who owns it, so a patch that shortened a list would be undone before you could read it back. Rather than publish an operation whose effect it cannot state, this version refuses the write. Edit the five without a write in the merchant admin. The operation is read-only, has no side effects, and is always safe to retry. Requires the customisers:read scope. A 404 problem with code resource_not_found means the customiser does not exist on the store your API key belongs to. A 401 problem means the key is missing, invalid, or expired; a 403 problem with code insufficient_scope means the key lacks customisers:read; a 429 problem means too many requests — wait retry_after seconds, then retry. Error responses use RFC 9457 problem+json with a machine-readable code and a request_id to quote when contacting support.

Authorisation

Bearer token required. Include it in the Authorization header.

Required scope: customisers:read

Path parameters

customiser_idstringpathrequired

The customiser id, from the list customisers operation.

Example: 1

Get customiser labels
curl https://web.signcustomiser.com/api/v3/customisers/1/labels \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN'
Response
{
  "data": {
    "object": "customiser_labels",
    "customiser_id": 42,
    "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_link": null,
    "custom_design_steps": [
      {
        "header": "How it works",
        "description": "Send us your artwork."
      }
    ],
    "custom_design_steps_header": "How it works",
    "custom_design_tab_title": "Custom",
    "custom_design_type": "form",
    "custom_form_header": null,
    "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",
    "highlights": [
      "Handmade",
      "12-month warranty",
      "Free shipping"
    ],
    "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_button_link": null,
    "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": "How it works",
        "description": "Send us your artwork."
      }
    ],
    "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",
    "default_background_width_in": 118.1102362,
    "default_background_height_in": 118.1102362,
    "authored_units": {
      "default_background_width_cm": "centimetres",
      "default_background_height_cm": "centimetres"
    },
    "additional_information": [
      {
        "header": "Free express shipping",
        "description": "Every sign ships free, worldwide.",
        "image_url": "https://cdn.signcustomiser.com/labels/shipping.png"
      }
    ],
    "background_images": [
      {
        "name": "brick-wall.jpg",
        "image_url": "https://cdn.signcustomiser.com/labels/brick-wall.jpg",
        "width_cm": 152.4,
        "height_cm": 101.6,
        "sign_area": {
          "x": 0.2,
          "y": 0.3,
          "w": 0.6,
          "h": 0.4
        },
        "linked_size_ids": [
          1201,
          1202
        ],
        "is_default_background": false,
        "mobile": {
          "image_url": "https://cdn.signcustomiser.com/labels/brick-wall-mobile.jpg",
          "width_cm": 91.4,
          "height_cm": 121.9,
          "sign_area": {
            "x": 0.1,
            "y": 0.25,
            "w": 0.8,
            "h": 0.3
          },
          "width_in": 36,
          "height_in": 48,
          "authored_units": {
            "width_cm": "inches",
            "height_cm": "inches"
          }
        },
        "width_in": 60,
        "height_in": 40,
        "authored_units": {
          "width_cm": "inches",
          "height_cm": "inches"
        }
      }
    ],
    "product_image_url": "https://cdn.signcustomiser.com/labels/product.png",
    "updated_at": "2026-05-04T09:12:31Z"
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/labels",
    "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.