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

# Retry failed orders in a multiswap

> Retry a failed multiswap bundle. Only possible while the orders are within 30 minutes
of creation (deposit addresses still valid) — the existing UserOp is reset to PENDING and
`txData` (same shape as POST multi/{multiId}/tx/build) is returned so the frontend can
re-sign and submit immediately.

After 30 minutes, or for REFUNDED orders, this returns 400 — use POST /multi/recovery
to withdraw the stuck funds instead.



## OpenAPI

````yaml https://api-partner.houdiniswap.com/v2/openapi.json post /exchanges/multi/{multiId}/retry
openapi: 3.0.0
info:
  title: houdiniswap-backend
  version: 2.1.2
  description: Houdiniswap Backend
  license:
    name: ISC
  contact: {}
servers:
  - url: https://api-partner.houdiniswap.com/v2
security: []
paths:
  /exchanges/multi/{multiId}/retry:
    post:
      tags:
        - Exchanges
      summary: Retry failed orders in a multiswap
      description: >-
        Retry a failed multiswap bundle. Only possible while the orders are
        within 30 minutes

        of creation (deposit addresses still valid) — the existing UserOp is
        reset to PENDING and

        `txData` (same shape as POST multi/{multiId}/tx/build) is returned so
        the frontend can

        re-sign and submit immediately.


        After 30 minutes, or for REFUNDED orders, this returns 400 — use POST
        /multi/recovery

        to withdraw the stuck funds instead.
      operationId: RetryFailedOrders
      parameters:
        - in: path
          name: multiId
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetryFailedOrdersRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetryResult'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKey: []
components:
  schemas:
    RetryFailedOrdersRequest:
      description: Request body for POST /exchanges/multi/{multiId}/retry
      properties:
        houdiniIds:
          items:
            type: string
          type: array
          description: Optional subset of orders to retry; defaults to all retryable orders
          maxItems: 50
      type: object
      additionalProperties: false
    RetryResult:
      properties:
        txData:
          $ref: '#/components/schemas/MultiExchangeTxResult'
          description: >-
            Rebuilt transaction data for the failed bundle — ready to sign and
            submit immediately
      required:
        - txData
      type: object
      additionalProperties: false
    ErrorResponse:
      properties:
        message:
          type: string
        code:
          type: string
        requestId:
          type: string
      required:
        - message
        - code
      type: object
      additionalProperties: false
    ValidationError:
      properties:
        message:
          type: string
        code:
          type: string
        requestId:
          type: string
        fields:
          $ref: '#/components/schemas/FieldErrors'
      required:
        - message
        - code
        - fields
      type: object
      additionalProperties: false
    MultiExchangeTxResult:
      properties:
        multiId:
          type: string
        chain:
          type: string
          description: Chain kind of the from token (e.g. "solana", "evm")
        transactions:
          items:
            $ref: '#/components/schemas/TxBatch'
          type: array
        depositNeeded:
          type: string
          description: >-
            How much more native ETH (wei) the SA needs before submission; "0"
            means already funded
        saCurrentBalance:
          type: string
          description: Current SA native balance in wei
      required:
        - multiId
        - chain
        - transactions
      type: object
      additionalProperties: false
    FieldErrors:
      properties: {}
      type: object
      additionalProperties:
        properties:
          value: {}
          message:
            type: string
        required:
          - message
        type: object
    TxBatch:
      properties:
        houdiniIds:
          items:
            type: string
          type: array
          description: HoudiniIds of the orders included in this batch
        txData:
          anyOf:
            - $ref: '#/components/schemas/EvmBatchTxSlimData'
            - $ref: '#/components/schemas/BatchTxData'
          description: Network-specific transaction data ready to broadcast
      required:
        - houdiniIds
        - txData
      type: object
      additionalProperties: false
    EvmBatchTxSlimData:
      description: >-
        Slim response returned to the frontend — backend stores the full userOp
        in DB
      properties:
        userOpHash:
          type: string
        to:
          type: string
        data:
          type: string
        value:
          type: string
        chainId:
          type: number
          format: double
        tokenAmount:
          type: string
      required:
        - userOpHash
        - to
        - data
        - value
        - chainId
        - tokenAmount
      type: object
      additionalProperties: false
    BatchTxData:
      anyOf:
        - $ref: '#/components/schemas/SolanaBatchTxData'
        - $ref: '#/components/schemas/EvmBatchTxData'
      description: Union — add new network types here as they are supported
    SolanaBatchTxData:
      properties:
        data:
          type: string
          description: Serialized transaction bytes (base64)
      required:
        - data
      type: object
      additionalProperties: false
    EvmBatchTxData:
      properties:
        userOp:
          $ref: '#/components/schemas/EvmUserOp'
        userOpHash:
          type: string
        chainId:
          type: number
          format: double
        entryPoint:
          type: string
        to:
          type: string
        smartAccountAddress:
          type: string
        gasEstimate:
          $ref: '#/components/schemas/EvmGasEstimate'
        data:
          type: string
        value:
          type: string
        tokenAmount:
          type: string
      required:
        - userOp
        - userOpHash
        - chainId
        - entryPoint
        - to
        - smartAccountAddress
        - gasEstimate
        - data
        - value
        - tokenAmount
      type: object
      additionalProperties: false
    EvmUserOp:
      description: >-
        EntryPoint v0.7 unpacked UserOp. User pays gas from Smart Account
        balance — no paymaster.
      properties:
        sender:
          type: string
        nonce:
          type: string
        factory:
          type: string
        factoryData:
          type: string
        callData:
          type: string
        callGasLimit:
          type: string
        verificationGasLimit:
          type: string
        preVerificationGas:
          type: string
        maxFeePerGas:
          type: string
        maxPriorityFeePerGas:
          type: string
        signature:
          type: string
        paymaster:
          type: string
        paymasterData:
          type: string
        paymasterVerificationGasLimit:
          type: string
        paymasterPostOpGasLimit:
          type: string
      required:
        - sender
        - nonce
        - callData
        - callGasLimit
        - verificationGasLimit
        - preVerificationGas
        - maxFeePerGas
        - maxPriorityFeePerGas
        - signature
      type: object
      additionalProperties: false
    EvmGasEstimate:
      properties:
        gasCostWei:
          type: string
        gasCostNative:
          type: string
        nativeSymbol:
          type: string
        totalTransferAmountWei:
          type: string
        requiredSmartAccountBalanceWei:
          type: string
      required:
        - gasCostWei
        - gasCostNative
        - nativeSymbol
        - totalTransferAmountWei
        - requiredSmartAccountBalanceWei
      type: object
      additionalProperties: false
  securitySchemes:
    apiKey:
      type: apiKey
      name: Authorization
      in: header

````