# PATCH Update customiser labels

Partially update the customiser's labels with a JSON Merge Patch (RFC 7396) of the document the read operation returns: the request body is a JSON object containing only the labels to change. Labels omitted from the patch are unchanged, a null value clears a label so the storefront falls back to its built-in default copy, and an empty object `{}` is a valid no-op. A label this resource does not define is refused with a JSON Pointer rather than ignored, so a typo can never silently change meaning. Requires the `customisers:write` scope. Nine properties the read publishes are read-only and are refused with their own pointer: the `object`, `customiser_id` and `updated_at` descriptors, the three file-bearing labels `product_image_url`, `background_images` and `additional_information`, and the three list labels `highlights`, `qualities` and `custom_design_steps` — the read operation explains why each group is held back. The section switches take a boolean, never null. A successful update immediately changes the storefront: the customiser's cached configuration is invalidated and translated language content is resynchronised, so a label you change is queued for retranslation into every language the customiser publishes. It never regenerates your Shopify products, product images, or product cache. Send an `Idempotency-Key` header (1-255 visible ASCII characters, e.g. a UUID) to make the write safe to retry: repeating the same key with the same body replays the original response (marked `Idempotency-Replay: true`) without executing again; the same key with a different body is a 409 problem with code `idempotency_key_conflict`. The header is optional here, as on the option families' update operations. Validation failures are 422 problems: `validation_failed` lists every field error in `errors[]` with a JSON `pointer` and, for closed-set violations, the `allowed_values`; `unknown_field` means the body names labels outside the document. A label whose current copy carries placeholder tokens (such as `{width}` or `{price}`) must keep them, or the write is refused on that label's pointer — the storefront substitutes real values into those tokens and dropping one would print the placeholder to a shopper. A 400 problem means the body is not valid JSON or the `Idempotency-Key` header is malformed. 401/403/404/429 behave as on the read operation, with `customisers:write` as the required scope.

- Source URL: https://www.signcustomiser.com/help/api/v3-patch-update-customiser-labels/
- Markdown URL: https://www.signcustomiser.com/help/api/v3-patch-update-customiser-labels.md
- Group: Customiser labels
- Method: PATCH
- Path: /api/v3/customisers/{customiser_id}/labels
- Auth: Bearer token
- Required scopes: `customisers:write`

## Path parameters

- customiser_id (string, required): The customiser id, from the list customisers operation. Example: 1

## Body parameters

