> ## Documentation Index
> Fetch the complete documentation index at: https://print.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update the settings

> Changes the settings you send. Selectors are checked as CSS first; `GET /v2/product-page` shows whether they find their element on a product page. Product pages pick the change up within a few minutes. The editor in use and the settings that delete projects are read-only here; custom JS and CSS, webhook addresses and the guide book can only be set in the dashboard.



## OpenAPI

````yaml openapi.json PATCH /v2/settings
openapi: 3.1.0
info:
  title: Print.App API
  version: 2.1.0
  description: >-
    Server-to-server API for Print.App integrations: designs and their page
    content, folders, files, fonts, palettes, product assignments, projects and
    editor links. Authenticate every request with a secret key: `Authorization:
    Bearer sk_…`. Never call it from a browser.
servers:
  - url: https://api.print.app
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Account
    description: The account a secret key belongs to.
  - name: Designs
    description: >-
      The designs (templates) your customers start from: create them at a size,
      manage their pages, and place text, images and shapes on them.
  - name: Design folders
    description: >-
      Folders that organise your designs. A design can sit in more than one
      folder.
  - name: Files
    description: >-
      Your own images and graphics, used in designs and offered to customers in
      the editor.
  - name: Graphic folders
    description: >-
      Folders of files, shown in the editor under Pictures, Backgrounds,
      Textures or Frames.
  - name: Fonts
    description: >-
      The fonts your designs and customers can use: the built-in set, imported
      Google fonts and fonts you upload.
  - name: Palettes
    description: Colour palettes offered in the editor.
  - name: Products
    description: Which designs open for each product (and variant) in your store.
  - name: Projects
    description: Your customers' saved designs.
  - name: Links
    description: Shareable editor links that open a design or project at create.print.app.
  - name: Connectors
    description: >-
      Links between the options on a store's product page and the editor: the
      choice a customer makes shows the right pages, opens the right design, or
      sets the size, orientation or colour. Read a product page for what a
      connector can point at, and test one against a design before customers
      meet it.
  - name: Resource profiles
    description: >-
      Limits on the fonts, colour palettes and graphic folders the editor
      offers, for the designs that use them.
  - name: PDF profiles
    description: >-
      The settings print PDFs are made with: colour conversion, PDF standard,
      cut lines, image resolution, fonts.
  - name: Settings
    description: >-
      The account's editor and product page settings: how the editor opens and
      behaves, and the selectors Print.App uses on your product pages. Settings
      that run code in your store, send data elsewhere or delete projects are
      kept to the dashboard.
