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

# Duplicate checkout experience

> Copy a checkout experience, including its settings and shipping methods.
The copy's shipping methods get new IDs, and the copy is not live until the
store's checkout tree routes shoppers to it.

Requires the [`checkout_write`](/docs/api-reference/scopes) scope.




## OpenAPI

````yaml /api-schema/openapi.yaml post /stores/{storeId}/checkout-experiences/{checkoutExperienceId}/duplicate
openapi: 3.1.0
info:
  contact:
    email: engineering-admin@getredo.com
    name: Redo Engineering
  description: |
    ## Endpoints

    Endpoints are authenticated using the Bearer authorization scheme, using the
    REDO_API_SECRET.

    ```txt
    GET /v2.2/resource HTTP/1.1
    Authorization: Bearer 77bb7598b7a972475cc7c7e171ec33af
    Host: api.getredo.com
    ```

    ## Webhooks

    Webhooks are authenticated using the Bearer authorization scheme, using
    a secret supplied by the subscriber.

    ```txt
    POST /events HTTP/1.1
    Authorization: Bearer subscriberauth123
    Host: subscriber.example.com
    ```

    Webhook events are delivered in order for each individual subject (e.g.
    return).

    If the response is not a 2xx status code, the event will be retried multiple
    times before discarding it.
  title: Redo API
  version: 2.2.1
servers:
  - url: https://api.getredo.com/v2.2
security: []
tags:
  - description: >-
      Group several products under one product shoppers buy, so a returned
      bundle can be broken back into the products it contains.
    name: Bundles
  - name: Checkout Buttons
  - description: >-
      Manage the shipping methods shown at checkout. A checkout experience is a
      named group of shipping methods; the store's checkout tree decides which
      shoppers see which experience.
    name: Checkout Experiences
  - name: Coverage Info
  - name: Coverage Products
  - name: Custom Events
  - name: Customer Portal
  - name: Customer Subscriptions
  - name: Customers
  - name: Inbound Shipments
  - name: Inventory Items
  - name: Inventory Levels
  - name: Invoices
  - name: Merchant Admin
  - name: Orders
  - name: Products
  - name: Returns
  - description: >-
      Push orders into Redo from a commerce platform Redo does not support
      directly, so shoppers can return them.
    name: Returns Custom Integration
  - name: Storefront
  - name: Webhooks
paths:
  /stores/{storeId}/checkout-experiences/{checkoutExperienceId}/duplicate:
    summary: Checkout Experience Duplicate
    parameters:
      - $ref: '#/components/parameters/store-id.param'
      - $ref: '#/components/parameters/checkout-experience-id.param'
    post:
      tags:
        - Checkout Experiences
      summary: Duplicate checkout experience
      description: >
        Copy a checkout experience, including its settings and shipping methods.

        The copy's shipping methods get new IDs, and the copy is not live until
        the

        store's checkout tree routes shoppers to it.


        Requires the [`checkout_write`](/docs/api-reference/scopes) scope.
      operationId: Checkout experience duplicate
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/checkout-experience-write-response.schema'
              examples:
                copied:
                  summary: The copy's ID
                  value:
                    checkoutExperienceId: 66b2f1c9e4b0a1d2c3f4a5d2
          description: The copy was created. `checkoutExperienceId` is the copy's ID.
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/error.schema'
          description: >-
            No checkout experience with this ID exists for the store. Returned
            with type `com.getredo.api:checkout/not-found`.
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/error.schema'
          description: Error
      security:
        - Bearer: []
components:
  parameters:
    store-id.param:
      description: Store ID
      in: path
      name: storeId
      required: true
      schema:
        example: 64e5a8a1af49a89df37e4ee7
        type: string
    checkout-experience-id.param:
      description: Checkout experience ID.
      in: path
      name: checkoutExperienceId
      required: true
      schema:
        example: 66b2f1c9e4b0a1d2c3f4a5b6
        type: string
  schemas:
    checkout-experience-write-response.schema:
      properties:
        checkoutExperienceId:
          description: >-
            The checkout experience that was written. Read it back with `GET
            /stores/{storeId}/checkout-experiences/{checkoutExperienceId}`.
          example: 66b2f1c9e4b0a1d2c3f4a5b6
          type: string
      required:
        - checkoutExperienceId
      title: Checkout experience write result
      type: object
    error.schema:
      description: >-
        Problem details. See [RFC 7807 Section
        3](https://datatracker.ietf.org/doc/html/rfc7807#section-3).
      properties:
        detail:
          description: Human-readable description of the problem.
          title: Detail
          type: string
        instance:
          description: A URI reference that identifies this problem.
          format: uri-reference
          type: string
        title:
          description: Human-readable summary of the problem type.
          title: Title
          type: string
        type:
          default: about:blank
          description: A URI reference that identifies the problem type.
          format: uri-reference
          type: string
      title: Problem details
      type: object
  securitySchemes:
    Bearer:
      scheme: bearer
      type: http

````