- adding_to_cart (string, optional): No description provided.
- allow_custom_background (boolean, optional): No description provided.
- apply_style (string, optional): No description provided.
- aspect_ratio_warning (string, optional): No description provided.
- backboard_upload_error (string, optional): No description provided.
- backgrounds (string, optional): No description provided.
- backlight_title (string, optional): No description provided.
- border_included (string, optional): No description provided.
- bottom_side (string, optional): No description provided.
- braille_fixed_size_info_label (string, optional): No description provided.
- braille_frame_too_small_message (string, optional): No description provided.
- braille_overview_fitted_to_screen_label (string, optional): No description provided.
- braille_translation_failed_message (string, optional): No description provided.
- braille_translation_pending_message (string, optional): No description provided.
- braille_untranslatable_modal_button_label (string, optional): No description provided.
- braille_untranslatable_modal_label (string, optional): No description provided.
- cancel (string, optional): No description provided.
- char_limit_reached (string, optional): No description provided.
- character_limit_message (string, optional): No description provided.
- character_text (string, optional): No description provided.
- click_word_desktop (string, optional): No description provided.
- cm_button (string, optional): No description provided.
- colour_min_size_message (string, optional): No description provided.
- colour_title (string, optional): No description provided.
- contact_description (string, optional): No description provided.
- contact_header (string, optional): No description provided.
- copy_button (string, optional): No description provided.
- create_product_failed (string, optional): No description provided.
- creating_product (string, optional): No description provided.
- crop_confirm (string, optional): No description provided.
- crop_modal_title (string, optional): No description provided.
- crop_upload (string, optional): No description provided.
- custom_design_button_label (string, optional): No description provided.
- custom_design_form_file_label (string, optional): No description provided.
- custom_design_form_input_error (string, optional): No description provided.
- custom_design_form_message_error (string, optional): No description provided.
- custom_design_form_message_success (string, optional): No description provided.
- custom_design_form_size_error (string, optional): No description provided.
- custom_design_form_submit_message (string, optional): No description provided.
- custom_design_form_total_size_error (string, optional): No description provided.
- custom_design_steps_header (string, optional): No description provided.
- custom_design_tab_title (string, optional): No description provided.
- custom_design_type (string, optional): No description provided.
- custom_sizing_message (string, optional): No description provided.
- default_text (string, optional): No description provided.
- display_initial_background_image (boolean, optional): No description provided.
- display_initial_review_image (boolean, optional): No description provided.
- edit_design (string, optional): No description provided.
- editing_word (string, optional): No description provided.
- etsy_button (string, optional): No description provided.
- etsy_copied_button (string, optional): No description provided.
- etsy_copy_details_button (string, optional): No description provided.
- etsy_customisation_summary_label (string, optional): No description provided.
- etsy_download_preview_button (string, optional): No description provided.
- etsy_listing_url_missing (string, optional): No description provided.
- etsy_preparing_image (string, optional): No description provided.
- etsy_preview_error (string, optional): No description provided.
- etsy_return_button (string, optional): No description provided.
- etsy_step1 (string, optional): No description provided.
- etsy_step2 (string, optional): No description provided.
- etsy_step3 (string, optional): No description provided.
- etsy_suggested_price_label (string, optional): No description provided.
- etsy_summary_colour_label (string, optional): No description provided.
- etsy_summary_description (string, optional): No description provided.
- etsy_summary_design_label (string, optional): No description provided.
- etsy_summary_face_colour_label (string, optional): No description provided.
- etsy_summary_halo_colour_label (string, optional): No description provided.
- etsy_summary_icon_label (string, optional): No description provided.
- etsy_summary_line_label (string, optional): No description provided.
- etsy_summary_no (string, optional): No description provided.
- etsy_summary_not_selected (string, optional): No description provided.
- etsy_summary_side_colour_label (string, optional): No description provided.
- etsy_summary_title (string, optional): No description provided.
- etsy_summary_trim_colour_label (string, optional): No description provided.
- etsy_summary_tube_colour_label (string, optional): No description provided.
- etsy_summary_uploaded_design_label (string, optional): No description provided.
- etsy_summary_yes (string, optional): No description provided.
- example (string, optional): No description provided.
- extra_colour_exclusion_message (string, optional): No description provided.
- extras_title (string, optional): No description provided.
- file_label (string, optional): No description provided.
- file_upload_label (string, optional): No description provided.
- font_title (string, optional): No description provided.
- generating_image (string, optional): No description provided.
- header_text (string, optional): No description provided.
- height_input (string, optional): No description provided.
- icon_button_label (string, optional): No description provided.
- icon_title (string, optional): No description provided.
- inch_button (string, optional): No description provided.
- inclusions (string, optional): No description provided.
- inclusions_header (string, optional): No description provided.
- invalid_characters (string, optional): No description provided.
- jacket_colour_exclusion_message (string, optional): No description provided.
- jacket_title (string, optional): No description provided.
- label_under_price (string, optional): No description provided.
- left_side (string, optional): No description provided.
- letter_parts_description (string, optional): No description provided.
- letter_parts_title (string, optional): No description provided.
- lightbox_product_type_title (string, optional): No description provided.
- line_limit_reached (string, optional): No description provided.
- lines_text (string, optional): No description provided.
- loading_manual_clear_text (string, optional): No description provided.
- logo_button_text (string, optional): No description provided.
- logo_text (string, optional): No description provided.
- logo_upload_design_ready (string, optional): No description provided.
- logo_upload_failed_description (string, optional): No description provided.
- logo_upload_failed_title (string, optional): No description provided.
- logo_upload_file_too_large (string, optional): No description provided.
- logo_upload_form_description (string, optional): No description provided.
- logo_upload_form_email_placeholder (string, optional): No description provided.
- logo_upload_form_name_placeholder (string, optional): No description provided.
- logo_upload_form_submit_button (string, optional): No description provided.
- logo_upload_form_submitted_description (string, optional): No description provided.
- logo_upload_form_submitted_title (string, optional): No description provided.
- logo_upload_form_title (string, optional): No description provided.
- logo_upload_pending_description (string, optional): No description provided.
- logo_upload_pending_title (string, optional): No description provided.
- logo_upload_try_another (string, optional): No description provided.
- main_tab_title (string, optional): No description provided.
- manual_button (string, optional): No description provided.
- material_mounting_exclusion_message (string, optional): No description provided.
- material_support_exclusion_message (string, optional): No description provided.
- material_title (string, optional): No description provided.
- max_sign_char (string, optional): No description provided.
- max_sign_modal_button_label (string, optional): No description provided.
- max_sign_modal_label (string, optional): No description provided.
- min_character_message (string, optional): No description provided.
- min_height_sign_warning (string, optional): No description provided.
- mounting_colour_exclusion_message (string, optional): No description provided.
- mounting_colour_min_size_message (string, optional): No description provided.
- mounting_colour_title (string, optional): No description provided.
- mounting_letter_part_title (string, optional): No description provided.
- mounting_support_exclusion_message (string, optional): No description provided.
- mounting_title (string, optional): No description provided.
- options_tab (string, optional): No description provided.
- preview_note (string, optional): No description provided.
- price (string, optional): No description provided.
- price_after_label (string, optional): No description provided.
- price_box_text (string, optional): No description provided.
- price_button_add (string, optional): No description provided.
- price_button_finish (string, optional): No description provided.
- product_title (string, optional): No description provided.
- product_type_title (string, optional): No description provided.
- qualities_header (string, optional): No description provided.
- quote_button (string, optional): No description provided.
- recenter (string, optional): No description provided.
- recenter_warning (string, optional): No description provided.
- retry (string, optional): No description provided.
- right_side (string, optional): No description provided.
- rotation (string, optional): No description provided.
- shape_finished_size (string, optional): No description provided.
- shape_proportions_fixed_by (string, optional): No description provided.
- shape_size_adjusted_to_fixed_proportions (string, optional): No description provided.
- shape_size_adjusted_to_range (string, optional): No description provided.
- shape_sizing_empty_feasible_range (string, optional): No description provided.
- shape_sizing_invalid_canonical_bounds (string, optional): No description provided.
- shape_sizing_invalid_intent (string, optional): No description provided.
- shape_sizing_preset_requires_custom (string, optional): No description provided.
- share_design (string, optional): No description provided.
- share_design_modal_description (string, optional): No description provided.
- share_design_modal_title (string, optional): No description provided.
- show_background_preview (boolean, optional): No description provided.
- show_contact_section (boolean, optional): No description provided.
- show_custom_design (boolean, optional): No description provided.
- show_custom_design_link (boolean, optional): No description provided.
- show_inclusion_section (boolean, optional): No description provided.
- show_preview_note (boolean, optional): No description provided.
- show_review_images (boolean, optional): No description provided.
- show_review_section (boolean, optional): No description provided.
- show_styled_note (boolean, optional): No description provided.
- show_text_editor_overlay (boolean, optional): No description provided.
- sign_header (string, optional): No description provided.
- size_title (string, optional): No description provided.
- slider_button (string, optional): No description provided.
- summary_header (string, optional): No description provided.
- support_colour_min_size_message (string, optional): No description provided.
- support_colour_title (string, optional): No description provided.
- support_title (string, optional): No description provided.
- tap_word_mobile (string, optional): No description provided.
- text_align_center (string, optional): No description provided.
- text_align_left (string, optional): No description provided.
- text_align_right (string, optional): No description provided.
- text_align_title (string, optional): No description provided.
- text_button_label (string, optional): No description provided.
- text_label (string, optional): No description provided.
- text_orientation_horizontal (string, optional): No description provided.
- text_orientation_title (string, optional): No description provided.
- text_orientation_vertical_stacked (string, optional): No description provided.
- text_title (string, optional): No description provided.
- top_side (string, optional): No description provided.
- upload_background (string, optional): No description provided.
- uploading_images (string, optional): No description provided.
- user_bg_scale_cancel (string, optional): No description provided.
- user_bg_scale_continue (string, optional): No description provided.
- user_bg_scale_description (string, optional): No description provided.
- user_bg_scale_error (string, optional): No description provided.
- user_bg_scale_title (string, optional): No description provided.
- visualiser_off (string, optional): No description provided.
- visualiser_on (string, optional): No description provided.
- width_input (string, optional): No description provided.
- zoom_in (string, optional): No description provided.
- zoom_out (string, optional): No description provided.