paths:
  /v2/settings:
    patch:
      tags:
        - Settings
      summary: Update the settings
      description: >-
        Changes the settings you send. Selectors are checked as CSS first; `GET
        /v2/product-page` shows whether they find their element on a product
        page. Product pages pick the change up within a few minutes. The editor
        in use and the settings that delete projects are read-only here; custom
        JS and CSS, webhook addresses and the guide book can only be set in the
        dashboard.
      operationId: updateSettings
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SettingsUpdate'
            example:
              cartButtonSelector: button[name="add"]
              displayMode: dialog
      responses:
        '200':
          description: OK.
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Settings'
              example:
                object: settings
                editor: new
                autoSaveProjects: false
                autoSaveDuration: 8
                autoExpireProjects: false
                projectLifetime: 1
                skipPreview: false
                expandThumbNav: true
                showTabTitle: true
                enableSaveLater: false
                defaultLayout: ''
                layout: ''
                displayMode: modal
                showGraphicsTitle: false
                graphicsSearchCustomers: false
                graphicsSearchScope: store
                enableColorProofing: false
                bleedLineColor: '#F3343C'
                marginLineColor: '#84cc16'
                trimLineColor: '#8b5cf6'
                foldLineColor: '#fde047'
                borderColor: '#2563eb'
                decimalPointTextSize: true
                autoPlaceNewText: true
                autoTextSize: true
                newTextSize: 40
                defaultTextType: Textbox
                defaultNewTextString: |-
                  Type into your new
                  text
                defaultNewHeadingString: Add a heading
                hoverShow: true
                enableSnapping: true
                snapRange: 5
                gridLinesInterval: 20
                bleedLineMessage: Bleed line
                marginLineMessage: Margin line
                trimLineMessage: Trim line
                retainProductImages: false
                forceCustomization: false
                disableCustomization: false
                customPreviewSelector: ''
                cartButtonSelector: ''
                customVariantSelector: ''
                inlineSelector: ''
                miniSelector: ''
                moveButtonsBefore: ''
                buttonsClass: ''
                observeFormRerenders: false
                collectionButtons: false
                sideBarColor: '#FFFFFF'
                editorTheme: system
        '400':
          description: >-
            A parameter or body field is malformed: `param` names it and
            `details` lists every problem found.
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: true
                code: invalid_request
                message: width is required.
                param: width
                requestId: FZn-uhymjoEEJow=
        '401':
          description: Missing, unknown, revoked or expired secret key.
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: true
                code: unauthorized
                message: >-
                  Missing or invalid secret key. Send it as "Authorization:
                  Bearer sk_…".
                requestId: FZn-uhymjoEEJow=
        '403':
          description: The account is suspended for an unpaid invoice.
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: true
                code: account_suspended
                message: >-
                  This account is suspended. Settle the outstanding invoice in
                  the Print.App dashboard.
                requestId: FZn-uhymjoEEJow=
        '415':
          description: The body is not JSON.
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: true
                code: unsupported_media_type
                message: >-
                  Send the request body as JSON, with "Content-Type:
                  application/json".
                requestId: FZn-uhymjoEEJow=
        '429':
          description: >-
            Rate limited by the API gateway. Back off and retry. This response
            comes from the gateway, so its body is `{ "message": "Too Many
            Requests" }`, not the standard error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GatewayError'
              example:
                message: Too Many Requests
        '500':
          description: >-
            Something failed on our side. Retry; quote the requestId to support
            if it persists.
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: true
                code: internal_error
                message: >-
                  Something went wrong on our side. Retry the request; if it
                  keeps failing, contact support with the requestId.
                requestId: FZn-uhymjoEEJow=