## Request body example

```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, SVG, PDF, AI and EPS.",
  "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_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",
  "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.",
  "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_form_description": "We'll keep processing your file and send the customisable version to your email when ready.",
  "logo_upload_form_email_placeholder": "Your email",
  "logo_upload_form_name_placeholder": "Your name",
  "logo_upload_form_submit_button": "Submit Request",
  "logo_upload_form_submitted_description": "We'll process your image in the background and email you when it's ready.",
  "logo_upload_form_submitted_title": "Request Submitted!",
  "logo_upload_form_title": "Taking longer than expected?",
  "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_finish": "Finish",
  "product_title": "Custom Sign:",
  "product_type_title": "Letter Type",
  "qualities_header": "Good to know",
  "quote_button": "Finalize Quote",
  "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_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",
  "visualiser_off": "Off",
  "visualiser_on": "On",
  "width_input": "Width",
  "zoom_in": "Zoom In",
  "zoom_out": "Zoom Out"
}
```

## cURL example

```bash
curl https://web.signcustomiser.com/api/v3/customisers/1/labels \
  --request PATCH \
  --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, SVG, PDF, AI and EPS.",
  "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_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",
  "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.",
  "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_form_description": "We'"'"'ll keep processing your file and send the customisable version to your email when ready.",
  "logo_upload_form_email_placeholder": "Your email",
  "logo_upload_form_name_placeholder": "Your name",
  "logo_upload_form_submit_button": "Submit Request",
  "logo_upload_form_submitted_description": "We'"'"'ll process your image in the background and email you when it'"'"'s ready.",
  "logo_upload_form_submitted_title": "Request Submitted!",
  "logo_upload_form_title": "Taking longer than expected?",
  "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_finish": "Finish",
  "product_title": "Custom Sign:",
  "product_type_title": "Letter Type",
  "qualities_header": "Good to know",
  "quote_button": "Finalize Quote",
  "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_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",
  "visualiser_off": "Off",
  "visualiser_on": "On",
  "width_input": "Width",
  "zoom_in": "Zoom In",
  "zoom_out": "Zoom Out"
}'
```

## Response examples

### 200 Customiser labels

```json
{
  "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, SVG, PDF, AI and EPS.",
    "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_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",
    "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.",
    "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_form_description": "We'll keep processing your file and send the customisable version to your email when ready.",
    "logo_upload_form_email_placeholder": "Your email",
    "logo_upload_form_name_placeholder": "Your name",
    "logo_upload_form_submit_button": "Submit Request",
    "logo_upload_form_submitted_description": "We'll process your image in the background and email you when it's ready.",
    "logo_upload_form_submitted_title": "Request Submitted!",
    "logo_upload_form_title": "Taking longer than expected?",
    "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_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",
    "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_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",
    "visualiser_off": "Off",
    "visualiser_on": "On",
    "width_input": "Width",
    "zoom_in": "Zoom In",
    "zoom_out": "Zoom Out",
    "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
      }
    ],
    "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"
  }
}
```

### 400 Malformed JSON body

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/malformed_json",
  "title": "Malformed JSON",
  "status": 400,
  "code": "malformed_json",
  "detail": "The request body is not valid JSON: Syntax error.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 401 Missing API key

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/missing_api_key",
  "title": "Missing API key",
  "status": 401,
  "code": "missing_api_key",
  "detail": "Provide a store API key as a bearer token: Authorization: Bearer <api key>. Keys are created in the merchant admin under Integrate → API Tokens.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 403 Insufficient scope

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/insufficient_scope",
  "title": "Insufficient scope",
  "status": 403,
  "code": "insufficient_scope",
  "detail": "This operation requires the customisers:write scope, but the API key grants the following scopes: customisers:read. Create a key that includes the required scope in the merchant admin under Integrate → API Tokens.",
  "required_scopes": [
    "customisers:write"
  ],
  "granted_scopes": [
    "customisers:read"
  ],
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 404 Unknown customiser

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/resource_not_found",
  "title": "Resource not found",
  "status": 404,
  "code": "resource_not_found",
  "detail": "The requested resource does not exist or does not belong to the authenticated store.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 409 Idempotency key conflict

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/idempotency_key_conflict",
  "title": "Idempotency key conflict",
  "status": 409,
  "code": "idempotency_key_conflict",
  "detail": "This Idempotency-Key was already used for a different request body on this operation. An idempotency key identifies one exact request: retry the original body to replay its response, or send the new body with a fresh key.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 422 Validation failed

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/validation_failed",
  "title": "Validation failed",
  "status": 422,
  "code": "validation_failed",
  "detail": "The request payload failed validation. Correct the fields listed in errors and retry.",
  "errors": [
    {
      "pointer": "/custom_design_type",
      "code": "unsupported_value",
      "detail": "The selected custom design type is invalid.",
      "allowed_values": [
        "none",
        "link",
        "form",
        "live"
      ]
    }
  ],
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 422 Unknown field

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/unknown_field",
  "title": "Unknown field",
  "status": 422,
  "code": "unknown_field",
  "detail": "The request contains fields this operation does not define: /headline.",
  "errors": [
    {
      "pointer": "/headline",
      "code": "unknown_field",
      "detail": "The field \"headline\" is not supported by this operation."
    }
  ],
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 429 Rate limited

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/rate_limited",
  "title": "Too many requests",
  "status": 429,
  "code": "rate_limited",
  "detail": "You have exceeded the request limit for this API key. Wait 60 seconds, then retry.",
  "retry_after": 60,
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```