components:
  schemas:
    SettingsUpdate:
      title: SettingsUpdate
      description: >-
        The settings to change. Only the ones you send change. Product page
        changes reach the store within a few minutes.
      type: object
      additionalProperties: false
      minProperties: 1
      properties:
        skipPreview:
          type: boolean
          description: The Submit button skips the preview step.
        expandThumbNav:
          type: boolean
          description: Page thumbnails instead of arrows to move between pages.
        showTabTitle:
          type: boolean
          description: Labels on the editor's tabs.
        enableSaveLater:
          type: boolean
          description: >-
            Customers can save a design and finish it later. On here, it is on
            for every design.
        defaultLayout:
          type: string
          enum:
            - ''
            - default-right
          description: >-
            Classic editor only: the sidebar on the left (`""`) or the right
            (`default-right`).
        layout:
          type: string
          enum:
            - ''
            - default-right
            - product
            - steps
            - approve
          description: >-
            New editor only: the layout customers get. `""` default,
            `default-right` sidebar on the right, `product` product designer,
            `steps` one step at a time, `approve` view and approve. Designs can
            override it in the editor.
        displayMode:
          type: string
          enum:
            - modal
            - dialog
            - inline
            - mini
          description: >-
            How the editor opens on the product page: `modal` full window,
            `dialog` a dialog, `inline` inside the page at `inlineSelector`,
            `mini` beside the product images at `miniSelector`.
        showGraphicsTitle:
          type: boolean
          description: Show the titles of graphics that have one.
        graphicsSearchCustomers:
          type: boolean
          description: A search box in the Graphics panel for customers, on every design.
        graphicsSearchScope:
          type: string
          enum:
            - store
            - mine
            - both
          description: >-
            What the graphics search covers: `store` the print.app store, `mine`
            your own graphics, `both`.
        enableColorProofing:
          type: boolean
          description: >-
            A colour proof (ICC soft proof) when customers preview their
            designs, on every design.
        bleedLineColor:
          type: string
          format: color
          description: Colour of the bleed line on the canvas.
        marginLineColor:
          type: string
          format: color
          description: Colour of the safe margin line on the canvas.
        trimLineColor:
          type: string
          format: color
          description: Colour of the trim line on the canvas.
        foldLineColor:
          type: string
          format: color
          description: Colour of fold lines on the canvas.
        borderColor:
          type: string
          format: color
          description: Colour of the border around a selected item.
        decimalPointTextSize:
          type: boolean
          description: Font sizes with decimals (10.5 pt).
        autoPlaceNewText:
          type: boolean
          description: >-
            New text goes straight onto the canvas, without clicking the canvas
            first.
        autoTextSize:
          type: boolean
          description: Size new text to fit the screen.
        newTextSize:
          type: integer
          minimum: 10
          maximum: 100
          description: Size of new text, when it is not sized to fit.
        defaultTextType:
          type: string
          enum:
            - IText
            - Textbox
          description: 'What new text is: `Textbox` wrapping text box, `IText` a text area.'
        defaultNewTextString:
          type: string
          maxLength: 500
          description: Content of a new body text item.
        defaultNewHeadingString:
          type: string
          maxLength: 200
          description: Content of a new heading.
        hoverShow:
          type: boolean
          description: Highlight the item under the mouse.
        enableSnapping:
          type: boolean
          description: Snap items while dragging them.
        snapRange:
          type: integer
          minimum: 3
          maximum: 20
          description: How close, in pixels, an item snaps.
        gridLinesInterval:
          type: integer
          minimum: 5
          maximum: 100
          description: Gap between grid lines.
        bleedLineMessage:
          type: string
          maxLength: 100
          description: Label on the bleed line.
        marginLineMessage:
          type: string
          maxLength: 100
          description: Label on the safe margin line.
        trimLineMessage:
          type: string
          maxLength: 100
          description: Label on the trim line.
        retainProductImages:
          type: boolean
          description: >-
            Keep the product photos: the customer's design does not replace them
            after saving.
        forceCustomization:
          type: boolean
          description: >-
            Customers must customize before they can add the product to the
            cart.
        disableCustomization:
          type: boolean
          description: >-
            Hide the Customize button on every product page, so no one can
            customize. Only for a store that sells without the editor for a
            while.
        customPreviewSelector:
          type: string
          maxLength: 500
          description: >-
            CSS selector for the product images the design previews replace,
            when the theme's differ from what Print.App looks for.
        cartButtonSelector:
          type: string
          maxLength: 500
          description: >-
            CSS selector for the add-to-cart button, when the theme's differs
            from what Print.App looks for.
        customVariantSelector:
          type: string
          maxLength: 500
          description: >-
            CSS selector for the field holding the chosen variant's id, when the
            theme's differs.
        inlineSelector:
          type: string
          maxLength: 500
          description: CSS selector for where the editor sits with displayMode `inline`.
        miniSelector:
          type: string
          maxLength: 500
          description: CSS selector for where the editor sits with displayMode `mini`.
        moveButtonsBefore:
          type: string
          maxLength: 500
          description: 'CSS selector: the Customize button goes just before this element.'
        buttonsClass:
          type: string
          maxLength: 200
          description: >-
            CSS classes for the Customize button, to match the theme's buttons
            (default `button`).
        observeFormRerenders:
          type: boolean
          description: >-
            Remount the editor when the product form changes, for themes that
            redraw it.
        collectionButtons:
          type: boolean
          description: >-
            Shopify: a Customize button on every customizable product in
            collection and search grids.
        sideBarColor:
          type: string
          format: color
          description: Colour of the editor's side bar.
        editorTheme:
          type: string
          enum:
            - light
            - dark
            - system
          description: 'The editor''s theme: `light`, `dark` or `system`.'
      x-notWritable:
        usePrintFxEditor: 'is read-only here: change it in the dashboard'
        autoSaveProjects: 'is read-only here: change it in the dashboard'
        autoSaveDuration: 'is read-only here: change it in the dashboard'
        autoExpireProjects: 'is read-only here: change it in the dashboard'
        projectLifetime: 'is read-only here: change it in the dashboard'
        customJs: >-
          cannot be set through the API: code there runs in every visitor's
          browser. Set it in the dashboard
        customCss: cannot be set through the API. Set it in the dashboard
        projectCreated: >-
          cannot be set through the API: a webhook address receives customers'
          projects. Set it in the dashboard
        fileUploaded: >-
          cannot be set through the API: a webhook address receives customers'
          files. Set it in the dashboard
        guideBook: cannot be set through the API. Set it in the dashboard
      examples:
        - cartButtonSelector: button[name="add"]
          displayMode: dialog
    Settings:
      title: Settings
      description: >-
        The account's editor and product page settings that the API manages.
        Settings that run code in the store (custom JS and CSS), send data
        elsewhere (webhooks) or are files are left out; manage them in the
        dashboard.
      type: object
      properties:
        object:
          type: string
          const: settings
        editor:
          type: string
          enum:
            - new
            - classic
          readOnly: true
          description: >-
            The editor the account uses. Read-only: switch editors in the
            dashboard.
        autoSaveProjects:
          type:
            - boolean
            - 'null'
          description: Projects save in the background before the customer submits.
          readOnly: true
        autoSaveDuration:
          type:
            - integer
            - 'null'
          minimum: 2
          maximum: 366
          description: >-
            Days after which an auto-saved project that was never submitted is
            deleted.
          readOnly: true
        autoExpireProjects:
          type:
            - boolean
            - 'null'
          description: Every project is deleted after projectLifetime days.
          readOnly: true
        projectLifetime:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 120
          description: Days a project is kept, when autoExpireProjects is on.
          readOnly: true
        skipPreview:
          type:
            - boolean
            - 'null'
          description: The Submit button skips the preview step.
        expandThumbNav:
          type:
            - boolean
            - 'null'
          description: Page thumbnails instead of arrows to move between pages.
        showTabTitle:
          type:
            - boolean
            - 'null'
          description: Labels on the editor's tabs.
        enableSaveLater:
          type:
            - boolean
            - 'null'
          description: >-
            Customers can save a design and finish it later. On here, it is on
            for every design.
        defaultLayout:
          type:
            - string
            - 'null'
          enum:
            - ''
            - default-right
            - null
          description: >-
            Classic editor only: the sidebar on the left (`""`) or the right
            (`default-right`).
        layout:
          type:
            - string
            - 'null'
          enum:
            - ''
            - default-right
            - product
            - steps
            - approve
            - null
          description: >-
            New editor only: the layout customers get. `""` default,
            `default-right` sidebar on the right, `product` product designer,
            `steps` one step at a time, `approve` view and approve. Designs can
            override it in the editor.
        displayMode:
          type:
            - string
            - 'null'
          enum:
            - modal
            - dialog
            - inline
            - mini
            - null
          description: >-
            How the editor opens on the product page: `modal` full window,
            `dialog` a dialog, `inline` inside the page at `inlineSelector`,
            `mini` beside the product images at `miniSelector`.
        showGraphicsTitle:
          type:
            - boolean
            - 'null'
          description: Show the titles of graphics that have one.
        graphicsSearchCustomers:
          type:
            - boolean
            - 'null'
          description: A search box in the Graphics panel for customers, on every design.
        graphicsSearchScope:
          type:
            - string
            - 'null'
          enum:
            - store
            - mine
            - both
            - null
          description: >-
            What the graphics search covers: `store` the print.app store, `mine`
            your own graphics, `both`.
        enableColorProofing:
          type:
            - boolean
            - 'null'
          description: >-
            A colour proof (ICC soft proof) when customers preview their
            designs, on every design.
        bleedLineColor:
          type:
            - string
            - 'null'
          format: color
          description: Colour of the bleed line on the canvas.
        marginLineColor:
          type:
            - string
            - 'null'
          format: color
          description: Colour of the safe margin line on the canvas.
        trimLineColor:
          type:
            - string
            - 'null'
          format: color
          description: Colour of the trim line on the canvas.
        foldLineColor:
          type:
            - string
            - 'null'
          format: color
          description: Colour of fold lines on the canvas.
        borderColor:
          type:
            - string
            - 'null'
          format: color
          description: Colour of the border around a selected item.
        decimalPointTextSize:
          type:
            - boolean
            - 'null'
          description: Font sizes with decimals (10.5 pt).
        autoPlaceNewText:
          type:
            - boolean
            - 'null'
          description: >-
            New text goes straight onto the canvas, without clicking the canvas
            first.
        autoTextSize:
          type:
            - boolean
            - 'null'
          description: Size new text to fit the screen.
        newTextSize:
          type:
            - integer
            - 'null'
          minimum: 10
          maximum: 100
          description: Size of new text, when it is not sized to fit.
        defaultTextType:
          type:
            - string
            - 'null'
          enum:
            - IText
            - Textbox
            - null
          description: 'What new text is: `Textbox` wrapping text box, `IText` a text area.'
        defaultNewTextString:
          type:
            - string
            - 'null'
          maxLength: 500
          description: Content of a new body text item.
        defaultNewHeadingString:
          type:
            - string
            - 'null'
          maxLength: 200
          description: Content of a new heading.
        hoverShow:
          type:
            - boolean
            - 'null'
          description: Highlight the item under the mouse.
        enableSnapping:
          type:
            - boolean
            - 'null'
          description: Snap items while dragging them.
        snapRange:
          type:
            - integer
            - 'null'
          minimum: 3
          maximum: 20
          description: How close, in pixels, an item snaps.
        gridLinesInterval:
          type:
            - integer
            - 'null'
          minimum: 5
          maximum: 100
          description: Gap between grid lines.
        bleedLineMessage:
          type:
            - string
            - 'null'
          maxLength: 100
          description: Label on the bleed line.
        marginLineMessage:
          type:
            - string
            - 'null'
          maxLength: 100
          description: Label on the safe margin line.
        trimLineMessage:
          type:
            - string
            - 'null'
          maxLength: 100
          description: Label on the trim line.
        retainProductImages:
          type:
            - boolean
            - 'null'
          description: >-
            Keep the product photos: the customer's design does not replace them
            after saving.
        forceCustomization:
          type:
            - boolean
            - 'null'
          description: >-
            Customers must customize before they can add the product to the
            cart.
        disableCustomization:
          type:
            - boolean
            - 'null'
          description: >-
            Hide the Customize button on every product page, so no one can
            customize. Only for a store that sells without the editor for a
            while.
        customPreviewSelector:
          type:
            - string
            - 'null'
          maxLength: 500
          description: >-
            CSS selector for the product images the design previews replace,
            when the theme's differ from what Print.App looks for.
        cartButtonSelector:
          type:
            - string
            - 'null'
          maxLength: 500
          description: >-
            CSS selector for the add-to-cart button, when the theme's differs
            from what Print.App looks for.
        customVariantSelector:
          type:
            - string
            - 'null'
          maxLength: 500
          description: >-
            CSS selector for the field holding the chosen variant's id, when the
            theme's differs.
        inlineSelector:
          type:
            - string
            - 'null'
          maxLength: 500
          description: CSS selector for where the editor sits with displayMode `inline`.
        miniSelector:
          type:
            - string
            - 'null'
          maxLength: 500
          description: CSS selector for where the editor sits with displayMode `mini`.
        moveButtonsBefore:
          type:
            - string
            - 'null'
          maxLength: 500
          description: 'CSS selector: the Customize button goes just before this element.'
        buttonsClass:
          type:
            - string
            - 'null'
          maxLength: 200
          description: >-
            CSS classes for the Customize button, to match the theme's buttons
            (default `button`).
        observeFormRerenders:
          type:
            - boolean
            - 'null'
          description: >-
            Remount the editor when the product form changes, for themes that
            redraw it.
        collectionButtons:
          type:
            - boolean
            - 'null'
          description: >-
            Shopify: a Customize button on every customizable product in
            collection and search grids.
        sideBarColor:
          type:
            - string
            - 'null'
          format: color
          description: Colour of the editor's side bar.
        editorTheme:
          type:
            - string
            - 'null'
          enum:
            - light
            - dark
            - system
            - null
          description: 'The editor''s theme: `light`, `dark` or `system`.'
      required:
        - object
        - editor
        - autoSaveProjects
        - autoSaveDuration
        - autoExpireProjects
        - projectLifetime
        - skipPreview
        - expandThumbNav
        - showTabTitle
        - enableSaveLater
        - defaultLayout
        - layout
        - displayMode
        - showGraphicsTitle
        - graphicsSearchCustomers
        - graphicsSearchScope
        - enableColorProofing
        - bleedLineColor
        - marginLineColor
        - trimLineColor
        - foldLineColor
        - borderColor
        - decimalPointTextSize
        - autoPlaceNewText
        - autoTextSize
        - newTextSize
        - defaultTextType
        - defaultNewTextString
        - defaultNewHeadingString
        - hoverShow
        - enableSnapping
        - snapRange
        - gridLinesInterval
        - bleedLineMessage
        - marginLineMessage
        - trimLineMessage
        - retainProductImages
        - forceCustomization
        - disableCustomization
        - customPreviewSelector
        - cartButtonSelector
        - customVariantSelector
        - inlineSelector
        - miniSelector
        - moveButtonsBefore
        - buttonsClass
        - observeFormRerenders
        - collectionButtons
        - sideBarColor
        - editorTheme
      examples:
        - object: settings
          editor: new
          autoSaveProjects: false
          autoSaveDuration: 8
          autoExpireProjects: false
          projectLifetime: 1
          skipPreview: false
          expandThumbNav: true
          showTabTitle: true
          enableSaveLater: false
          defaultLayout: ''
          layout: ''
          displayMode: modal
          showGraphicsTitle: false
          graphicsSearchCustomers: false
          graphicsSearchScope: store
          enableColorProofing: false
          bleedLineColor: '#F3343C'
          marginLineColor: '#84cc16'
          trimLineColor: '#8b5cf6'
          foldLineColor: '#fde047'
          borderColor: '#2563eb'
          decimalPointTextSize: true
          autoPlaceNewText: true
          autoTextSize: true
          newTextSize: 40
          defaultTextType: Textbox
          defaultNewTextString: |-
            Type into your new
            text
          defaultNewHeadingString: Add a heading
          hoverShow: true
          enableSnapping: true
          snapRange: 5
          gridLinesInterval: 20
          bleedLineMessage: Bleed line
          marginLineMessage: Margin line
          trimLineMessage: Trim line
          retainProductImages: false
          forceCustomization: false
          disableCustomization: false
          customPreviewSelector: ''
          cartButtonSelector: ''
          customVariantSelector: ''
          inlineSelector: ''
          miniSelector: ''
          moveButtonsBefore: ''
          buttonsClass: ''
          observeFormRerenders: false
          collectionButtons: false
          sideBarColor: '#FFFFFF'
          editorTheme: system
    Error:
      title: Error
      description: >-
        Every error the API itself returns. Match on `code`; `message` is for
        people and may be reworded.
      type: object
      required:
        - error
        - code
        - message
        - requestId
      properties:
        error:
          type: boolean
          const: true
        code:
          type: string
          enum:
            - unauthorized
            - account_suspended
            - invalid_request
            - not_found
            - route_not_found
            - idempotency_key_reused
            - idempotency_in_progress
            - folder_not_empty
            - builtin_folder
            - builtin_palette
            - editor_not_supported
            - design_changed
            - payload_too_large
            - unsupported_media_type
            - ops_failed
            - internal_error
            - service_unavailable
          description: >-
            `unauthorized` (401): missing, unknown, revoked or expired secret
            key. `account_suspended` (403): the account has an unpaid invoice.
            `invalid_request` (400): a parameter or body field is malformed —
            see `param` and `details`. `not_found` (404): no such resource in
            your account. `route_not_found` (404): no such endpoint.
            `idempotency_key_reused` (409): the Idempotency-Key was used for a
            different request. `idempotency_in_progress` (409): the first
            request with that key is still running. `folder_not_empty` (409):
            the folder still holds designs or folders. `builtin_folder`,
            `builtin_palette` (409): Print.App's own folders and palettes cannot
            be changed. `editor_not_supported` (409): page content can only be
            edited on accounts that use the new editor. `design_changed` (409):
            the design was saved elsewhere while the batch ran; read it again
            and retry. `payload_too_large` (413): a body or file over the limit.
            `unsupported_media_type` (415): send JSON. `ops_failed` (422): an
            operation in the batch failed, nothing was saved — see `details`.
            `internal_error` (500): retry; contact support with the `requestId`
            if it persists. `service_unavailable` (503): retry in a few seconds.
        message:
          type: string
        param:
          type: string
          description: The parameter or body field at fault, as a path (`pages[0].title`).
        details:
          type: array
          description: >-
            Every problem found, when there was more than one
            (`invalid_request`), or each operation's result (`ops_failed`).
          items:
            type: object
        requestId:
          type: string
          description: >-
            Also sent as the `x-request-id` header. Quote it when contacting
            support.
      examples:
        - error: true
          code: invalid_request
          message: limit must be an integer from 1 to 100.
          param: limit
          requestId: FZn-uhymjoEEJow=
    GatewayError:
      type: object
      properties:
        message:
          type: string
      description: Returned by the API gateway itself (429).
  headers:
    RequestId:
      description: Identifies the request. Quote it when contacting support.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        A secret key from Print.App admin → Domains → Secret keys, sent as
        `Authorization: Bearer sk_…`. Server-side only.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.